【问题标题】:Create a simple cylinder using command-line FreeCAD使用命令行 FreeCAD 创建一个简单的圆柱体
【发布时间】:2020-05-06 22:11:45
【问题描述】:

我想在 FreeCAD 中使用 python 创建一个简单的支柱并将其导出为 .stl 文件

到目前为止我做了什么?

  1. 录制了我创建圆柱体(零件)并将其导出为 stl 文件的宏。

  2. 我将宏中的文本复制并粘贴到我命名为“pillar.py”的python文件中

代码如下:

# -*- coding: utf-8 -*-

+++++++++++++++++++++++++++++++++++++++++++++++++
import FreeCAD
import Part
import Mesh


App.ActiveDocument.addObject("Part::Cylinder","Cylinder")
App.ActiveDocument.ActiveObject.Label = "Cylinder"
App.ActiveDocument.recompute()

__objs__=[]
__objs__.append(FreeCAD.getDocument("Unnamed").getObject("Cylinder"))
Mesh.export(__objs__,u"C:/Users/totyped/Desktop/pillar_2.stl")

del __objs__
+++++++++++++++++++++++++++++++++++++++++++++++++
  1. 我关闭 GUI 并打开终端,然后输入:

    "C:\Program Files\FreeCAD 0.18\bin\FreeCADCmd.exe" "C:\Users\totyped\Documents\pillar.py"

来源:https://forum.freecadweb.org/viewtopic.php?t=23869

结果:它只是在终端上显示这个,但没有创建任何 stl 文件。

它也不会给出任何警告或错误信息...

注意

所以,我注意到如果我将脚本文件放在与 FreeCADmd.exe 相同的目录中,它会起作用。为什么 ?我不知道。

编辑

所以,正如@sliptonic 所建议的,我尝试将脚本文件更改为:

import FreeCAD
import Part
import Mesh

App.newDocument("Unnamed")
App.ActiveDocument.addObject("Part::Cylinder","Cylinder")
App.ActiveDocument.ActiveObject.Label = "Cylinder"
App.ActiveDocument.recompute()

__objs__=[]
__objs__.append(FreeCAD.getDocument("Unnamed").getObject("Cylinder"))
Mesh.export(__objs__,u"pillar_2.stl")

del __objs__

但我仍然没有得到任何气缸。也许日志文件可以提供帮助? 这里是:

Msg: FreeCAD 0.18, Libs: 0.18R4 (GitTag)
(c) Juergen Riegel, Werner Mayer, Yorik van Havre 2001-2019
  #####                 ####  ###   ####  
  #                    #      # #   #   # 
  #     ##  #### ####  #     #   #  #   # 
  ####  # # #  # #  #  #     #####  #   # 
  #     #   #### ####  #    #     # #   # 
  #     #   #    #     #    #     # #   #  ##  ##  ##
  #     #   #### ####   ### #     # ####   ##  ##  ##

Log: Time = Wed Jan 22 10:17:07 2020
Log: AppDataSkipVendor = true
Log: AppHomePath = C:/Program Files/FreeCAD 0.18/
Log: AppTempPath = C:\Users\Henry\AppData\Local\Temp\
Log: BinPath = C:/Program Files/FreeCAD 0.18/bin\
Log: BuildRepositoryURL = git://github.com/FreeCAD/FreeCAD.git releases/FreeCAD-0-18
Log: BuildRevision = 4 (GitTag)
Log: BuildRevisionBranch = releases/FreeCAD-0-18
Log: BuildRevisionDate = 2019/10/22 16:53:35
Log: BuildRevisionHash = 980bf9060e28555fecd9e3462f68ca74007b70f8
Log: BuildVersionMajor = 0
Log: BuildVersionMinor = 18
Log: CopyrightInfo = (c) Juergen Riegel, Werner Mayer, Yorik van Havre 2001-2019
  #####                 ####  ###   ####  
  #                    #      # #   #   # 
  #     ##  #### ####  #     #   #  #   # 
  ####  # # #  # #  #  #     #####  #   # 
  #     #   #### ####  #    #     # #   # 
  #     #   #    #     #    #     # #   #  ##  ##  ##
  #     #   #### ####   ### #     # ####   ##  ##  ##


Log: Debug = 0
Log: DocPath = C:/Program Files/FreeCAD 0.18/doc\
Log: ExeName = FreeCAD
Log: ExeVendor = FreeCAD
Log: ExeVersion = 0.18
Log: LoggingFile = 1
Log: LoggingFileName = C:\Users\Henry\AppData\Roaming\FreeCAD\FreeCAD.log
Log: OpenFile0 = pillar.py
Log: OpenFileCount = 1
Log: PATH = C:\Program Files\FreeCAD 0.18\bin\Library\bin;C:\Users\Henry\Anaconda3;C:\Users\Henry\Anaconda3\Library\mingw-w64\bin;C:\Users\Henry\Anaconda3\Library\usr\bin;C:\Users\Henry\Anaconda3\Library\bin;C:\Users\Henry\Anaconda3\Scripts;C:\Users\Henry\Anaconda3\bin;C:\Users\Henry\Anaconda3\condabin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin;C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\libnvvp;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0;C:\WINDOWS\System32\OpenSSH;C:\Program Files\MATLAB\R2019a\bin;C:\Program Files\NVIDIA Corporation\NVIDIA NGX;C:\Program Files\MATLAB\MATLAB Runtime\v94\runtime\win64;C:\Program Files (x86)\Wolfram Research\WolframScript;C:\Program Files (x86)\QuickTime\QTSystem;C:\Users\Henry\AppData\Local\Microsoft\WindowsApps;C:\Users\Henry\AppData\Local\Programs\MiKTeX 2.9\miktex\bin\x64
Log: PythonSearchPath = C:\Program Files\FreeCAD 0.18\bin\python36.zip;C:\Program Files\FreeCAD 0.18\bin\DLLs;C:\Program Files\FreeCAD 0.18\bin\lib;C:\Program Files\FreeCAD 0.18\bin
Log: RunMode = Exit
Log: SystemParameter = C:\Users\Henry\AppData\Roaming\FreeCAD\system.cfg
Log: UserAppData = C:\Users\Henry\AppData\Roaming\FreeCAD\
Log: UserHomePath = C:\Users\Henry\Documents
Log: UserParameter = C:\Users\Henry\AppData\Roaming\FreeCAD\user.cfg
Log: Verbose = 
Log: Create Application
Log: Run App init script
Log: Init: starting App::FreeCADInit.py
Log: Init:   Searching for modules...
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\AddonManager... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Arch... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Complete... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Draft... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Drawing... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Fem... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Idf... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Image... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Import... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Inspection... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Material... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Measure... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Mesh... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\MeshPart... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\OpenSCAD... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Part... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\PartDesign... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Path... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Plot(Init.py not found)... ignore
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Points... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Raytracing... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Robot... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Ship(Init.py not found)... ignore
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Show(Init.py not found)... ignore
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Sketcher... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Spreadsheet... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Start... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Surface... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\TechDraw... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Test... done
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Tux(Init.py not found)... ignore
Log: Init:      Initializing C:\Program Files\FreeCAD 0.18\Mod\Web... done
Log: Using C:\Program Files\FreeCAD 0.18\Mod as module path!
Log: System path after init:
Log:    C:\Program Files\FreeCAD 0.18\bin
Log:    C:\Program Files\FreeCAD 0.18\Mod\AddonManager
Log:    C:\Program Files\FreeCAD 0.18\Mod\Arch
Log:    C:\Program Files\FreeCAD 0.18\Mod\Complete
Log:    C:\Program Files\FreeCAD 0.18\Mod\Draft
Log:    C:\Program Files\FreeCAD 0.18\Mod\Drawing
Log:    C:\Program Files\FreeCAD 0.18\Mod\Fem
Log:    C:\Program Files\FreeCAD 0.18\Mod\Idf
Log:    C:\Program Files\FreeCAD 0.18\Mod\Image
Log:    C:\Program Files\FreeCAD 0.18\Mod\Import
Log:    C:\Program Files\FreeCAD 0.18\Mod\Inspection
Log:    C:\Program Files\FreeCAD 0.18\Mod\Material
Log:    C:\Program Files\FreeCAD 0.18\Mod\Measure
Log:    C:\Program Files\FreeCAD 0.18\Mod\Mesh
Log:    C:\Program Files\FreeCAD 0.18\Mod\MeshPart
Log:    C:\Program Files\FreeCAD 0.18\Mod\OpenSCAD
Log:    C:\Program Files\FreeCAD 0.18\Mod\Part
Log:    C:\Program Files\FreeCAD 0.18\Mod\PartDesign
Log:    C:\Program Files\FreeCAD 0.18\Mod\Path
Log:    C:\Program Files\FreeCAD 0.18\Mod\Plot
Log:    C:\Program Files\FreeCAD 0.18\Mod\Points
Log:    C:\Program Files\FreeCAD 0.18\Mod\Raytracing
Log:    C:\Program Files\FreeCAD 0.18\Mod\Robot
Log:    C:\Program Files\FreeCAD 0.18\Mod\Ship
Log:    C:\Program Files\FreeCAD 0.18\Mod\Show
Log:    C:\Program Files\FreeCAD 0.18\Mod\Sketcher
Log:    C:\Program Files\FreeCAD 0.18\Mod\Spreadsheet
Log:    C:\Program Files\FreeCAD 0.18\Mod\Start
Log:    C:\Program Files\FreeCAD 0.18\Mod\Surface
Log:    C:\Program Files\FreeCAD 0.18\Mod\TechDraw
Log:    C:\Program Files\FreeCAD 0.18\Mod\Test
Log:    C:\Program Files\FreeCAD 0.18\Mod\Tux
Log:    C:\Program Files\FreeCAD 0.18\Mod\Web
Log:    C:\Program Files\FreeCAD 0.18\bin\Library\bin
Log:    C:\Users\Henry\Anaconda3
Log:    C:\Users\Henry\Anaconda3\Library\mingw-w64\bin
Log:    C:\Users\Henry\Anaconda3\Library\usr\bin
Log:    C:\Users\Henry\Anaconda3\Library\bin
Log:    C:\Users\Henry\Anaconda3\Scripts
Log:    C:\Users\Henry\Anaconda3\bin
Log:    C:\Users\Henry\Anaconda3\condabin
Log:    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\bin
Log:    C:\Program Files\NVIDIA GPU Computing Toolkit\CUDA\v10.1\libnvvp
Log:    C:\WINDOWS\system32
Log:    C:\WINDOWS
Log:    C:\WINDOWS\System32\Wbem
Log:    C:\WINDOWS\System32\WindowsPowerShell\v1.0
Log:    C:\WINDOWS\System32\OpenSSH
Log:    C:\Program Files\MATLAB\R2019a\bin
Log:    C:\Program Files\NVIDIA Corporation\NVIDIA NGX
Log:    C:\Program Files\MATLAB\MATLAB Runtime\v94\runtime\win64
Log:    C:\Program Files (x86)\Wolfram Research\WolframScript
Log:    C:\Program Files (x86)\QuickTime\QTSystem
Log:    C:\Users\Henry\AppData\Local\Microsoft\WindowsApps
Log:    C:\Users\Henry\AppData\Local\Programs\MiKTeX 2.9\miktex\bin\x64
Log: Init: App::FreeCADInit.py done
Log: Init: Processing command line files
Log: Init:     Processing file: pillar.py
Log: Exiting on purpose
Log: FreeCAD terminating...
Log: Saving system parameter...
Log: Saving system parameter...done
Log: Saving user parameter...
Log: Saving user parameter...done

这很奇怪,因为如果我在 FreeCAD GUI 中以宏的形式运行,它会工作并创建 .stl 圆柱体。

【问题讨论】:

  • 我不是 windows 用户,但是在终端中运行 freecad 需要引号吗?
  • @SathishSanjeevi 就我而言:是的。当我尝试不这样做时,我得到:'C:\Program' 不被识别为内部或外部命令、可运行程序或批处理文件。

标签: python freecad


【解决方案1】:

您有将对象添加到活动文档并重新计算的命令,但您实际上没有文档。这对我有用。 (Linux 的小改动)

# -*- coding: utf-8 -*-

import FreeCAD
import Part
import Mesh

App.newDocument("Unnamed")
App.ActiveDocument.addObject("Part::Cylinder","Cylinder")
App.ActiveDocument.ActiveObject.Label = "Cylinder"
App.ActiveDocument.recompute()

__objs__=[]
__objs__.append(FreeCAD.getDocument("Unnamed").getObject("Cylinder"))
Mesh.export(__objs__,u"/home/brad/pillar_2.stl")

del __objs__

【讨论】:

  • 非常感谢您的回复。不幸的是,它仍然对我不起作用。请查看我更新的问题,其中我还粘贴了日志文件。也许这可以帮助发现错误...
  • 它适用于我使用 FreeCADCmd 方法或直接调用 python 文件。您可以尝试在脚本中添加一些 print('debug messages') 并验证脚本是否正在实际执行。
  • 我试过了,但它没有打印任何东西。我不知道该怎么办...
  • 所以,我注意到如果我将脚本文件放在与 FreeCADmd.exe 相同的目录中,它会起作用。为什么 ?我不知道...
  • 如果什么都没有打印,那么脚本根本不可能被执行。令人惊讶的是,您没有收到有关未知文件的 python 异常。很高兴您找到了解决方案。
【解决方案2】:

在工作台部件中单击立方体图标 Part Cylinder.png。默认是定位一个完整的圆柱体,一个圆形面的中心与全局原点(点 0,0,0)重合,半径为 2mm,高度为 10mm。

【讨论】:

  • OP 正在询问如何通过 Python 而不是 GUI 来实现他的目标。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多