Python module for parametric CAD

前端 未结 5 1920
小鲜肉
小鲜肉 2021-01-30 14:26

I am looking for a CAD module for python. This is what i\'ve found, correct me if I\'m wrong:

  • PythonCAD:
    • file types: DWG,DXF,SVG
    • oriented: click
相关标签:
5条回答
  • 2021-01-30 14:52

    PythonOCC is probably the most feature complete. Here are some more:

    CADDD - uses PythonOCC, has GUI in Qt.

    NURBS - Python module for working with NURBS.

    lolcad - looks very good but it was not updated for quite some time.

    And of cource, you can try to use Blender, which has build-in Python interpreter and there are plugins for architecture and precision modeling (like this)

    0 讨论(0)
  • 2021-01-30 14:54

    I found that Freecad is the best solution. The python bindings lets you design parts in a comprehensive way.

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

    From simple geometries you can use boolean operations:

    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)
    

    The only downpoint is the installation with mac os, I could not compile it on snow leaopard (because too much dependencies on unsustained libraries).

    But pythonocc has the same problem and what i don't like is the minimal documentation and the synthax which is too much opencascade like and not to much pythonistic.

    0 讨论(0)
  • 2021-01-30 15:05

    CADquery is a plug currently for FreeCad that I have used and worked better than scripting OpenScad in Python. The developers are currently moving from FreeCad to Python OCC for Version 2 but I am currently plugging away with V1.

    CQParts is a really important part of what makes cadquery useful. It is an analogue of procedure so you design one wheel etc.

    0 讨论(0)
  • 2021-01-30 15:07

    occmodel is a small self-contained library which gives a high level access to the OpenCASCADE modelling kernel.

    0 讨论(0)
  • 2021-01-30 15:11

    have a view at Salome. The code looks like this:

    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' )
    
    0 讨论(0)
提交回复
热议问题