Menu

Autodesk Inventor Zeichnungsressourcen austauschen – IDW-Update

IDW-Update ist eine tolle Erweiterung für Autodesk Inventor. Mit diesem Tool können ausgewählte Zeichnungsressourcen ersetzt werden. Als Vorlage dient eine andere Zeichnung, in diesem Beispiel die Norm.idw (Norm.dwg funktioniert auch). Als Ressourcen können die Zeichnungsrahmen und das Schriftfeld definiert werden.

Funktionen im Überblick:

  • löscht alte Schriftfelder aus aktiver Zeichnung (aus den Zeichnungsressourcen und aus Blatt)
  • löscht alte Zeichnungsrahmen aus aktiver Zeichnung (aus den Zeichnungsressourcen und aus Blatt)
  • kopiert neues Schriftfeld aus Vorlagendatei in die aktive Zeichnung (in die Zeichnungsressourcen)
  • kopiert neue Zeichnungsrahmen aus Vorlagedatei in die aktive Zeichnung (in die Zeichnungsressourcen)
  • fügt neues Schriftfeld aus den Zeichnungsressourcen ins aktive Blatt ein
  • fügt neuen Schriftrahmen aus den Zeichnungsressourcen in aktive Blatt ein (das Blattformat wird
    berücksichtigt)

Implementieren kann man dieses Tool über den Programmpunkt “VBA-Editor” (Extras -> VBA-Editor).
Die Autodesk Inventor VBA Erweiterung ist versionsunabhängig (Inventor LT wird nicht unterstützt).
In diesem Fall habe ich das Tool mit Autodesk Inventor 2018 & 2019 genutzt.

Sub IDW_Updaten()

'ersetzt die Zeichnungsressourcen der aktuellen Zeichnung durch die der Templateressourcen

    If ThisApplication.ActiveDocumentType = kDrawingDocumentObject Then
    Dim ZielDoc As DrawingDocument
    Set ZielDoc = ThisApplication.ActiveDocument
    Dim Blatt As Sheet
    Set Blatt = ZielDoc.ActiveSheet
    Dim i, j As Integer
    Dim zahl1 As Long
    Dim zahl2 As Long
  
'auslesen des bisher eingefügten Zeichnungsrahmen ( diese Funktion kann entfernt werden, wenn keine Blattformate übertragen werden sollen)
'anhand der ausgewählten Blattgröße, wird der neue Rahmen gesetzt

    Dim Blatthoehe As Double
    Dim Blattbreite As Double
    Blattbreite = Blatt.Width
    Blatthoehe = Blatt.Height
    Dim Blattgroesse As String
    Dim Format As String
    Blattgroesse = Blattbreite & "x" & Blatthoehe

        Select Case Blattgroesse
            Case "21x29,7"
            Format = "A4"
            Case "42x29,7"
            Format = "A3"
            Case "59,4x42"
            Format = "A2"
            Case "84,1x59,4"
            Format = "A1"
            Case "118,9x84,1"
            Format = "A0"
            Case "148,6x84,1"
            Format = "A0x125"
            Case "178,4x84,1"
            Format = "A0x150"
        End Select

'vorhandenen Blattformate aus aktiver Zeichnung löschen

    zahl1 = ZielDoc.SheetFormats.Count
    For i = 1 To zahl1
    On Error Resume Next
    ZielDoc.SheetFormats.Item(zahl1 + 1 - i).Delete
    Next

'vorhandenes Schriftfeld aus aktiver Zeichnung löschen

    On Error Resume Next
    Blatt.TitleBlock.Delete
    zahl1 = ZielDoc.TitleBlockDefinitions.Count
    For i = 1 To zahl1
    On Error Resume Next
    ZielDoc.TitleBlockDefinitions.Item(zahl1 + 1 - i).Delete
    Next

'vorhandenen Rahmen aus aktiver Zeichnung löschen

    On Error Resume Next
    Blatt.Border.Delete
    j = ZielDoc.BorderDefinitions.Count
    For i = 1 To j
    ZielDoc.BorderDefinitions.Item(j + 1 - i).Delete
    Next

'Ressourcen der Template definieren und Kopieren

    Dim oSketchedSymbolDef As SketchedSymbolDefinition
    Dim QuellDoc As DrawingDocument
'im folgenden Abschnitt muss der Pfad des Templates angegeben werden
    Set QuellDoc = ThisApplication.Documents.Open("C:\Inventor\Templates\Norm.idw", False)

'je nach zu übertragenden Blattformaten müssen die folgenden Zeilen entfernt oder erweitert werden
    Dim QuellRahmen1, QuellRahmen2, QuellRahmen3, QuellRahmen4, QuellRahmen5, QuellRahmen6, QuellRahmen7 As BorderDefinition
    Set QuellRahmen1 = QuellDoc.BorderDefinitions.Item("A3")
    Set QuellRahmen2 = QuellDoc.BorderDefinitions.Item("A2")
    Set QuellRahmen3 = QuellDoc.BorderDefinitions.Item("A1")
    Set QuellRahmen4 = QuellDoc.BorderDefinitions.Item("A0")
    Set QuellRahmen5 = QuellDoc.BorderDefinitions.Item("A0x125")
    Set QuellRahmen6 = QuellDoc.BorderDefinitions.Item("A0x150")
    Set QuellRahmen7 = QuellDoc.BorderDefinitions.Item("A4")

    Dim ZielRahmen1, ZielRahmen2, ZielRahmen3, ZielRahmen4, ZielRahmen5, ZielRahmen6, ZielRahmen7 As BorderDefinition
    Set ZielRahmen1 = QuellRahmen1.CopyTo(ZielDoc, True)
    Set ZielRahmen2 = QuellRahmen2.CopyTo(ZielDoc, True)
    Set ZielRahmen3 = QuellRahmen3.CopyTo(ZielDoc, True)
    Set ZielRahmen4 = QuellRahmen4.CopyTo(ZielDoc, True)
    Set ZielRahmen5 = QuellRahmen5.CopyTo(ZielDoc, True)
    Set ZielRahmen6 = QuellRahmen6.CopyTo(ZielDoc, True)
    Set ZielRahmen7 = QuellRahmen7.CopyTo(ZielDoc, True)

    Dim QuellSchriftfeld As TitleBlockDefinition
'Wert der Klammer muss das zu kopierende Schriftfeld sein
    Set QuellSchriftfeld1 = QuellDoc.TitleBlockDefinitions.Item("Schriftfeld Contelos")
    Dim ZielSchriftfeld1 As TitleBlockDefinition
    Set ZielSchriftfeld1 = QuellSchriftfeld1.CopyTo(ZielDoc, True)

'fügt den ausgelesenen Zeichnungsrahmen ins aktive Blatt ein

    Call Blatt.AddBorder(Format)
    
'fügt neues Schriftfeld in aktive Blatt ein
'auch hier muss das richtige Schriftfeld angegeben werden
        
    Call Blatt.AddTitleBlock("Schriftfeld Contelos")


'schaltet Browserleiste wieder ein

    ThisApplication.UserInterfaceManager.ShowBrowser = True
        Else: MsgBox ("Ein Schriftfeld kann nur in eine Zeichnung eingefügt werden!")
        End If

'an ende wird die Vorlage wieder geschlossen und die aktualisierte  Zeichnung gespeichert

    QuellDoc.Close
    ZielDoc.Save
  
    End Sub

Björn Rübesamen

Application Engineer / Produktdesign & Fertigung

Beitrag teilen

Share on xing
Share on linkedin
Share on facebook
Share on email