3 Minuten
iLogic: Dokumententypen

Im vorherigen Post
iLogic: Struktureller Aufbau
konnte bereits Bekanntschaft mit zwei unterschiedlichen Dokumententypen gemacht werden: kAssemblyDocumentObject
und kDrawingDocumentObject
. Doch woher kommen diese Bezeichnungen und wieviele gibt es von ihnen? Dokumentiert sind diese Objekte auf der Autodesk Webseite zur Inventor API.
Documenttypes
Zur Auswahl und Abfrage stehen folgende DocumentTypes. Relevant für die tägliche Arbeit als Konstrukteur sind allerdings nur die ersten drei, nämlich Bauteil, Baugruppe und technische Zeichnung.
Name | Value | Beschreibung |
---|---|---|
kPartDocumentObject | 12290 | Part Document |
kAssemblyDocumentObject | 12291 | Assembly Document |
kDrawingDocumentObject | 12292 | Drawing Document |
kDesignElementDocumentObject | 12294 | Design Element Document |
kForeignModelDocumentObject | 12295 | Foreign Model Document |
kNestingDocument | 12298 | Nesting Document |
kNoDocument | 12297 | No Document |
kPresentationDocumentObject | 12293 | Presentation Document |
kSATFileDocumentObject | 12296 | SAT File Document |
kUnknownDocumentObject | 12289 | Unknown Document |
Dem geschulten Auge stellen sich sofort zwei Fragen:
- Wie unterscheide ich ein Standard-Bauteil von einem Blechbauteil?
- Wie unterscheide ich eine Standard-Baugruppe von einer Schweißbaugruppe?
Um diese Fragen zu beantworten, stellt die Inventor API ein Property namens DocumentSubType zur Verfügung.
DocumentSubTypes
Sämtliche zur Verfügung stehenden DocumentSubTypes sind auf der Autodesk Webseite gelistet. DocumentSubTypes werden mit Hilfe von GUIDs angegeben. Das steht für Global Unique Identitfier. Diese GUID ist eine Zeichenfolge vom Typ String
, die stellvertretend für einen Dokumententyp steht.
Parts
Common Name | GUID |
---|---|
Normal Part | “4D29B490-49B2-11D0-93C3-7E0706000000” |
SheetMetal Part | “9C464203-9BAE-11D3-8BAD-0060B0CE6BB4” |
Gereric Proxy | “92055419-B3FA-11D3-A479-00C04F6B9531” |
Compatibility Proxy | “9C464204-9BAE-11D3-8BAD-0060B0CE6BB4” |
Catalog Proxy | “9C88D3AF-C3EB-11D3-B79E-0060B0F159EF” |
Molded Part | “4D8D80D4-F5B0-4460-8CEA-4CD222684469” |
Assemblies
Common Name | GUID |
---|---|
Normal Assembly | “E60F81E1-49B3-11D0-93C3-7E0706000000” |
Welded Assembly | “28EC8354-9024-440F-A8A2-0E0E55D635B0” |
Drawing
Common Name | GUID |
---|---|
Drawing Document | “BBF9FDF1-52DC-11D0-8C04-0800090BE8EC” |
Design Element
Common Name | GUID |
---|---|
Design Element | “62FBB030-24C7-11D3-B78D-0060B0F159EF” |
Presentations
Common Name | GUID |
---|---|
Normal Presentation | “76283A80-50DD-11D3-A7E3-00C04F79D7BC” |
Composite Presentation | “A2B4C17D-F0D2-4C0F-9799-DD5F71DFB291” |
Design View Document
Common Name | GUID |
---|---|
Design View Document | “81B95C5D-8E31-4F65-9790-CCF6ECABD141” |
Codebeispiele
Im folgenden ein paar Beispiele, die sowohl den DocumentType abfragen, als auch die GUID nutzen.
Abfragen des DocumentTypes
Wer generell ermitteln möchte, ob es sich bei einem Dokument bspw. um ein Bauteil handelt, kann dies wie im vorangegangenen Post iLogic: Struktureller Aufbau beschrieben folgendermaßen erreichen:
Dim oDoc As Document = ThisDoc.Document
If oDoc.DocumentType = kPartDocumentObject Then
MsgBox("Das geöffnete Dokument ist ein Bauteil.")
Else
MsgBox("Das geöffnete Dokument ist kein Bauteil.")
End If
Alternativ kann auch explizit der DocumentTypeEnum bei der Abfrage verwendet werden. Das Ergebnis ist das selbe:
Dim oDoc As Document = ThisDoc.Document
If oDoc.DocumentType = DocumentTypeEnum.kPartDocumentObject Then
MsgBox("Das geöffnete Dokument ist ein Bauteil.")
Else
MsgBox("Das geöffnete Dokument ist kein Bauteil.")
End If
Faustformel: Möchte man lediglich grob Ermitteln, ob es sich bei einem Dokument bspw. um ein Bauteil, eine Baugruppe oder eine Zeichnung handelt, reicht eine Abfrage des DocumentType.
Abfragen des DocumentSubTypes
Faustformel: Möchte man eine spezifischere Abfrage tätigen, die nicht nur prüft ob es sich bei einem Dokument bspw. um ein Bauteil, sondern explizit um ein Blechtbauteil handelt, muss der DocumentSubType in Verbindung mit der GUID genutzt werden:
Dim oDoc as Document = ThisDoc.Document
Dim oSubType as String = oDoc.DocumentSubType.DocumentSubTypeID
If oSubType = "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" then
MessageBox ("Das Bauteil ist ein Blechbauteil.")
Else
MessageBox ("Das Bauteil ist kein Blechbauteil.")
End if
Weitergedacht
Im vorherigen Post iLogic: Struktureller Aufbau wurden Funktionen und Subroutinen vorgestellt. Wer häufig eine Unterscheidung zwischen Standard-Bauteilen und Blechbauteilen oder zwischen Standard-Baugruppen und Schweißbaugruppen benötigt, kann eine solche Abfrage auch in einer Funktion abbilden und wiederverwenden. Diese kann dann wiederum mit der Abfrage des DocumentType kombiniert werden:
Sub Main()
Dim oDoc As Document = ThisDoc.Document
If oDoc.DocumentType = kPartDocumentObject Then
If IsSheetMetal() Then
MsgBox("Das Bauteil ist ein Blechbauteil")
Else
MsgBox("Das Bauteil ist zwar ein Bauteil, aber kein Blechbauteil.)
End If
End If
End Sub
Private Function IsSheetMetal() As Boolean
If ThisDoc.Document.DocumentSubType.DocumentSubTypeID = "{9C464203-9BAE-11D3-8BAD-0060B0CE6BB4}" Then
Return True
Else
Return False
End if
End Function