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

Descripción
!!! This macro needs to be corrected. !!!
Esta macro permite encontrar y juntar todas las aristas con la respectiva arista más cercana no conectada utilizando líneas.

Toma como argumento una matriz de formas ([shape1,shape2,...])

Versión macro : 0.1
Fecha última modificación : 2011-08-24
Versión FreeCAD : All
Descargar : ToolBar Icon

Autor
Tremblou
Descargar
ToolBar Icon
Enlace
Versión Macro
0.1
Fecha última modificación
2011-08-24
Versión(es) FreeCAD
All
Acceso directo predeterminado
None
Ver también
None


Descripción

Esta macro permite encontrar y juntar todas las aristas con la respectiva arista más cercana no conectada utilizando líneas. Toma como argumento una matriz de formas ([shape1,shape2,...])

Script

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]