FreeCAD是一个基于OpenCASCADE的开源CAD/CAE工具。OpenCASCADE是一套开源的CAD/CAM/CAE几何模型核心,来自法国Matra Datavision公司,是著名的CAD软件EUCLID的开发平台。FreeCAD可运行于Windows以及Linux系统环境下,是一种通用的3D CAD建模工具,其发展是完全开源的(遵循GPL的LGPL许可证)。
FreeCAD的直接应用目标是机械工程和产品设计,但其用途十分广泛,也适用于建筑或其他工程专业,工程制图等领域。FreeCAD具有类似CATIA,SolidWorks或Solid Edge的工具,因此也将提供CAX(CAD,CAM,CAE),PLM等功能。这是一个基于参数化建模功能与模块化的软件架构,使得它易于无需修改核心系统即可提供额外的功能。
在FreeCAD中使用Python脚本编写可以极大地扩展其功能,并允许用户自动化设计流程、创建自定义工具和宏,以及进行高级的参数化设计。以下是一些FreeCAD中Python脚本编写的示例:
导入STEP
import Parts = Part.Shape()s.read(u"d:/Documents/drill.step")Part.show(s)
创建平面
plan1=Part.makePlane(2,2,App.Vector(-1,-1,0.8),App.Vector(0,0,1))Part.show(plan1)
布尔相交
k=s.common(plan1)Part.show(k1)
瓶子建模
import FreeCAD as Appimport Part, mathdef makeBottleTut(myWidth = 50.0, myHeight = 70.0, myThickness = 30.0): aPnt1=App.Vector(-myWidth / 2., 0, 0) aPnt2=App.Vector(-myWidth / 2., -myThickness / 4., 0) aPnt3=App.Vector(0, -myThickness / 2., 0) aPnt4=App.Vector(myWidth / 2., -myThickness / 4., 0) aPnt5=App.Vector(myWidth / 2., 0, 0) aArcOfCircle = Part.Arc(aPnt2, aPnt3, aPnt4) aSegment1=Part.LineSegment(aPnt1, aPnt2) aSegment2=Part.LineSegment(aPnt4, aPnt5) aEdge1=aSegment1.toShape() aEdge2=aArcOfCircle.toShape() aEdge3=aSegment2.toShape() aWire=Part.Wire([aEdge1, aEdge2, aEdge3]) aTrsf=App.Matrix() aTrsf.rotateZ(math.pi) # rotate around the z-axis aMirroredWire=aWire.copy() aMirroredWire.transformShape(aTrsf) myWireProfile=Part.Wire([aWire, aMirroredWire]) myFaceProfile=Part.Face(myWireProfile) aPrismVec=App.Vector(0, 0, myHeight) myBody=myFaceProfile.extrude(aPrismVec) myBody=myBody.makeFillet(myThickness / 12.0, myBody.Edges) neckLocation=App.Vector(0, 0, myHeight) neckNormal=App.Vector(0, 0, 1) myNeckRadius = myThickness / 4. myNeckHeight = myHeight / 10. myNeck = Part.makeCylinder(myNeckRadius, myNeckHeight, neckLocation, neckNormal) myBody = myBody.fuse(myNeck) return myBodyel = makeBottleTut()Part.show(el)