def __init__(self): #Pointers and data that needs updating self.DirectoryDataPointer = IGESPointer() # Pointer, First line of Directory Data self.ParameterDataPointer = IGESPointer() # Pointer, First line of Parameter Data self.ParameterLineCount = int(0) # Integer, 2.2.4.4.14 Relies on knowing how many parameter lines are in object definition #IGES parameter data information self.ParameterData = list() # IGES directory data information See 2.2.4.4 self.EntityType = IGESEntityTypeNumber() # Integer, Table 3 Page 38 self.Structure = int(0) # Integer/Pointer, 2.2.4.4.3 Not using macro instance self.LineFontPattern = IGESLineFontPattern() # Integer/Pointer, 2.2.4.4.4 table self.Level = int(0) # Integer/Pointer, 2.2.4.4.5 ??? self.View = int(0) # Null/Pointer, 2.2.4.4.6 Visable in all views self.TransfrmMat = int(0) # Null/Pointer, 2.2.4.4.7 0=no transform -> see #4.21 self.LabelDispAssoc = int(0) # Null/Pointer, 2.2.4.4.8 default self.StatusNumber = IGESStatusNumber() # Integer, 2.2.4.4.9 self.LineWeightNum = int(0) # Integer, 2.2.4.4.12 use default of reciever self.Color = IGESColorNumber() # Integer/Pointer, 2.2.4.4.13 self.FormNumber = int(0) # Integer, 2.2.4.4.15 default self.EntityLabel = "" # String, 2.2.4.4.18 Object Name self.EntitySubScript = "" self.add_extended_data = False # Some items seem to needs this whilst other do not #Compiled items self.CompiledDirectory = list() self.CompiledParameter = list()
def __init__(self): #Pointers and data that needs updating self.DirectoryDataPointer = IGESPointer( ) # Pointer, First line of Directory Data self.ParameterDataPointer = IGESPointer( ) # Pointer, First line of Parameter Data self.ParameterLineCount = int( 0 ) # Integer, 2.2.4.4.14 Relies on knowing how many parameter lines are in object definition #IGES parameter data information self.ParameterData = list() # IGES directory data information See 2.2.4.4 self.EntityType = IGESEntityTypeNumber( ) # Integer, Table 3 Page 38 self.Structure = int( 0) # Integer/Pointer, 2.2.4.4.3 Not using macro instance self.LineFontPattern = IGESLineFontPattern( ) # Integer/Pointer, 2.2.4.4.4 table self.Level = int(0) # Integer/Pointer, 2.2.4.4.5 ??? self.View = int(0) # Null/Pointer, 2.2.4.4.6 Visable in all views self.TransfrmMat = int( 0) # Null/Pointer, 2.2.4.4.7 0=no transform -> see #4.21 self.LabelDispAssoc = int(0) # Null/Pointer, 2.2.4.4.8 default self.StatusNumber = IGESStatusNumber() # Integer, 2.2.4.4.9 self.LineWeightNum = int( 0) # Integer, 2.2.4.4.12 use default of reciever self.Color = IGESColorNumber() # Integer/Pointer, 2.2.4.4.13 self.FormNumber = int(0) # Integer, 2.2.4.4.15 default self.EntityLabel = "" # String, 2.2.4.4.18 Object Name self.EntitySubScript = "" self.add_extended_data = False # Some items seem to needs this whilst other do not #Compiled items self.CompiledDirectory = list() self.CompiledParameter = list()
class IGESItemData: """IGES Item Data When adding to IGES File, 1) Get DirectoryDataPointer 2) Compile ParameterData (which relies on the DirectoryDataPointer) 3) Update ParameterLineCount 4) get ParameterDataPointer 5) compile directory data (which relies on ParameterLineCount and ParameterDataPointer) """ def __init__(self): #Pointers and data that needs updating self.DirectoryDataPointer = IGESPointer( ) # Pointer, First line of Directory Data self.ParameterDataPointer = IGESPointer( ) # Pointer, First line of Parameter Data self.ParameterLineCount = int( 0 ) # Integer, 2.2.4.4.14 Relies on knowing how many parameter lines are in object definition #IGES parameter data information self.ParameterData = list() # IGES directory data information See 2.2.4.4 self.EntityType = IGESEntityTypeNumber( ) # Integer, Table 3 Page 38 self.Structure = int( 0) # Integer/Pointer, 2.2.4.4.3 Not using macro instance self.LineFontPattern = IGESLineFontPattern( ) # Integer/Pointer, 2.2.4.4.4 table self.Level = int(0) # Integer/Pointer, 2.2.4.4.5 ??? self.View = int(0) # Null/Pointer, 2.2.4.4.6 Visable in all views self.TransfrmMat = int( 0) # Null/Pointer, 2.2.4.4.7 0=no transform -> see #4.21 self.LabelDispAssoc = int(0) # Null/Pointer, 2.2.4.4.8 default self.StatusNumber = IGESStatusNumber() # Integer, 2.2.4.4.9 self.LineWeightNum = int( 0) # Integer, 2.2.4.4.12 use default of reciever self.Color = IGESColorNumber() # Integer/Pointer, 2.2.4.4.13 self.FormNumber = int(0) # Integer, 2.2.4.4.15 default self.EntityLabel = "" # String, 2.2.4.4.18 Object Name self.EntitySubScript = "" self.add_extended_data = False # Some items seem to needs this whilst other do not #Compiled items self.CompiledDirectory = list() self.CompiledParameter = list() def AddParameters(self, data): try: self.ParameterData.extend(list(data)) except Exception as inst: raise TypeError(inst) def CompileDirectory(self): items = [ str(self.EntityType), # Item 1 self.ParameterDataPointer, # Item 2 self.Structure, # Item 3 str(self.LineFontPattern), # Item 4 self.Level, # Item 5 self.View, # Item 6 self.TransfrmMat, # Item 7 self.LabelDispAssoc, # Item 8 str(self.StatusNumber), # Item 9 self.LineWeightNum, # Item 12 self.Color.getValue(), # Item 13 self.ParameterLineCount, # Item 14 self.FormNumber, # Item 15 "", "", # Item 16, 17 Reserved self.EntityLabel[:8], # Item 18 self.EntitySubScript ] # Item 19 Line1Template = "{p[0]:>8}{p[1]:>8}{p[2]:>8}{p[3]:>8}{p[4]:>8}{p[5]:>8}{p[6]:>8}{p[7]:>8}{p[8]:>8}" Line2Template = "{p[0]:>8}{p[9]:>8}{p[10]:>8}{p[11]:>8}{p[12]:>8}{p[13]:>8}{p[14]:>8}{p[15]:>8}{p[16]:>8}" self.CompiledDirectory = [Line1Template.format(p=items)] self.CompiledDirectory.append(Line2Template.format(p=items)) return self.CompiledDirectory def CompileParameters(self, IGESGlobal): #IGESGlobal is required because we need IGESGlobal.ParameterDelimiterCharacter cdata = [self.EntityType.value] cdata.extend(self.ParameterData[:]) if self.add_extended_data: cdata.extend([0, 0]) self.CompiledParameter, self.ParameterLineCount = IGESCompile.IGESUnaligned( cdata, IGESGlobal, 'P', self.DirectoryDataPointer.data) return self.CompiledParameter
class IGESItemData: """IGES Item Data When adding to IGES File, 1) Get DirectoryDataPointer 2) Compile ParameterData (which relies on the DirectoryDataPointer) 3) Update ParameterLineCount 4) get ParameterDataPointer 5) compile directory data (which relies on ParameterLineCount and ParameterDataPointer) """ def __init__(self): #Pointers and data that needs updating self.DirectoryDataPointer = IGESPointer() # Pointer, First line of Directory Data self.ParameterDataPointer = IGESPointer() # Pointer, First line of Parameter Data self.ParameterLineCount = int(0) # Integer, 2.2.4.4.14 Relies on knowing how many parameter lines are in object definition #IGES parameter data information self.ParameterData = list() # IGES directory data information See 2.2.4.4 self.EntityType = IGESEntityTypeNumber() # Integer, Table 3 Page 38 self.Structure = int(0) # Integer/Pointer, 2.2.4.4.3 Not using macro instance self.LineFontPattern = IGESLineFontPattern() # Integer/Pointer, 2.2.4.4.4 table self.Level = int(0) # Integer/Pointer, 2.2.4.4.5 ??? self.View = int(0) # Null/Pointer, 2.2.4.4.6 Visable in all views self.TransfrmMat = int(0) # Null/Pointer, 2.2.4.4.7 0=no transform -> see #4.21 self.LabelDispAssoc = int(0) # Null/Pointer, 2.2.4.4.8 default self.StatusNumber = IGESStatusNumber() # Integer, 2.2.4.4.9 self.LineWeightNum = int(0) # Integer, 2.2.4.4.12 use default of reciever self.Color = IGESColorNumber() # Integer/Pointer, 2.2.4.4.13 self.FormNumber = int(0) # Integer, 2.2.4.4.15 default self.EntityLabel = "" # String, 2.2.4.4.18 Object Name self.EntitySubScript = "" self.add_extended_data = False # Some items seem to needs this whilst other do not #Compiled items self.CompiledDirectory = list() self.CompiledParameter = list() def AddParameters(self, data): try: self.ParameterData.extend(list(data)) except Exception as inst: raise TypeError(inst) def CompileDirectory(self): items = [self.EntityType.getValue(), # Item 1 self.ParameterDataPointer.data, # Item 2 self.Structure, # Item 3 self.LineFontPattern.getValue(), # Item 4 self.Level, # Item 5 self.View, # Item 6 self.TransfrmMat, # Item 7 self.LabelDispAssoc, # Item 8 str(self.StatusNumber), # Item 9 self.LineWeightNum, # Item 12 self.Color.getValue(), # Item 13 self.ParameterLineCount, # Item 14 self.FormNumber, # Item 15 "", "", # Item 16, 17 Reserved self.EntityLabel[:8], # Item 18 self.EntitySubScript] # Item 19 # some entity types require that some values are left out if self.EntityType.getValue() == 404: # Drawing Entity Line1Template = "{p[0]:>8}{p[1]:>8}{p[8]:>56}" Line2Template = "{p[0]:>8}{p[11]:>24}{p[12]:>8}{p[13]:>8}{p[14]:>8}{p[15]:>8}{p[16]:>8}" elif self.EntityType.getValue() == 406: # Property Entity Line1Template = "{p[0]:>8}{p[1]:>8}{p[4]:>24}{p[8]:>32}" Line2Template = "{p[0]:>8}{p[11]:>24}{p[12]:>8}{p[13]:>8}{p[14]:>8}{p[15]:>8}{p[16]:>8}" elif self.EntityType.getValue() == 410: # View Entity Line1Template = "{p[0]:>8}{p[1]:>8}{p[6]:>40}{p[8]:>16}" Line2Template = "{p[0]:>8}{p[11]:>24}{p[12]:>8}{p[13]:>8}{p[14]:>8}{p[15]:>8}{p[16]:>8}" else: Line1Template = "{p[0]:>8}{p[1]:>8}{p[2]:>8}{p[3]:>8}{p[4]:>8}{p[5]:>8}{p[6]:>8}{p[7]:>8}{p[8]:>8}" Line2Template = "{p[0]:>8}{p[9]:>8}{p[10]:>8}{p[11]:>8}{p[12]:>8}{p[13]:>8}{p[14]:>8}{p[15]:>8}{p[16]:>8}" self.CompiledDirectory = [Line1Template.format(p = items)] self.CompiledDirectory.append(Line2Template.format(p = items)) return self.CompiledDirectory def CompileParameters(self, IGESGlobal): #IGESGlobal is required because we need IGESGlobal.ParameterDelimiterCharacter cdata = [self.EntityType.value] cdata.extend(self.ParameterData[:]) if self.add_extended_data: cdata.extend([0, 0]) self.CompiledParameter, self.ParameterLineCount = IGESCompile.IGESUnaligned(cdata, IGESGlobal, 'P', self.DirectoryDataPointer.data) return self.CompiledParameter