注意-我不在FreeCAD的python控制台中运行脚本。这全部在安装了FreeCAD的Docker容器中的python脚本中。

我正在尝试在python脚本中运行由FreeCAD生成的页面的SVG。我对形状没有意见,但无法弄清楚如何添加尺寸并将其保存到SVG。据我所知,有两种选择非常接近...


使用较旧的绘图模块(和drawing_dimensioning):


我可以使用我的形状的视图制作页面的SVG,但不能添加尺寸。如果我使用完整的GUI FreeCAD,则drawing_dimensioning模块是完美的。我似乎无法从python脚本使用此模块。导入时,出现以下错误:

  File "/usr/lib/freecad/Mod/drawingDimensioning/core.py", line 184, in <module>
FreeCADGui.addCommand('dd_help', helpCommand())
AttributeError: 'module' object has no attribute 'addCommand'


我已经尝试了许多针对此错误的修复程序,但找不到任何有效的解决方案。这与将FreeCADGui作为依赖项的drawingDimensioning有关吗?是FreeCADGui缺少addCommand()吗?如果您知道其他方法,请发表评论。


较新的TechDraw模块:


据我所知,这是可行的(尽管功能少于drawing_dimensioning)。但是我不能从命令行使用模块TechDrawGui。将TechDraw页面保存到SVG时需要TechDrawGui模块。我在执行此操作时收到此错误:

  File "/app/main_process.py", line 14, in <module>
import Part, Drawing, FreeCADGui, TechDrawGui
ImportError: Cannot load Gui module in console application.


但是我可以导入FreeCADGui模块而不会出现任何问题。导入和使用TechDraw模块似乎也不错。

谢谢阅读。如果您认为自己有一种在页面上创建尺寸并将其全部保存为SVG的方法,请告诉我!

最佳答案

你是对的。在泊坞窗容器中运行FreeCAD(或在没有GUI的情况下编译)时,需要GUI才能执行的工作台的许多功能将不可用。但是,您可以通过深入研究FreeCAD代码库来解决它们,在https://www.freecadweb.org/tracker/my_view_page.php处创建问题,或者使用FreeCAD的核心功能解决问题。

关于您的问题,我有一个解决方案:https://gist.github.com/amrit3701/8f67c8ea06c74a64bca08a0a48560556

上面的示例创建一个具有其尺寸的多维数据集的SVG文件。为了创建尺寸,我使用了Draft.makeDimension函数,并且为了生成零件对象(即多维数据集)的视图(SVG内容),我使用了Drawing::FeatureViewPart对象。

在上述链接中运行main.py后输出SVG文件
ouput.svg

关于python - 从python脚本运行FreeCAD模块drawing_dimensioning或TechDrawGui,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53798769/

10-12 07:31