Advertisement
danfalck

curve extraction

Oct 16th, 2011
215
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.61 KB | None | 0 0
  1. #############################################
  2. ### HeeksCNC related scripting
  3. #############################################
  4. import Part,Drawing,FreeCADGui,FreeCAD
  5. from FreeCAD import Base
  6. edges=[]
  7. s=Gui.Selection.getSelectionEx()
  8. for i in s:
  9.     for e in i.SubElementNames:
  10.         edges.append(getattr(i.Object.Shape,e))
  11.  
  12. S3 =Part
  13. S4 = S3.__sortEdges__(edges)
  14. w1 = Part.Wire(S4)
  15. #check to see if shape is closed
  16. #w1.isClosed()
  17. #make an offset
  18. #o1 = w1.makeOffset(10)
  19. #Part.show(o1)
  20.  
  21. if (S4[0].Vertexes[0].X == S4[1].Vertexes[1].X) and (S4[0].Vertexes[0].Y == S4[1].Vertexes[1].Y):
  22.     print 'curve = area.Curve()\n' \
  23.     +'curve.append(area.Point(' +str(S4[0].Vertexes[1].X) + ',' + str(S4[0].Vertexes[1].Y)+'))\n'\
  24.     +'curve.append(area.Point(' +str(S4[0].Vertexes[0].X) + ',' + str(S4[0].Vertexes[0].Y)+'))\n'
  25. else:
  26.     print 'curve = area.Curve()\n' \
  27.     +'curve.append(area.Point(' +str(S4[0].Vertexes[0].X) + ',' + str(S4[0].Vertexes[0].Y)+'))\n'\
  28.     +'curve.append(area.Point(' +str(S4[0].Vertexes[1].X) + ',' + str(S4[0].Vertexes[1].Y)+'))\n'
  29.  
  30. inx = 1
  31. while (inx <len(S4)):
  32.     if (S4[inx].Curve.__class__.__name__ == 'GeomCircle'):
  33.         if S4[inx].Closed:
  34.             print '#--Warning->Circle--'
  35.             #print "center pt: X "+str(S4[inx].Curve.Center.x)+', Y '+str(S4[inx].Curve.Center.y)\
  36.             #+" Radius: "+str(S4[inx].Curve.Radius)
  37.         else:
  38.             if (S4[inx-1].Vertexes[0].X == S4[inx].Vertexes[1].X) and (S4[inx-1].Vertexes[0].Y == S4[inx].Vertexes[1].Y):
  39.                 print 'curve.append(area.Vertex('+str(int(1*(S4[inx].Curve.Axis[2])))+', area.Point('+str(S4[inx].Vertexes[0].X)+', '+str(S4[inx].Vertexes[0].Y)\
  40.                 +'), area.Point('+str(S4[inx].Curve.Center.x)+', '+str(S4[inx].Curve.Center.y)\
  41.                 +')))\n'
  42.                 #+" Radius: "+str(S4[inx].Curve.Radius)\
  43.                 #+" Direction: "+str(S4[inx].Curve.Axis)
  44.             else:
  45.                 print 'curve.append(area.Vertex('+str(1*(int(S4[inx].Curve.Axis[2])))+', area.Point('+str(S4[inx].Vertexes[1].X)+', '+str(S4[inx].Vertexes[1].Y)\
  46.                 +'), area.Point('+str(S4[inx].Curve.Center.x)+', '+str(S4[inx].Curve.Center.y)\
  47.                 +')))\n'
  48.     else:
  49.         #print '--Line--'
  50.         if (S4[inx-1].Vertexes[0].X == S4[inx].Vertexes[1].X) and (S4[inx-1].Vertexes[0].Y == S4[inx].Vertexes[1].Y):
  51.             print 'curve.append(area.Point(' +str(S4[inx].Vertexes[0].X) + ',' + str(S4[inx].Vertexes[0].Y)+'))\n'
  52.         else:
  53.             print 'curve.append(area.Point(' +str(S4[inx].Vertexes[1].X) + ',' + str(S4[inx].Vertexes[1].Y)+'))\n'
  54.    
  55.     inx = inx+1
  56.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement