|
Descrizione |
---|
Taglia una linea in segmenti bicolore e crea i punti. |
Autore |
mario52 |
Link |
Esempi di macro Come installare le Macro Personalizzare la barra degli strumenti |
Versione |
0.1 |
Data ultima modifica |
2015-03-08 |
Contents |
Questa piccola macro taglia una linea, crea dei punti e dei segmenti bicolore della linea.
Può essere usata nell'editor delle macro di FreeCAD.
Se la macro viene copiata nella console Python può essere utilizzata con:
cutLine(4, createLine = 1, biColor = 1, createPoint = 0)
è possibile modificare i valori di default nella macro.
Con bisColor sulla linea originale vengono create delle linee rosse e bianche .... i colori sono modificabili nel codice alle righe 19 e 22.
Macro_cutLine.FCMacro
################################################################# # http://forum.freecadweb.org/viewtopic.php?f=3&t=4217&hilit=discretize __title__ = "cutLine" __author__ = "Mario52" __version__ = "00.01" __date__ = "08/03/2015" import Draft, Part def cutLine(numberOfPoints = 2, createPoint = 1, createLine = 0, biColor = 0): # create a points of forme def createLines(numberOfPoints, points, biColor): # create line biscolor = 0 for lin in range(numberOfPoints-1): creaLine = [FreeCAD.Vector(points[lin]),FreeCAD.Vector(points[lin+1])] wire = Draft.makeWire(creaLine,closed=False,face=False,support=None) if biColor != 0: # biColor if biscolor == 0: FreeCADGui.ActiveDocument.getObject(wire.Name).LineColor = (1.0,0.0,0.0) # 255 = 1 (10 = (1/255 * 10 )) biscolor = 1 else: FreeCADGui.ActiveDocument.getObject(wire.Name).LineColor = (1.0,1.0,1.0) # 255 = 1 (10 = (1/255 * 10 )) biscolor = 0 try: points = [] points[:] = [] selectionObjects = FreeCADGui.Selection.getSelectionEx() # getSelectionEx numberOfPoints += 1 for selection in selectionObjects: compteur = pas = 0 for selectedEdge in selection.SubObjects: # FreeCAD.Console.PrintMessage(selectionObjects[0].SubElementNames[compteur] + "\n") print selectionObjects[0].SubElementNames[compteur] # getSelectionEx compteur += 1 points = selectedEdge.discretize(numberOfPoints) if createLine != 0: createLines(numberOfPoints, points, biColor) for p in points: if createPoint != 0: Draft.makePoint( p.x, p.y, p.z) # FreeCAD.Console.PrintMessage(str(compteur)+" X"+ str(p.x)+" Y"+ str(p.y)+ " Z"+ str(p.z) + "\n") print compteur," X", p.x, " Y", p.y, " Z", p.z pas = 1 # if pas == 0: # the not SubObjects selectionObjects = FreeCADGui.Selection.getSelection() # select all elements # FreeCAD.Console.PrintMessage(selectionObjects[0].Name + "\n") print selectionObjects[0].Name # getSelection() compteur = 0 for ii in enumerate(selectionObjects[0].Shape.Edges): compteur += 1 points = ii[1].discretize(numberOfPoints) # discretize the element for p in points: if createPoint != 0: Draft.makePoint( p.x, p.y, p.z) # create points # FreeCAD.Console.PrintMessage(str(compteur)+" X"+ str(p.x)+" Y"+ str(p.y)+ " Z"+ str(p.z) + "\n") print compteur, " X", p.x, " Y", p.y, " Z", p.z # list and display the coordinates if createLine != 0: createLines(numberOfPoints, points, biColor) except: # FreeCAD.Console.PrintError("Error" + "\n" + "Give : cutLine(numberOfPoints = 2, createPoint = 1, createLine = 0, biColor = 0)"+"\n") print "Error : Give cutLine(numberOfPoints = 2, createPoint = 1, createLine = 0, biColor = 0)" #cutLine(2, createLine = 1, biColor = 1, createPoint = 0)
questa funzione utilizzare la funzione discrete the original code