-
Notifications
You must be signed in to change notification settings - Fork 5
/
Copy pathStock.py
79 lines (64 loc) · 2.15 KB
/
Stock.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
78
79
from CamObject import CamObject
import geom
import cad
import Stocks
type = 0
class Stock(CamObject):
def __init__(self):
CamObject.__init__(self, id_named = True)
self.solids = []
def GetType(self):
return type
def TypeName(self):
return "Stock"
def icon(self):
# the name of the PNG file in the HeeksCNC icons folder
return "stock"
def HasEdit(self):
return True
def Edit(self):
import StockDlg
return StockDlg.Do(self)
def MakeACopy(self):
copy = Stock()
copy.CopyFrom(self)
return copy
def CopyFrom(self, object):
CamObject.CopyFrom(self, object)
self.solids = []
self.solids += object.solids
def CanAddTo(self, owner):
return owner.GetType() == Stocks.type
def PreferredPasteTarget(self):
return wx.GetApp().program.stocks
def GetBox(self):
self.box = geom.Box3D()
# return the box around all the solids
for solid in self.solids:
object = cad.GetObjectFromId(cad.OBJECT_TYPE_STL_SOLID, solid)
if object:
if object.GetVisible():
self.box.InsertBox(object.GetBox())
return self.box
def GetBoxWithInvisibles(self):
self.box = geom.Box3D()
# return the box around all the solids
for solid in self.solids:
object = cad.GetObjectFromId(cad.OBJECT_TYPE_STL_SOLID, solid)
if object:
self.box.InsertBox(object.GetBox())
return self.box
def WriteXml(self):
for solid in self.solids:
cad.BeginXmlChild('solid')
cad.SetXmlValue('id', solid)
cad.EndXmlChild()
CamObject.WriteXml(self)
def ReadXml(self):
child_element = cad.GetFirstXmlChild()
while child_element != None:
if child_element == 'solid':
solid = cad.GetXmlInt('id')
self.solids.append(solid)
child_element = cad.GetNextXmlChild()
#CamObject.ReadXml(self)