问题标签 [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 投票
0 回答
42 浏览

python - 在脚本错误的末尾给出总金额

背景:我正在为 FreeCAD 编写一个宏 python 脚本。此代码打开一个对话框,提供有关草图几何形状的信息,例如惯性矩阵和面积。

我的问题:我正在尝试获取脚本末尾的总面积。目前,它给出了每个几何图形的结果,这没问题,但我希望在我的宏脚本对话框中有一个完整的部分。

我已经尝试过:我尝试为每个几何图形创建一个 for 循环,以计算面积并将其存储为变量。我也试图把它放在已经存在的 for 循环中。我最终遇到了语法错误。

https://i.stack.imgur.com/ngRdu.png

0 投票
2 回答
739 浏览

python - 查找 .stl(CAD 绘图)文件和 3D 图(matplotlib)之间的交点?

我试图找到 3d 对象 .stl 文件(我使用 numpy-stl 导入到 python)和 3d 绘图(我使用 matplotlib 生成)之间的交点。3d 对象是 cad 绘图,3d 绘图是 3d 中的一堆曲线。我可以将它们绘制在同一个图上,但我不知道如何找到轨迹和绘图之间的交点。我的想法是在绘制曲线后使用 numpy-stl 模块中的 save() 函数将曲线转换为 .stl,并将它们一起显示在像 freeCAD 这样的 cad 应用程序上,并使用应用程序的功能找到交点。但它并不那么简单,因为这些图是基于点的,而 .stl 是基于三角形的。如果有人对如何解决这个问题有任何建议,请告诉我!!

这是绘制 .stl 对象和 3d 绘图的代码。这就是我到目前为止所拥有的。

1个想法:有没有办法将.stl对象转换为一组平面函数?如果是这样,我可以将绘图变成线并找到平面和线之间的交点?

第二个想法:或者,因为 .stl 是基于矢量的,我可以使用矢量计算?即查看曲线(线段)上的向量是否与 .stl 对象上的三角形有共同点(三角形由三个向量定义)。

请给我任何你可能有的想法!太感谢了。

0 投票
1 回答
224 浏览

python - 单击后 QPushButton 不执行任何操作

我是 Qt 和 Python PySide 的初学者,我面临一个我不知道如何解决的问题。我正在使用 FreeCAD,我尝试设计一个带有按钮的简单窗口,但我无法让它们工作。当我点击它们时,它们的文本应该会改变,但什么也没有发生。这是我的一段代码:

我的窗口是根据使用 Qt Creator 完成的 UI 文件创建的。窗口的设计也是正确的,例如,我可以将项目添加到列表小部件,但单击时按钮未激活。

这是一个 UI 文件示例:

0 投票
0 回答
1047 浏览

macos - 在 macOS 上找不到 Boost(缺少:python)

错误信息:

我已经尝试了在这里找到的所有东西,但没有任何效果。

这是我所做的:

  1. 首先,我通过 brew install 安装了 boost、boost_python 和 boost_python3。
    但是,我注意到在 boost dir 中有“include”和“lib”目录,但 boost_python 和 boost_python3 中只有“lib”,我不明白。

  2. 运行 cmake 如下:

    CC=/usr/bin/gcc CXX=/usr/bin/g++ cmake
    -DCMAKE_BUILD_TYPE="Release"
    -DBUILD_QT5=1
    -DCMAKE_PREFIX_PATH="/usr/local/Cellar/qt/5.13.1/lib/cmake"
    -DFREECAD_USE_EXTERNAL_KDL =1
    -DBUILD_FEM_NETGEN=1
    -DFREECAD_CREATE_MAC_APP=1
    -DCMAKE_INSTALL_PREFIX="./.."
    -DPYTHON_LIBRARY=$ANACONDA_HOME/lib/libpython3.7.so
    -DPYTHON_INCLUDE_DIR=$ANACONDA_HOME/include/python3.7
    -DPYTHON_EXECUTABLE=$ANACONDA_HOME/bin /python3.7
    -DBoost_NO_BOOST_CMAKE:BOOL=ON
    -DBoost_NO_SYSTEM_PATHS=TRUE
    -DBOOST_ROOT=/usr/local/Cellar/boost/1.71.0
    -DBOOST_LIBRARY_DIRS=/usr/local/Cellar/boost/1.71.0/lib
    -DBOOST_INCLUDE_DIR=/usr/local/Cellar/boost/1.71.0/include
    ../

但是日志说:

  • 找到 Boost:/usr/local/Cellar/boost/1.71.0/include(找到版本“1.71.0”)
  • 找到 PythonInterp:/bin/python3.7(要求至少是版本“3”)
  • 找到 PythonLibs:/lib/libpython3.7.so(要求至少是版本“3”)
  • 在 /usr/local 检测到 Homebrew 安装
  • 找到 PythonInterp:/bin/python3.7
  • 找到 PythonLibs:/Library/Developer/CommandLineTools/SDKs/MacOSX10.14.sdk/usr/lib/libpython.tbd(找到版本“2.7.10”)
  • 找到 Boost:/usr/local/Cellar/boost/1.71.0/include(找到合适的版本“1.71.0”,最低要求是“1.48”)找到组件:文件系统程序_选项 regex 系统线程 chrono date_time atomic
    - 找不到 Boost (缺少:python)(找到版本“1.71.0”)

如您所见,Boost 中除了 python 之外还有一些组件。

  1. 我试过了:

    -DBOOST_ROOT=/usr/local/Cellar/boost_python3/1.71.0_1 -DBOOST_LIBRARY_DIRS=/usr/local/Cellar/boost_python3/1.71.0_1/lib

但由于 boost_python3 中没有“包含”目录,我不知道如何编辑 BOOST_INCLUDE_DIR。因此,日志说:

找不到 Boost(缺少:Boost_INCLUDE_DIR)

请帮忙!!!!!!!我打算在我的 Mac 上编译 FreeCAD,但我被困了几天!

0 投票
1 回答
54 浏览

python - 我可以阻止 FreeCad 缓存 Python 文件吗?

我正在尝试为 FreeCad 学习 Python 脚本。

在“C:/p/Freecad/0.18/ZillmannTest”文件夹中,我有 2 个文件:

  • Macro1.py 和
  • FCadHelper.py

Macro1.py的内容如下:

我可以从 FreeCad 宏菜单启动 Macro1.py 但是当我在 FCadHelper.py 中出现错误并更正它时,FreeCad 不会加载更改后的文件 FCadHelper.py,它会继续使用该文件的旧(chached ?)版本。要使用更改后的文件,我必须终止 FreeCad 并重新启动它。这很烦人。

有没有办法阻止 FreeCad 缓存这个文件?当我计划创建一个类似文件的类库时,问题将比现在更大。

亲切的问候

0 投票
2 回答
956 浏览

python - 使用 Python 以编程方式更改 stl CAD 文件

我有许多用于 3D 打印的 stl CAD 文件,我想知道如何通过以编程方式进行简单更改来操作单个 CAD 文件。就像如果我想将 CAD 文件中所有内容的尺寸加倍,我怎么能在 python 中完成呢?如果这使事情变得更简单,我可以将其转换为 gcode。

我遇到过 FreeCad,但我不确定这是否是以编程方式更改 CAD 文件的最简单和最好的方法。我还想要一个选项,它允许除了大小之外的自由操作,也许还想看看我如何以编程方式改变 CAD 文件的形状。

0 投票
1 回答
134 浏览

python - FreeCAD 选择所有没有 Gui 的对象

我正在尝试使用带有外部 python 脚本的 FreeCAD 选择 stp 文件中的所有对象。有什么方法可以在不打开 gui 的情况下使用 freecad 外部脚本从 stp 文件中选择所有对象

0 投票
0 回答
83 浏览

django - 异常值:libFreeCADApp.so:无法打开共享对象文件:没有这样的文件或目录

我不知道如何在生产中使用外部库作为 python 模块。非常感谢您对此问题的任何帮助。

我在我的 django 应用程序中将FreeCAD作为 python 模块导入,如下所示。

视图.py

Freecad bin 和 library 文件位于根目录,其中 manage.py 文件如下所示。

![图片](/uploads/9a84bf7561f021e499ad84ba03764810/image.png)

在我的本地服务器上一切正常。我可以导入 FreeCad 并对 CAD 文件进行数据处理。但是当我在谷歌云引擎上部署应用程序时,事情就开始崩溃了。部署后它抛出了这个错误。

Exception Value: libFreeCADApp.so: cannot open shared object file: No such file or directory

我还构建了这个应用程序的 docker 镜像以确保一致的依赖关系。但相同的结果本地服务器找到 Freecad 库并运行良好,但 docker 抛出此错误。 ModuleNotFoundError: No module named 'FreeCAD'.

Docker 文件内容

要求.txt

0 投票
0 回答
174 浏览

python - FreeCAD 是如何从 python 类中继承的?

我想从 FreeCAD python 类 Vector 继承。

在下面的测试代码中,我要么使用自己的 Vector 类,要么从 FreeCAD 导入 Vector 类。它适用于我自己的 Vector 类,但打印一个零向量,然后崩溃 - 'Base.Vector' 没有属性 'extra',这意味着 ExtraVector 的构造函数已被绕过,ExtraVector 只是一个向量,当使用FreeCAD 矢量。

(我怀疑 FreeCAD 向量是 C 代码的包装器)

  1. FreeCAD 做了什么?你如何弄乱一个python类来赋予它这种行为?

  2. 我该如何解决?继承是解决我问题的最佳方法。组合意味着编写更多代码,我不喜欢 WET。

当使用我的 Vector 类(FreeCAD Vector 已注释掉)时,输出为:-

使用 FreeCAD Vector 时(我的 Vector 已注释掉),输出为:-

0 投票
1 回答
333 浏览

python - 在 python 中将 3D CAD 文件导入为 dask 数组

我正在尝试导入由TexGen在 python 中创建的 3D 文件。我想在最后有一个 dask 数组以供进一步分析。我的文件是“.igs”格式。我可以用FreeCAD打开它并以多种格式导出。我只是不知道使用哪种格式以及python中的哪个库更有帮助。

我发现了这个问题(Import CAD object in Python and store as array)并尝试在 python 中安装 FreeCAD 包,但没有成功。我遇到无法解决的冲突错误(不兼容的软件包)。

我发现了这个问题(3D CAD to OpenGL)并安装了 PyOpenGL,但我不知道如何使用 OpenGL 导入 STL 文件。

有什么建议么?