首先,开发的方式至少有这么几种:
1.freecad里运行宏——但是宏不像excel那样随模型文件保存。如果可以,则可以通过模型中的表格来驱动宏来建立模型。
2.创建新的工作台、菜单
https://www.jianshu.com/nb/55287949
https://github.com/ronggang/study-freecad
3.嵌入式,即,将python代码编译成一个exe文件来运行。https://wiki.freecad.org/Embedding_FreeCAD
注意,这种模式下无法导入gui模块
D:\FreeCAD-Link-Stable-Win-x86_64-py3.11-20240317\bin\dist>guitest
QObject::connect: No such signal QApplication::messageReceived(const QList<QByteArray> &)
[18156] Failed to execute script 'guitest' due to unhandled exception!
4.headless无头模式Using FreeCAD without GUI ,其实就是freecadcmd下执行宏文件(python源代码)https://wiki.freecad.org/Headless_FreeCAD
虽然说是无头模式,但是freecadcmd命令所执行的python代码里可以导入各种gui,前提是首先import FreeCADGui
,然后FreeCADGui.showMainWindow()
,这样,后面就可以导入各种gui了,包括techdrawgui,importgui等等。
使用方式:cmd进入freecadcmd所在目录,输入freecadcmd mypythoncode.py
即可执行python程序了。
以上3和4其实是对一个事情的多种叫法,我觉得区别在于是否使用gui,使用gui则无法单独编译为exe运行,需要在freecadcmd下运行源代码。不使用gui,很多功能用不了,比如导出带颜色的模型stp或者glb都不带颜色(Import.export不带颜色、ImportGui.export带颜色)。不使用gui,无法导出dxf(TechDraw.writeDXFPage)和svg(TechDrawGui.exportPageAsSvg),无法保存渲染图saveImage……
经典的,很详细了
Caesar卢尚宇
- http://www.manongjc.com/detail/15-bhlctvbfggupcic.html
- FreeCAD二次开发-拓扑数据脚本【精华】
- https://wiki.freecad.org/Topological_data_scripting/zh-cn
- python开发环境
高级开发手册:https://github.com/qingfengxia/
https://wiki.freecad.org/Developer_hub
其他开发
- FreeCAD二次开发-创建Python工作台,添加菜单栏和工具条,FreeCAD命令
- FreeCAD二次开发-使用PyQt5界面开发例子1(代码生成界面)
- FreeCAD二次开发-FreeCAD+PyQt5界面开发例子2(用QtDesigner生成界面)
- FreeCAD二次开发-使用PyQt5界面开发例子3(QtDesigner界面建立槽和信号)
- FreeCAD二次开发-基于PyQT对话框与FC交互的开发
- FreeCAD二次开发-使用PyQt在Pycharm添加QtDesigner和PyUIC
- FreeCAD二次开发-PySide例子QtGui.QMessageBox弹出信息窗口
- FreeCAD二次开发-PySide例子QtGui.QMessageBox弹出Yes和No窗口
- FreeCAD二次开发-dc.supportedTypes查看FreeCAD支持的类型
- FreeCAD二次开发-PySide例子QtGui.QInputDialog弹出输入框
- FreeCAD二次开发-基于控制台模式FC外部开发
Workbench creation
老周的工作台开发笔记:https://www.jianshu.com/nb/55287949
直接搜源码
如何找到需要的api,其实最好的办法是到源码里搜索,然后找到对应的函数,直接使用。
你看它的源码,注释(有点不同是因为源码是0.20版,生成的api是0.19版)是不是更加清晰
网友生成的API——不推荐
从官方的API可知,需要自己从源码生成API,现在很多开源软件都是这样了,对于开发人员来说,这不难,但对于简单使用和查阅API就不方便了。所以,有人已经做好了。当然,也可以记录操作,然后对操作记录的python代码进行修改。看这个API还不如直接看源码。
For the latest API, see the autogenerated API documentation, or generate the documentation yourself, see Source documentation.
https://iesensor.com/FreeCADDoc/0.19/
点开第二个https://iesensor.com/FreeCADDoc/0.19/modules.html
找到Workbenches » Python workbenches
找到draft……还是看源码直接。
Example:
import FreeCAD as App
import Draft
doc = App.newDocument()
p1 = App.Vector(0, 0, 0)
p2 = App.Vector(1000, 1000, 0)
p3 = App.Vector(2000, 0, 0)
wire1 = Draft.make_wire([p1, p2, p3], closed=True)
wire2 = Draft.make_wire([p1, 2*p3, 1.3*p2], closed=True)
wire3 = Draft.make_wire([1.3*p3, p1, -1.7*p2], closed=True)
doc.recompute()
官方wiki上的这些API很少——不推荐
https://wiki.freecad.org/Category:API
Category:API
跳到导航跳到搜索
(November 2018) This information may be incomplete and outdated. For the latest API, see the autogenerated API documentation.
This category gathers articles that list objects and methods available for Python programming.
分类“API”中的页面
以下22个页面属于本分类,共22个页面。
A
Arch API
B
Base API
Builtin modules
C
Console API
D
Draft API
F
FeaturePython Custom Properties
FreeCAD API
FreeCADGui API
M
Matrix API
Mesh API
O
Object API
P
Part API
Placement API
Python
R
Reinforcement API
Robot API example
S
Selection API
T
TechDraw API
TechDrawGui API
TopoShape API
V
Vector API
ViewObject API
https://wiki.freecad.org/FreeCAD_Scripting_Basics
最后编辑:秦晓川 更新时间:2024-11-14 14:45