Package fabmetheus_utilities :: Package geometry :: Package geometry_tools :: Module dictionary
[hide private]
[frames] | no frames]

Source Code for Module fabmetheus_utilities.geometry.geometry_tools.dictionary

  1  """ 
  2  Boolean geometry dictionary object. 
  3   
  4  """ 
  5   
  6  from fabmetheus_utilities.geometry.geometry_utilities import evaluate 
  7  from fabmetheus_utilities.geometry.geometry_utilities import matrix 
  8  from fabmetheus_utilities import euclidean 
  9  from fabmetheus_utilities import xml_simple_writer 
 10  import StringIO 
 11   
 12   
 13  __author__ = 'Enrique Perez (perez_enrique@yahoo.com)' 
 14  __credits__ = 'Nophead <http://hydraraptor.blogspot.com/>\nArt of Illusion <http://www.artofillusion.org/>' 
 15  __date__ = '$Date: 2008/21/04 $' 
 16  __license__ = 'GNU Affero General Public License http://www.gnu.org/licenses/agpl.html' 
 17   
 18   
19 -def getAllPaths(paths, xmlObject):
20 'Get all paths.' 21 for archivableObject in xmlObject.archivableObjects: 22 paths += archivableObject.getPaths() 23 return paths
24
25 -def getAllTransformedPaths(transformedPaths, xmlObject):
26 'Get all transformed paths.' 27 for archivableObject in xmlObject.archivableObjects: 28 transformedPaths += archivableObject.getTransformedPaths() 29 return transformedPaths
30
31 -def getAllTransformedVertexes(transformedVertexes, xmlObject):
32 'Get all transformed vertexes.' 33 for archivableObject in xmlObject.archivableObjects: 34 transformedVertexes += archivableObject.getTransformedVertexes() 35 return transformedVertexes
36
37 -def getAllVertexes(vertexes, xmlObject):
38 'Get all vertexes.' 39 for archivableObject in xmlObject.archivableObjects: 40 vertexes += archivableObject.getVertexes() 41 return vertexes
42
43 -def processXMLElement(xmlElement):
44 'Process the xml element.' 45 evaluate.processArchivable( Dictionary, xmlElement)
46 47
48 -class Dictionary:
49 'A dictionary object.'
50 - def __init__(self):
51 'Add empty lists.' 52 self.archivableObjects = [] 53 self.xmlElement = None
54
55 - def __repr__(self):
56 'Get the string representation of this object info.' 57 output = xml_simple_writer.getBeginGeometryXMLOutput(self.xmlElement) 58 self.addXML( 1, output ) 59 return xml_simple_writer.getEndGeometryXMLString(output)
60
61 - def addXML(self, depth, output):
62 'Add xml for this object.' 63 attributeCopy = {} 64 if self.xmlElement != None: 65 attributeCopy = evaluate.getEvaluatedDictionaryByCopyKeys(['paths', 'target', 'vertexes'], self.xmlElement) 66 euclidean.removeElementsFromDictionary(attributeCopy, matrix.getKeysM()) 67 euclidean.removeTrueFromDictionary(attributeCopy, 'visible') 68 innerOutput = StringIO.StringIO() 69 self.addXMLInnerSection(depth + 1, innerOutput) 70 self.addXMLArchivableObjects(depth + 1, innerOutput) 71 xml_simple_writer.addBeginEndInnerXMLTag(attributeCopy, depth, innerOutput.getvalue(), self.getXMLLocalName(), output)
72
73 - def addXMLArchivableObjects(self, depth, output):
74 'Add xml for this object.' 75 xml_simple_writer.addXMLFromObjects( depth, self.archivableObjects, output )
76
77 - def addXMLInnerSection(self, depth, output):
78 'Add xml section for this object.' 79 pass
80
81 - def createShape(self):
82 'Create the shape.' 83 pass
84
85 - def getAttributeDictionary(self):
86 'Get attribute table.' 87 if self.xmlElement == None: 88 return {} 89 return self.xmlElement.attributeDictionary
90
92 'Get complex transformed path lists.' 93 complexTransformedPathLists = [] 94 for archivableObject in self.archivableObjects: 95 complexTransformedPathLists.append(euclidean.getComplexPaths(archivableObject.getTransformedPaths())) 96 return complexTransformedPathLists
97
98 - def getFabricationExtension(self):
99 'Get fabrication extension.' 100 return 'xml'
101
102 - def getFabricationText(self, addLayerTemplate):
103 'Get fabrication text.' 104 return self.__repr__()
105
106 - def getGeometryOutput(self):
107 'Get geometry output dictionary.' 108 visibleObjects = evaluate.getVisibleObjects(self.archivableObjects) 109 shapeOutput = [] 110 for visibleObject in visibleObjects: 111 visibleObjectOutput = visibleObject.getGeometryOutput() 112 if visibleObjectOutput != None: 113 shapeOutput.append(visibleObjectOutput) 114 if len(shapeOutput) < 1: 115 return None 116 return {self.getXMLLocalName() : {'shapes' : shapeOutput}}
117
118 - def getMatrix4X4(self):
119 "Get the matrix4X4." 120 return None
121
122 - def getMatrixChainTetragrid(self):
123 'Get the matrix chain tetragrid.' 124 return self.xmlElement.parentNode.xmlObject.getMatrixChainTetragrid()
125
126 - def getMinimumZ(self):
127 'Get the minimum z.' 128 return None
129
130 - def getPaths(self):
131 'Get all paths.' 132 return getAllPaths([], self)
133
134 - def getTransformedPaths(self):
135 'Get all transformed paths.' 136 return getAllTransformedPaths([], self)
137
138 - def getTransformedVertexes(self):
139 'Get all transformed vertexes.' 140 return getAllTransformedVertexes([], self)
141
142 - def getTriangleMeshes(self):
143 'Get all triangleMeshes.' 144 triangleMeshes = [] 145 for archivableObject in self.archivableObjects: 146 triangleMeshes += archivableObject.getTriangleMeshes() 147 return triangleMeshes
148
149 - def getType(self):
150 'Get type.' 151 return self.__class__.__name__
152
153 - def getVertexes(self):
154 'Get all vertexes.' 155 return getAllVertexes([], self)
156
157 - def getVisible(self):
158 'Get visible.' 159 return False
160
161 - def getXMLLocalName(self):
162 'Get xml local name.' 163 return self.__class__.__name__.lower()
164
165 - def setToXMLElement(self, xmlElement):
166 'Set the shape of this carvable object info.' 167 self.xmlElement = xmlElement 168 xmlElement.parentNode.xmlObject.archivableObjects.append(self)
169