FreeCAD模块开发者指南

需积分: 35 7 下载量 198 浏览量 更新于2024-07-16 收藏 1.79MB PDF 举报
"FreeCAD模组开发者指南,20160929版,英文文档,用于FreeCAD 0.17-dev版本的开发。作者Qingfeng Xia,旨在帮助新模块开发者熟悉FreeCAD的工作台GUI和API。" FreeCAD是一款开源的参数化建模软件,适用于机械工程、产品设计、3D建模等领域。该资源是《FreeCAD模块开发者指南》,主要面向希望为FreeCAD开发新模块的程序员。这个指南由Qingfeng Xia编写,针对FreeCAD的0.17-dev版本,它提供了一个深入学习FreeCAD源代码的途径。 指南的早期版本始于2015年9月,当时适配的是FreeCAD 0.16-dev版本,而2016年9月更新至0.17-dev版本,这意味着内容已经跟进了软件的最新进展。文档的授权遵循与FreeCAD相同的Creative Commons Attribution 3.0许可证,允许自由分享和改编,但需给予原作者署名。 在开始阅读此指南前,建议读者已经对FreeCAD的工作台界面和Python API有一定的了解,这可以通过官方wiki的基础文档和Python API文档来实现。此外,为了快速上手,还推荐使用FreeCAD的单文件PDF用户手册。 文档还提到了Doxygen生成的源代码在线文档,这是对0.16-dev版本的源代码进行详细了解的重要资源。Doxygen是一个强大的源代码文档工具,能自动生成源代码的结构化文档。 作者写作此书的初衷包括学习FreeCAD的软件架构,以及掌握如何使用Git为类似FreeCAD的开源项目贡献代码。这不仅有助于节省新开发者的学习时间,也鼓励更多的人参与到开源社区中来。 通过这份指南,开发者将能够学习如何扩展FreeCAD的功能,创建自定义工作台,编写模块,以及理解FreeCAD的核心组件和交互机制。这将极大地提升FreeCAD的可定制性和适应性,满足不同用户和行业的特定需求。
2023-06-11 上传

import FreeCAD import FreeCADGui from PySide import QtGui, QtCore Gui.activateWorkbench("PartWorkbench") FreeCAD.newDocument() class SphereDialog(QtGui.QDialog): def __init__(self): super().__init__() self.setWindowTitle("Create Sphere") self.create_widgets() def create_widgets(self): layout = QtGui.QVBoxLayout() # Radius widget radius_label = QtGui.QLabel("Radius:") self.radius_spinbox = QtGui.QDoubleSpinBox() self.radius_spinbox.setMinimum(0.1) self.radius_spinbox.setMaximum(1000.0) self.radius_spinbox.setValue(10.0) layout.addWidget(radius_label) layout.addWidget(self.radius_spinbox) # Opacity widget opacity_label = QtGui.QLabel("Opacity:") self.opacity_slider = QtGui.QSlider(QtCore.Qt.Horizontal) self.opacity_slider.setMinimum(0) self.opacity_slider.setMaximum(100) self.opacity_slider.setValue(50) layout.addWidget(opacity_label) layout.addWidget(self.opacity_slider) # Create button create_button = QtGui.QPushButton("Create") create_button.clicked.connect(self.create_sphere) layout.addWidget(create_button) self.setLayout(layout) def create_sphere(self): # Get sphere parameters radius = self.radius_spinbox.value() opacity = float(self.opacity_slider.value() / 100) # Create sphere sphere = FreeCAD.ActiveDocument.addObject("Part::Sphere", "Sphere") sphere.Radius = radius sphere.ViewObject.Transparency = int(round(opacity * 100)) # Show in 3D view sphere.ViewObject.Visibility = True FreeCADGui.SendMsgToActiveView("ViewFit") FreeCADGui.Selection.clearSelection() FreeCADGui.Selection.addSelection(sphere) FreeCADGui.SendMsgToActiveView("ViewFit") # Close dialog self.close() dialog = SphereDialog() dialog.show()代码中执行没有球体出现,请修改代码

2023-05-30 上传