Advertisement
danfalck

edges_to_curves_testing.py

May 2nd, 2015
297
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.57 KB | None | 0 0
  1. import FreeCAD
  2. import FreeCADGui as Gui
  3. import Part
  4. import DraftGeomUtils
  5. import area
  6.  
  7. def makeAreaVertex(seg):
  8.     if seg.ShapeType =='Edge':
  9.         if isinstance(seg.Curve,Part.Circle):
  10.             segtype = 1 #0=line,1=ccw arc,-1=cw arc
  11.             vertex = area.Vertex(segtype, area.Point(seg.valueAt(seg.LastParameter)[0],seg.valueAt(seg.LastParameter)[1]), area.Point(seg.Curve.Center.x, seg.Curve.Center.y))
  12.         elif isinstance(seg.Curve,Part.Line):
  13.             point1 = seg.valueAt(seg.FirstParameter)[0],seg.valueAt(seg.FirstParameter)[1]
  14.             point2 = seg.valueAt(seg.LastParameter)[0],seg.valueAt(seg.LastParameter)[1]
  15.             segtype = 0
  16.             vertex = area.Point(seg.valueAt(seg.LastParameter)[0],seg.valueAt(seg.LastParameter)[1])
  17.         else:
  18.             pass
  19.     return vertex
  20.  
  21. def makeAreaCurve(curveobj,edges):
  22.     wire = Part.Wire(edges)
  23.     seglist = DraftGeomUtils.sortEdges(edges)
  24.    
  25.     firstedge = seglist[0]
  26.     if wire.isClosed()==False:
  27.         curveobj.append(area.Point(firstedge.valueAt(firstedge.FirstParameter)[0],firstedge.valueAt(firstedge.FirstParameter)[1]))
  28.     for s in seglist:
  29.         curveobj.append(makeAreaVertex(s))
  30.     wire = Part.Wire(seglist)
  31.     if wire.isClosed():
  32.         curveobj.append(area.Point(firstedge.valueAt(firstedge.LastParameter)[0],firstedge.valueAt(firstedge.LastParameter)[1]))
  33.     #return curveobj
  34.  
  35. #tests:
  36. edges = Gui.Selection.getSelectionEx()[0].SubObjects
  37.  
  38. c= area.Curve()
  39. makeAreaCurve(c,edges)
  40.  
  41. c.Reverse()
  42.  
  43. for vertex in c.getVertices():
  44.     print vertex.p.x, " ,",vertex.p.y
  45.  
  46. edges2 = Gui.Selection.getSelectionEx()[0].SubObjects
  47.  
  48. import sys
  49. sys.path.append("/home/danfalck/Documents/freecad/path_experiments/")
  50. import PathKurveFuncs
  51.  
  52. clearance = float(5)
  53. rapid_safety_space = float(2)
  54. start_depth = float(0)
  55. step_down = float(1)
  56. final_depth = float(-1)
  57. tool_diameter = float(.25)
  58. cutting_edge_angle = float(0)
  59.  
  60. roll_radius = float(2)
  61. offset_extra = 0
  62.  
  63.  
  64. roll_on = 'auto'
  65. roll_off = 'auto'
  66. #roll_on = None
  67. roll_off = None
  68. extend_at_start= 0
  69. extend_at_end= 0
  70. lead_in_line_len= 0
  71. lead_out_line_len= 0
  72.  
  73. PathKurveFuncs.profile(c, 'left', tool_diameter/2, offset_extra, roll_radius, roll_on, roll_off, rapid_safety_space, clearance, start_depth, step_down, final_depth,extend_at_start,extend_at_end,lead_in_line_len,lead_out_line_len )
  74.  
  75. PathKurveFuncs.profile(c, 'on', tool_diameter/2, offset_extra, roll_radius, roll_on, roll_off, rapid_safety_space, clearance, start_depth, step_down, final_depth,extend_at_start,extend_at_end,lead_in_line_len,lead_out_line_len )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement