Example #1
0
    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()
Example #2
0
    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()
Example #3
0
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
Example #4
0
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