-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathEdge.py
78 lines (65 loc) · 2.82 KB
/
Edge.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
# coding=UTF-8
import FreeCAD
import Part
from DocumentObject import DocumentObject
class SMEdge(DocumentObject):
"""
An edge is defined by the start and end point.
It also have a layer it belongs to
"""
pytype="SMEdge"
def __init__(self,layer,start,end,crease=None):
DocumentObject.__init__(self)
FreeCAD.ActiveDocument.addObject("Part::Part2DObjectPython","Edge",self,self)
self.addProperty("App::PropertyLink","Start","Base","Start point")
self.addProperty("App::PropertyLink","End","Base","End point")
#self.addProperty("App::PropertyLink","Layer","Base", "The layer this point is in")
self.addProperty("App::PropertyEnumeration","Creased","Base","Creased?").Creased=["Creased","Normal"]
#self.addProperty("App::PropertyLinkList","Faces","Base", "Faces using this edge")
#self.Layer=layer.getobj()
layer.registerEdge(self)
self.Start=start.getobj()
self.End=end.getobj()
self.setCreased(crease)
self.createGeometry()
def fromfef(self,data):
#FIXME: the whole fef import stuff should be moved to Mesh
mesh = self.getParentByType('SMesh')
start,end,crease,selected=data.strip().split(' ')
startp = mesh.fefpoint(int(start))
stopp = mesh.fefpoint(int(stop))
start=ship.points[int(start)]
end=ship.points[int(end)]
return SMEdge(self.Layer,startp, stopp,crease)
def toggleCrease(self):
#FreeCAD.Console.PrintMessage("toggleCrease %s %s\n"%(self.Label,self.Creased))
if self.Creased == "Creased":
self.Creased = "Normal"
else:
self.Creased = "Creased"
#FreeCAD.Console.PrintMessage("toggleCrease end %s %s\n"%(self.Label,self.Creased))
self.creaseColor()
def onChanged(self,prop,attach=False):
if prop == "Creased":
self.creaseColor()
else:
DocumentObject.onChanged(self,prop,attach)
def creaseColor(self):
creased = self.Creased
if (not creased) or (creased == "Normal"):
self.LineColor = (0.0,0.0,0.0,0.0)
else:
self.LineColor = (1.0,0.0,0.0,0.0)
def setCreased(self,creased):
if (not creased) or (creased == "Normal"):
self.Creased = "Normal"
else:
self.Creased = "Creased"
def getPoints(self):
return [self.Start.Proxy,self.End.Proxy]
def createGeometry(self):
#FreeCAD.Console.PrintMessage("Edge creategeo %s"%self.Label)
plm = self.Placement
#FreeCAD.Console.PrintMessage("%s,%s"%(self.Start.Coordinates,self.End.Coordinates))
self.Shape=Part.Line(self.Start.Coordinates,self.End.Coordinates).toShape()
self.Placement = plm