| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Zeichenressourcen per VBA einfügen (2399 mal gelesen)
|
axi92 Mitglied Konstrukteur
Beiträge: 685 Registriert: 20.02.2010 Inventor 2014 64bit SP2 Vault Basic 2014 64bit SP1 HP Z200 Win 7 64bit 16GB RAM CPU: i5 3,2GHz GPU: Nvidia Quadro K600
|
erstellt am: 27. Mrz. 2014 10:41 <-- editieren / zitieren --> Unities abgeben:
Ist es möglich Zeichnungsressourcen per VBA einzufügen? Wenn ja wie? Weil ich möchte nicht immer den neuen Schriftkopf aus der Vorlage raus kopieren und in die aktuelle Zeichnung einfügen... ------------------ Grüße aus Wien Philipp http://black-evolution.de/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADboogie Mitglied Dipl.-Ing. Konstrukteur für Luftführungssysteme
Beiträge: 241 Registriert: 05.08.2009 Intel Xeon@ 3,07 GHz NVIDIA Quadro 2000 Windows 7, SP1, 64Bit Inventor 2012 (SP2), 2014 (SP2)
|
erstellt am: 27. Mrz. 2014 12:42 <-- editieren / zitieren --> Unities abgeben: Nur für axi92
Mahlzeit, hatten wir - glaube ich - schon mal hier. Über eine externe iLogic Regel (Copyright by myself) Dim oNewDocument As DrawingDocument oNewDocument = ThisApplication.ActiveDocument If oNewDocument.ActiveSheet.TitleBlock.Definition.Name = "KKopf_CAV" Then MsgBox (oNewDocument.ActiveSheet.TitleBlock.Definition.Name & " bereits vorhanden!") Else ThisApplication.SilentOperation = True ' versteckt arbeiten Dim oSourceDocument As DrawingDocument oSourceDocument = ThisApplication.Documents.Open("U:\CAD\INVENTOR\Templates\2012\KNorm_2012.idw") ' Get the new source title block definition. Dim oSourceTitleBlockDef As TitleBlockDefinition oSourceTitleBlockDef = oSourceDocument.ActiveSheet.TitleBlock.Definition ' Get the new title block definition. Dim oNewTitleBlockDef As TitleBlockDefinition oNewTitleBlockDef = oSourceTitleBlockDef.CopyTo(oNewDocument) oSourceDocument.Close ThisApplication.SilentOperation = False ' versteckt arbeiten ' Iterate through the sheets. Dim oSheet As Sheet For Each oSheet In oNewDocument.Sheets oSheet.Activate oSheet.TitleBlock.Delete Call oSheet.AddTitleBlock(oNewTitleBlockDef) Next End If Du musst halt nur Deine eigene Vorlage und die Bezeichnung deines Schriftkopfes einsetzen.
------------------ Gruß aus Aachen, Walter *** Man kann nicht alles gleichzeitig machen, aber man kann alles gleichzeitig sein lassen *** [Diese Nachricht wurde von CADboogie am 27. Mrz. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
axi92 Mitglied Konstrukteur
Beiträge: 685 Registriert: 20.02.2010 Inventor 2014 64bit SP2 Vault Basic 2014 64bit SP1 HP Z200 Win 7 64bit 16GB RAM CPU: i5 3,2GHz GPU: Nvidia Quadro K600
|
erstellt am: 27. Mrz. 2014 13:07 <-- editieren / zitieren --> Unities abgeben:
Wie kann ich abfragen das es nur bei idws geht? Und kann ich den Ereignisauslöser nicht nur Dokument bezogen machen sondern auf alles automatisch anwenden? ------------------ Grüße aus Wien Philipp http://black-evolution.de/ [Diese Nachricht wurde von axi92 am 27. Mrz. 2014 editiert.] [Diese Nachricht wurde von axi92 am 27. Mrz. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADboogie Mitglied Dipl.-Ing. Konstrukteur für Luftführungssysteme
Beiträge: 241 Registriert: 05.08.2009 Intel Xeon@ 3,07 GHz NVIDIA Quadro 2000 Windows 7, SP1, 64Bit Inventor 2012 (SP2), 2014 (SP2)
|
erstellt am: 27. Mrz. 2014 16:15 <-- editieren / zitieren --> Unities abgeben: Nur für axi92
..so, z. B. If Not ThisApplication.ActiveDocument.DocumentType = kDrawingDocumentObject Then MsgBox ("Start ist nur in der Ableitungsumgebung (IDW) möglich!!", vbOKOnly, "Error") Else .. End if Ich glaube, dass der Ereignisauslöser Dokument bezogen ist. ------------------ Gruß aus Aachen, Walter *** Man kann nicht alles gleichzeitig machen, aber man kann alles gleichzeitig sein lassen *** Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
axi92 Mitglied Konstrukteur
Beiträge: 685 Registriert: 20.02.2010 Inventor 2014 64bit SP2 Vault Basic 2014 64bit SP1 HP Z200 Win 7 64bit 16GB RAM CPU: i5 3,2GHz GPU: Nvidia Quadro K600
|
erstellt am: 31. Mrz. 2014 07:40 <-- editieren / zitieren --> Unities abgeben:
Habe jetzt beim Übertragen eine Fehlermeldung bekommen, kann mit dieser aber nichts anfangen: System.NullReferenceException: Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. bei LmiRuleScript.Main() bei Autodesk.iLogic.Exec.AppDomExec.ExecRuleInAssembly(Assembly assem) bei iLogic.RuleEvalContainer.ExecRuleEval(String execRule) Die Frage die sich mir auch noch stellt kann man es auch ersetzen? Weil bei mir wird eine Kopie erstellt da ja schon eines vorhanden ist. ------------------ Grüße aus Wien Philipp http://black-evolution.de/
[Diese Nachricht wurde von axi92 am 31. Mrz. 2014 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 31. Mrz. 2014 18:30 <-- editieren / zitieren --> Unities abgeben: Nur für axi92
Hallo Wenn ich mich recht erinner in der Zeile
Code: oNewTitleBlockDef = oSourceTitleBlockDef.CopyTo(oNewDocument)
noch ein True hinten dran Code: oNewTitleBlockDef = oSourceTitleBlockDef.CopyTo(oNewDocument,True)
Die Fehlermeldung besagt mM das deine Hauptroutine eine Subroutine aufrufen will, aber vermutlich ist der String execRule mit dem Namen der Regel leer? ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
axi92 Mitglied Konstrukteur
Beiträge: 685 Registriert: 20.02.2010 Inventor 2014 64bit SP2 Vault Basic 2014 64bit SP1 HP Z200 Win 7 64bit 16GB RAM CPU: i5 3,2GHz GPU: Nvidia Quadro K600
|
erstellt am: 01. Apr. 2014 07:21 <-- editieren / zitieren --> Unities abgeben:
|
Bluejay Mitglied Ingenieur
Beiträge: 198 Registriert: 14.05.2007 Inventor 2011 for Simulation<P>Microsoft Windows XP Professional<P>Dell Precision T3400 Intel(R) Core(TM)2 Duo CPU E6750 @2,66 GHz 3,00 GB RAM
|
erstellt am: 03. Apr. 2014 11:58 <-- editieren / zitieren --> Unities abgeben: Nur für axi92
|
axi92 Mitglied Konstrukteur
Beiträge: 685 Registriert: 20.02.2010 Inventor 2014 64bit SP2 Vault Basic 2014 64bit SP1 HP Z200 Win 7 64bit 16GB RAM CPU: i5 3,2GHz GPU: Nvidia Quadro K600
|
erstellt am: 03. Apr. 2014 12:01 <-- editieren / zitieren --> Unities abgeben:
Danke habe jetzt auch schon was für mich passt =) Code:
Public Sub Drawing_res_update() Dim oApp As Application Set oApp = ThisApplication Dim oDoc As Document Set oDoc = oApp.ActiveDocument Dim newDoc As Document Set newDoc = oApp.Documents.Open("C:\Inventor_WS\Makros\Zeichnungsressourcen.idw", False) Dim oTitleDef As TitleBlockDefinition Dim iZahl As Integer For iZahl = newDoc.TitleBlockDefinitions.Count To 1 Step -1 Set oTitleDef = newDoc.TitleBlockDefinitions.item(iZahl) Call oTitleDef.CopyTo(oDoc, True) Next iZahl End Sub
------------------ Grüße aus Wien Philipp http://black-evolution.de/ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |