Macro JointWire

From FreeCAD Documentation
Jump to navigation Jump to search
This page is a translated version of the page Macro JointWire and the translation is 100% complete.
Other languages:
Deutsch • ‎English • ‎español • ‎français • ‎italiano • ‎svenska • ‎čeština
!!! This macro needs to be corrected. !!!

Macro JointWire.png JointWire

Beschreibung
!!! This macro needs to be corrected. !!!
Mit diesem Makro können Sie alle nicht verbundenen Kanten über eine Linie mit der nächsten nicht verbundenen Kante suchen und verknüpfen. Es nimmt eine Formmatrix im Eintrag ([Shape1, Shape2, ...])

Versionsmakro : 1.0
Datum der letzten Änderung : 2011-08-24
FreeCAD version : All
Herunterladen : ToolBar Icon
Autor
Tremblou
Herunterladen
ToolBar Icon
Links
Macro-Version
1.0
Datum der letzten Änderung
2011-08-24
FreeCAD-Version(s)
All
Standardverknüpfung
None
Siehe auch
None


Beschreibung

Mit diesem Makro können Sie alle nicht verbundenen Kanten über eine Linie mit der nächsten nicht verbundenen Kante suchen und verknüpfen. Es nimmt eine Formmatrix im Eintrag ([Shape1, Shape2, ...])

Skript

ToolBar Icon Macro JointWire.png

Macro_JointWire.FCMacro

def findWires(edges):
    def verts(shape):
                return [shape.Vertexes[0].Point,shape.Vertexes[-1].Point]
        def group(shapes):
                shapesIn = shapes[:]
                pointTst = []
        pointOut =[]
        for s in shapesIn :
            pointTst=pointTst+[s.Vertexes[0].Point]
            pointTst=pointTst+[s.Vertexes[-1].Point]
        print pointTst               
        changed = False
                for s in shapesIn:
                        if len(s.Vertexes) < 2:
                print "one vertex, its a circle, just add"
                        else:                             
                                for v in verts(s):
                    twoDot=0
                                        for vv in pointTst:
                                                if v == vv:
                            twoDot=twoDot+1                           
                        if v==vv and twoDot==2 :                   
                            changed = True
                            print "found matching vert"
                            break
                                    if twoDot<2:
                        print "didn't find any matching vert..."
                        pointOut.append(v)
         print "Dots non connected", pointOut
                return(changed,pointOut)
    def joint(point):
        for p in range(len(point)/2) :
            print point
            deltI=Part.Vertex(100,100,100).Point
            pos=1
            for pp in range(len(point)-1) :
                print "position:",pp+1
                if len(point)-1>1:
                    deltN=(point[0]-point[pp+1])
                    if deltN.Length<deltI.Length:
                        deltI=deltN
                        pos=pp+1
                        print "changement",pos
                else:
                    pos=1   
            print "points a joindre",point[0],point[pos]
            if point[0]!=point[pos]:
                Part.show(Part.makePolygon([point[0],point[pos]]))
            else:
                print "WARNING les points ont la meme valeurs "
            point.pop(0)
            point.pop(pos-1)
        point=0 #to have a return normally void
        return(point)
    working = True
        edgeSet = edges
    result = group(edgeSet)
        working = result[0]
        edgeSet = result[1]
    joint(result[1])
        return result[1]