Hallo
Ich hab da ein kleines Problem mit einer iLogic Regel. (Nicht alles stammt von mir!)
Die Regel soll von allen Bauteilen innerhalb einer Baugruppe das Blatt1:2 aus der dazugehörigen Zeichnung als DWG in ein eigenes Verzeichnis speichern.
Das funktioniert auch schon ganz gut.
Allerdings schaffe ich es nicht das Blatt1:2 als aktives Blatt zu schalten.
Ich hab den Fehler gekennzeichnet.
Wie kann ich in meiner Regel auf das Blatt1:2 umschalten?
Vielen Danke
3D-User
iLogic Regel:
Dim oAsmDoc As AssemblyDocument
oAsmDoc = ThisApplication.ActiveDocument
oAsmName = Left(oAsmDoc.DisplayName, Len(oAsmDoc.DisplayName) -4)
oFileName = ThisDoc.FileName(False) 'without extension
oDWGAddIn = ThisApplication.ApplicationAddIns.ItemById("{C24E3AC4-122E-11D5-8E91-0010B541CD80}")
oContext = ThisApplication.TransientObjects.CreateTranslationContext
oContext.Type = IOMechanismEnum.kFileBrowseIOMechanism
oOptions = ThisApplication.TransientObjects.CreateNameValueMap
oDataMedium = ThisApplication.TransientObjects.CreateDataMedium
oPath = "C:\Temp\" ' < Speicherort der Zeichnungen
strIniFile = "C:\Temp\dwg.ini" ' < Konfigurationsdatei für den DWG-Export
' Prüfen ob eine Baugruppe geöffnet ist
If ThisApplication.ActiveDocument.DocumentType <> kAssemblyDocumentObject Then
MessageBox.Show("Diese Funktion kann nur in einer Baugruppe (.iam) ausgeführt werden!", _
"INFO")
Exit Sub
End If
'Ordnername für die Zeichnungen
oFolder = oPath & "\" & oAsmName & " - Zeichnungen"
'Prüfen ob es den Ordner gibt, wenn nicht wird er erstellt
If Not System.IO.Directory.Exists(oFolder) Then
System.IO.Directory.CreateDirectory(oFolder)
End If
'Zeichnungen einer Baugruppe werden geöffnet
'Modelle und Zeichnungen müssen den gleichen Namen haben
'Modelle und Zeichnungen müssen im gleichen Ordner liegen
Dim oRefDocs As DocumentsEnumerator
oRefDocs = oAsmDoc.AllReferencedDocuments
Dim oRefDoc As Document
For Each oRefDoc In oRefDocs
idwPathName = Left(oRefDoc.FullDocumentName, Len(oRefDoc.FullDocumentName) - 4) & ".idw"
'Prüfen ob das Modell eine Zeichnung hat
If(System.IO.File.Exists(idwPathName)) Then
Dim oDrawDoc As DrawingDocument
oDrawDoc = ThisApplication.Documents.Open(idwPathName, True)
oFileName = Left(oRefDoc.DisplayName, Len(oRefDoc.DisplayName) -4)
On Error Resume Next 'PDF ist geüffnet oder schreibgeschützt, EXIT
'Dateityp des Modells wird erkannt (.iam oder .ipt)
oModellTyp = Right(oRefDoc.DisplayName, 4)
'Anzahl der Blätter In einer Zeichnung wird ermittelt
Dim oSheets As Sheets
oSheets = oDrawDoc.Sheets
' Prüfen ob das Modell eine Baugruppe ist mehr als ein Blatt hat
If oModellTyp = ".ipt" And oSheets.Count > 1 Then
'Blatt 2 aktivieren
oDocument = ThisApplication.ActiveDocument
Blatt1 = oDocument.sheets.item(1).Name
Blatt2 = oDocument.sheets.item(2).Name
ActiveSheet = ThisDrawing.Sheet(Blatt2) '<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Fehler
'DWG-Export vorbereiten
If oDWGAddIn.HasSaveCopyAsOptions(oDocument, oContext, oOptions) Then
oOptions.Value("Export_Acad_IniFile") = strIniFile
End If
'Pfad mit Dateinamen erstellen (ohne Rev)
oDataMedium.FileName = oFolder & "\" & oFileName & ".dwg"
'Datei speichern
oDWGAddIn.SaveCopyAs(oDocument, oContext, oOptions, oDataMedium)
'Zeichnung der Hauptbaugruppe schließen
oDrawDoc.Close
End If
'Zeichnung schließen
oDrawDoc.Close
End If
'wenn das Modell keine Zeichnung hat - nicht tun
Next
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP