27

我正在寻找适用于 python 的 CAD 模块。这是我发现的,如果我错了,请纠正我:

  • PythonCAD
    • 文件类型:DWG、DXF、SVG
    • 定向:在窗口中单击
    • 最后维护:2012-06-15
    • 记录:贫穷和肮脏
  • PythonOCC
    • 文件类型:STEP、IGES、STL(导入/导出)
    • 面向:脚本
    • 最后维护:2013-01-12
    • 记录在案:良好且清晰
    • 安装太痛苦了
  • FreeCAD(python 包装)
    • 文件类型: ?
    • 面向:单击窗口和可从 python 导入的 python 脚本
    • 最后维护:2013 年 1 月
    • 记录在案:很好

好吧,似乎 FreeCAD 的 python 绑定是最好的,但还有其他东西吗?

4

5 回答 5

11

我发现 FreeCAD 是最好的解决方案。python 绑定允许您以全面的方式设计部件。

myShape = Part.makeBox(2,2,2)
myShape.translate(Base.Vector(2,0,0))

从简单的几何图形中,您可以使用布尔运算:

cylinder1 = Part.makeCylinder(3,10,Base.Vector(0,0,0),Base.Vector(1,0,0))
cylinder2 = Part.makeCylinder(3,10,Base.Vector(5,0,-5),Base.Vector(0,0,1))
common = cylinder1.common(cylinder2)

唯一的缺点是使用 mac os 安装,我无法在雪豹上编译它(因为对非持续库的依赖过多)。

但是 pythonocc 也有同样的问题,我不喜欢的是最小的文档和合成器,它太像 opencascade 而不是太多的 pythonistic。

于 2013-02-28T10:07:42.423 回答
5

occmodel是一个小型的自包含库,它提供对 OpenCASCADE 建模内核的高级访问。

于 2013-10-08T22:08:48.477 回答
5

CADquery是目前用于 FreeCad 的插件,我使用它并且比在 Python 中编写 OpenScad 脚本更好。开发人员目前正在从 FreeCad 迁移到版本 2 的 Python OCC,但我目前正在使用 V1。

CQParts 是使 cadquery 有用的一个非常重要的部分。它是程序的类似物,因此您可以设计一个轮子等。

于 2019-03-12T21:05:50.213 回答
3

PythonOCC 可能是最完整的功能。这里还有一些:

CADDD - 使用 PythonOCC,在 Qt 中有 GUI。

NURBS - 用于使用 NURBS 的 Python 模块。

lolcad - 看起来很不错,但已经有一段时间没有更新了。

当然,您可以尝试使用 Blender,它具有内置的 Python 解释器,并且有用于架构和精确建模的插件(像这样

于 2013-02-27T22:20:09.540 回答
2

看看莎乐美。代码如下所示:

import sys
import salome

salome.salome_init()
theStudy = salome.myStudy

import salome_notebook
notebook = salome_notebook.NoteBook(theStudy)
sys.path.insert( 0, r'/tmp')

###
### GEOM component
###

import GEOM
from salome.geom import geomBuilder
import math
import SALOMEDS


geompy = geomBuilder.New(theStudy)

O = geompy.MakeVertex(0, 0, 0)
OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)
Vertex_1 = geompy.MakeVertex(0, 0, 0)
Vertex_2 = geompy.MakeVertex(0, 2, 0)
Vertex_3 = geompy.MakeVertex(2, 2, 0)
Line_1 = geompy.MakeLineTwoPnt(Vertex_2, Vertex_3)
Line_1_vertex_2 = geompy.GetSubShape(Line_1, [2])
Line_1_vertex_3 = geompy.GetSubShape(Line_1, [3])
Curve_1 = geompy.MakeInterpol([Line_1_vertex_2, Line_1_vertex_3, Vertex_1], True, False)
geompy.addToStudy( O, 'O' )
geompy.addToStudy( OX, 'OX' )
geompy.addToStudy( OY, 'OY' )
geompy.addToStudy( OZ, 'OZ' )
geompy.addToStudy( Vertex_1, 'Vertex_1' )
geompy.addToStudy( Vertex_2, 'Vertex_2' )
geompy.addToStudy( Vertex_3, 'Vertex_3' )
geompy.addToStudy( Line_1, 'Line_1' )
geompy.addToStudyInFather( Line_1, Line_1_vertex_2, 'Line_1:vertex_2' )
geompy.addToStudyInFather( Line_1, Line_1_vertex_3, 'Line_1:vertex_3' )
geompy.addToStudy( Curve_1, 'Curve_1' )
于 2016-05-03T09:16:39.213 回答