问题标签 [freecad]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
253 浏览

3ds - 如何解决将 .3ds 文件转换为 .stl 时出错

我正在开发一个将各种文件格式转换为 .stl 的项目。我已成功将 .step、.igs、.dae 和 .obj 文件转换为 .stl。每当我尝试将 .3ds 文件转换为 .stl 时,都会收到以下错误:

回溯(最后一次调用):文件“3DFileFormatConversion.py”,第 141 行,在 import3DS.open(INPUT) 文件“/usr/share/freecad/Mod/Arch/import3DS.py”,第 59 行,打开读取(文件名)文件“/usr/share/freecad/Mod/Arch/import3DS.py”,第 92 行,读取 j,d_nobj in enumerate(dom.mdata.objects):

AttributeError:“UnknownChunk”对象没有属性“mdata”

我用于此转换的代码如下:

我在 import3Ds.open(INPUT) 命令中遇到错误,其中 INPUT 是输入文件名。奇怪的是,这段代码在 Windows 平台上执行得非常好。但是,当我尝试在 Ubuntu 18.04 上运行它时,它给了我上面提到的错误。有人可以指出这里发生了什么吗?

import3DS 库的代码参考可以在这里找到

0 投票
1 回答
52 浏览

3d-modelling - 3d 建模 - 如何制作复杂的 3d 模型?

所以,我正在尝试创建弓(和箭)的 3d 模型。我有一些制作 3d 模型的经验,但没有这么复杂。我已经创建了它的 2d 草图,然后将其挤压成 3d,但我不知道如何将边缘弄圆以使弓形变圆形而不是方形。我尝试过 freeCAD,但圆角会导致零件失效,而且我没有找到不花费我一条胳膊和一条腿的好替代品。

我完全错了吗?寻找一些指导或推荐的参考资料。请原谅我在提出这个问题时可能会在这里展示的主题的任何无知。

0 投票
1 回答
87 浏览

step - OpenCascade 打开后是否保留对步骤文件中顶点行号的引用?

我正在使用 FreeCAD 分析 STEP 文件。我知道 FreeCAD 使用 OpenCascade 打开 STEP 文件。现在我想知道特定顶点的步骤文件中的行号是什么,以便我可以将此信息传递给另一个程序。在 OpenCascade 环境中加载 Vertex 后,有没有办法提取行号信息?

我已阅读此页面:https ://www.opencascade.com/doc/occt-7.0.0/overview/html/occt_user_guides__step.html但我找不到所需的信息。

我需要一个看起来像这样的属性:

0 投票
1 回答
153 浏览

python - Matlab-python-freecad 接口问题:Matlab 在 system() 调用期间抛出错误,而终端对于相同的调用没有此类错误

我想要一个对象,由现有的 MATLAB 脚本生成,在 FreeCAD 中建模。介绍的重要内容见粗体标题,Matlab 代码,python 代码,通过终端测试,Matlab 错误,注释(操作系统,版本)

介绍

我已经解决了这个过程的每一方面,但是我在通过 MATLAB 调用 python 脚本时遇到了问题。

我既有对象构造函数,又有一个在 FreeCAD 中构建东西的脚本;所以本质上,我有任何一端。我现在需要的是连接它们。

我的测试是基本的,但应该已经足够了,或者我假设。

MATLAB:

Python:

所以,基本上应该发生的是我应该在 MATLAB 中打印出文件名的定义。在这种情况下,我应该看到'atestname'

测试

如果我通过终端调用它:

我得到:

这完全符合预期。我的 MATLAB 也不能这样说

MATLAB 错误

我还尝试通过 bash 脚本从 MATLAB 执行 python 脚本。同样的错误。

让我感到困惑的是:为什么某些通过终端完美执行的命令在通过 MATLAB 调用时会失败?我觉得我误解了 MATLAB 系统调用的执行方式。我假设调用是发送到操作系统本身并由操作系统本身处理的。但是在这种情况下,出错是没有意义的。MATLAB 是否对其正在处理的文件进行一些解释?

笔记

  • 操作系统:Ubuntu 16.04
  • MATLAB 2018b
  • Python 2.7 -> 这可能是问题吗?Python 2 似乎是我的特定 FreeCAD 安装的默认语言。
  • 自由CAD 0.18.1

编辑

经过我和我的主管多次搜索,这似乎可以归结为二进制文件之间的冲突。

MATLAB在/bin/glnxa64/和另一个工具箱文件夹中定义了libxerces-c.so文件。

这些可能与 linux 二进制文件/usr/lib/x86_64-linux-gnu/libxerces-c.so冲突, 因此当通过 matlab 调用终端时,它使用 matlab 二进制文件而不是系统二进制文件。

我将继续进一步调查。

0 投票
1 回答
220 浏览

python - 如何使用 GMSH 或类似工具从 .step 文件中自动生成网格?

我需要为随机生成的悬臂梁生成模拟数据,并在给定负载的情况下保存它们的最大偏转,和/或执行频率响应分析。为此,需要将主体网格化为 FEM 网格。因此,我想编写一个脚本,从该单体 .step 文件生成网格文件 (.msh)。

所需管道:输入:具有任意横截面的悬臂梁的单体 .step 文件输出:网格体的 .msh 文件

0 投票
1 回答
587 浏览

step - 调用 Transfer() 时 Opencascade 崩溃

我测试了两种情况:

我使用 STEPCAFControl_Reader 然后 STEPControl_Reader 来读取我的步骤文件,但是当我调用 STEPCAFControl_Reader::Transfer 时,这两种方法都会崩溃,分别是 STEPControl_Reader::TransferRoots。

通过使用 STEPControl_Reader,我在控制台上显示了一个日志,然后出现如下消息:

1 F:(BOUNDED_SURFACE,B_SPLINE_SURFACE,B_SPLINE_SURFACE_WITH_KNOTS,GEOMETRIC_REPRESENTATION_ITEM,RATIONAL_B_SPLINE_SURFACE,REPRESENTATION_ITEM,SURFACE):representation_item 的参数计数不是 1

编辑:

TransferRoots() 方法中有一个空引用。

我的应用程序和 FreeCAD 崩溃,但如果我使用 OCC 官方查看器的 CAD Assitant,它会加载。

0 投票
0 回答
256 浏览

python - 是否有使用相应的脚本 Python 自动旋转 .STEP 文件的解决方案?

我想获得 X、Y、Z 轴上的旋转和FreeCAD 上 .STEP 对象的位置,并使用 FreeCAD的 Python 脚本 在对象的每个位置获取屏幕截图。

我看到我们可以手动完成(我是 FreeCAD 的真正初学者),但这不是我想要的。

所以我尝试了这个,但这似乎不是一个好的解决方案:

正如我所说,我想获取对象在 X、Y 和 Z 上的所有旋转以及它的位置的屏幕截图。

有人可以帮助我吗?

谢谢

0 投票
0 回答
596 浏览

python - 如何在 FreeCAD 中解决 GMSH 和 Calculix GUI 以使用宏自动进行有限元分析?

我在 FreeCAD 中创建了一个宏(python 脚本),它生成悬臂梁、创建分析、选择材料并将约束应用于主体。

现在如何扩展脚本,以便生成网格(使用 GMSH)并在同一个脚本中使用 Calculix 运行分析?

请看下面我的代码:

当我运行我的代码时,我得到了应用约束和材料选择的完整设置分析。FreeCAD 向我展示了“Gmsh 的 FEM 网格”视图,我可以在其中选择参数并按下按钮来生成网格文件。我想在代码中按下那个按钮。

同样,我可以双击我的 Calculix Solver 并获得“机械分析”视图,它允许我选择分析类型、生成 .inp 文件并运行分析。如何在代码中执行这些步骤。

我愿意从我的 python 文件中调用其他用其他语言编写的脚本文件。但我需要它是可自动化的,因为我可以在 for 循环中运行各种分析。

0 投票
2 回答
1013 浏览

python - 仅在一个 conda 虚拟环境的系统路径中包含 FreeCAD

我希望能够将 FreeCAD 导入到我的 python 脚本中,但只能在一个 conda 虚拟环境中。有没有办法在不将 FreeCAD 添加到每个文件开头的路径的情况下做到这一点?我正在使用 Pop!_OS,它的行为应该像这里的 Ubuntu。

我已经发现您可以导入 FreeCAD,但我找到的源代码是通过在文件开头附加 FreeCAD 库位置来实现的:https ://www.freecadweb.org/wiki/Embedding_FreeCAD 。看起来您可以通过修改路径变量来规避这个问题,而且我能够在工作场所的 Windows 上这样做。我只想为特定的 conda 虚拟环境执行此操作。

理想情况下,

将在特殊的虚拟环境中工作,但不能在其他环境中工作。

如前所述,通过将 FreeCAD 的目录添加到 PATH 环境变量中,我已经让 import 语句在 Windows 上工作。它与命令提示符下的默认 python 一起使用,它应该是 anaconda 安装,所以我认为它适用于所有虚拟环境。但是,在 Linux 上,即使我使用了,我也无法在 python 中导入 FreeCAD

我从 "locate FreeCAD.so" 得到的。我明白了

如果能够在两个操作系统上运行相同的代码,并且将 PATH 修改限制在一个虚拟环境中,那就太好了。

0 投票
1 回答
235 浏览

fonts - 将字体转换为多边形

我正在使用 CAD 软件(特别是 FreeCAD,但这应该与系统无关),并且我想将 2D 字符绘制为多边形 - 而不是笔画。例如,字母“O”可能由两个同心圆组成。有没有办法直接从 .tff 文件生成这样的多边形?

(是的,FreeCAD 确实支持文本,但我希望能够在不使用文本功能的情况下直接与多边形交互。这将使系统在某些其他程序之间更具可移植性。)

看起来您可以通过在矢量图形程序(如inkscape)中编写文本来做到这一点。但这会很痛苦:我必须安装字体,写下每个字母,然后手动提取多边形。

我也试过这个 webapp。它可以给我 .svg 文件,但我仍然找不到将它们解析为多边形的系统方法。

我的目标是有一个函数,它接受一个字母和一个比例并输出一个多边形或多边形列表来描述那个字母。

例如在python中:

主要是从现有字体中获取多边形。