用于参数化CAD的Python模块

时间:2013-01-25 09:40:21

标签: python cad

我正在为python寻找一个CAD模块。这就是我发现的,如果我错了,请纠正我:

  • PythonCAD
    • 文件类型:DWG,DXF,SVG
    • orientation:在窗口中单击
    • 上次维护:2012-06-15
    • 记录:贫穷和肮脏
  • PythonOCC
    • 文件类型:STEP,IGES,STL(导入/导出)
    • orientation:scripts
    • 上次维护:2013-01-12
    • 记录:良好而清晰
    • 安装真是太痛苦了
  • Free-CAD (python wrapping)
    • 文件类型:?
    • orientation:在窗口中单击并从python
    • 导入python脚本
    • 上次维护:2013年1月
    • 记录:非常好

好吧,看起来FreeCad的python绑定是最好的,但还有其他东西吗?

5 个答案:

答案 0 :(得分:8)

我发现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。

答案 1 :(得分:5)

occmodel是一个小型的自包含库,可以高级访问OpenCASCADE建模内核。

答案 2 :(得分:3)

PythonOCC可能是功能最齐全的。还有一些:

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

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

lolcad - 看起来非常好,但很长一段时间没有更新。

对于cource,您可以尝试使用Blender,它具有内置的Python解释器,并且有用于体系结构和精度建模的插件(如this

答案 3 :(得分:2)

Salome处有一个视图。代码如下所示:

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' )

答案 4 :(得分:0)

Pascale是用于参数CAD的新的专业级Python库。该库带有集成的IDE和查看器,并且有一个免费的,有限的90天试用版,可以在Cloud中运行。有很多示例的很好的文档。

以下是在其中心创建的带孔板的一些示例代码:

import pascale
import aerion_tools

# Plate creation
length = 1
width = 2
height = .1
plate = pascale.body.Cuboid.from_bounding_box_corners(pascale.ORIGIN, (length, width, height))

# Cylinder creation at plate center
diameter = .5
center_btm = (plate.centroid.x, plate.centroid.y, 0)
center_top = (plate.centroid.x, plate.centroid.y, height)
cylinder = pascale.body.Cylinder.from_centers_radius(center_btm, center_top, diameter / 2)

# Subtract the plate from the cylinder
plate_with_hole = plate - cylinder

# Get a geometric property from the body object and print it
print 'volume: ' + str(plate_with_hole.volume)

aerion_tools.viewer.show(plate_with_hole)

完全公开:我是Pascale的开发人员。