with my current macro:
1: copy your file and renamed in MH 45.txt and delete the first line "MH 45 9.85% ")
2: check "Neutral" and "BSplineCurve"
3: read your file click "Read"
for reverse the coordinates:
4: check "Reverse"
5: click the "Reuse" button (the coordinates are in memory )
5: select the wire and click "BSplineCurve" button
4: check "Neutral" check "Reverse" check "BSplineCurve"
5: read your file click "Read"
PS: my macro not scale the wire you must use the FreeCAD tools
if you want BSplineCurve as Chris_G and use my macro:
edit the macro in the Python editor of FreeCAD
on my macro: lines 980 to 994 are presented like this :
Code: Select all
#lineCreate = Part.BSplineCurve() # OK avec courbes BSplineCurve 1
#lineCreate.interpolate(pp)#,False) # OK avec courbes BSplineCurve 1
#lineCreate = Part.Edge(lineCreate) # OK avec courbes BSplineCurve 1
#Part.show(lineCreate) # OK avec courbes BSplineCurve 1
#self.RB_02_03_BSplineCurve.setChecked(True) # OK avec courbes BSplineCurve 1
#text = "_BSplineCurve 1" # OK avec courbes BSplineCurve 1
#App.Console.PrintMessage("_BSplineCurve 1" + "\n") # OK avec courbes BSplineCurve 1
lineCreate = Part.BSplineCurve() # OK avec courbes BSplineCurve 2
lineCreate.buildFromPoles(pp) # OK avec courbes BSplineCurve 2
Part.show(lineCreate.toShape()) # OK avec courbes BSplineCurve 2
lineCreate = App.ActiveDocument.ActiveObject # OK avec courbes BSplineCurve 2
self.RB_02_03_BSplineCurve.setChecked(True) # OK avec courbes BSplineCurve 2
text = "_BSplineCurve 2" # OK avec courbes BSplineCurve 2
App.Console.PrintMessage("_BSplineCurve 2" + "\n") # OK avec courbes BSplineCurve 2
and comment the lines 988 to 994 (select the lines 988 to 994 click right button mouse and click "Comment"
for obtain the result like this :
Code: Select all
lineCreate = Part.BSplineCurve() # OK avec courbes BSplineCurve 1
lineCreate.interpolate(pp)#,False) # OK avec courbes BSplineCurve 1
lineCreate = Part.Edge(lineCreate) # OK avec courbes BSplineCurve 1
Part.show(lineCreate) # OK avec courbes BSplineCurve 1
self.RB_02_03_BSplineCurve.setChecked(True) # OK avec courbes BSplineCurve 1
text = "_BSplineCurve 1" # OK avec courbes BSplineCurve 1
App.Console.PrintMessage("_BSplineCurve 1" + "\n") # OK avec courbes BSplineCurve 1
# lineCreate = Part.BSplineCurve() # OK avec courbes BSplineCurve 2
# lineCreate.buildFromPoles(pp) # OK avec courbes BSplineCurve 2
# Part.show(lineCreate.toShape()) # OK avec courbes BSplineCurve 2
# lineCreate = App.ActiveDocument.ActiveObject # OK avec courbes BSplineCurve 2
# self.RB_02_03_BSplineCurve.setChecked(True) # OK avec courbes BSplineCurve 2
# text = "_BSplineCurve 2" # OK avec courbes BSplineCurve 2
# App.Console.PrintMessage("_BSplineCurve 2" + "\n") # OK avec courbes BSplineCurve 2
Code: Select all
obj = FreeCAD.ActiveDocument.getObject("DWire")
pts = [v.Point for v in obj.Shape.Vertexes]
import Part
bs = Part.BSplineCurve()
bs.interpolate(pts)
Part.show(bs.toShape())
FreeCAD.ActiveDocument.ActiveObject.Label = "Normal"
pts.reverse()
bs = Part.BSplineCurve()
bs.interpolate(pts)
Part.show(bs.toShape())
FreeCAD.ActiveDocument.ActiveObject.Label = "Reverse"
EDIT: 29/05/2017 21h42 PARIS
modify the step 5: select the wire and click "BSplineCurve" button
EDIT: 30/05/2017 10h22 PARIS
modify for reverse
mario