| | | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: Problem: neues Dokument in Baugruppe (bestehendes öffnen/aus Vorlage) (1077 mal gelesen)
|
C-Hoppen Mitglied CAD-Trainer
Beiträge: 51 Registriert: 23.10.2006 Inventor 2019-22 Professional Produkt Design Suite, Factory Design Suite Win 10 Core i9/9900k @ 5 GHz 32 GB RAM GeForce RTX 270 --- Sinclair ZX 81 mit 16 KB RAM-Erweiterung und High-Res-Platine für Grafikauflösung 256 x 256 Pixel, Grundig-Kassettenrekorder, S/W-Fernseher ;-)
|
erstellt am: 11. Jul. 2009 11:52 <-- editieren / zitieren --> Unities abgeben:
Hallo zusammen, ich will in einer Baugruppe ein neues Bauteil einfügen, entweder ein bestehende öffnen, oder ein neues anlegen aus Vorlage. Umgebung ist Visual Studio 2008 (VB), als Standalone.exe und Inventor 2010 Prof. Zunächst muss ich ja Inventor.Application definieren:
Code:
Public ThisApplication As Inventor.Application Public o_Doc As Document Public o_AsmDoc As AssemblyDocument Public o_CompOccs As ComponentOccurrences ----------------------------------------- ... Dim ThisApplication As Inventor.Application = Nothing Try ThisApplication = System.Runtime.InteropServices.Marshal.GetActiveObject("Inventor.Application") Catch ex As Exception MsgBox("Inventor muss gestartet und eine Baugruppe geöffnet sein!") End End Try ...
Dann kann ich problemlos auf das aktive Dokument zugreifen:
Code:
o_Doc = ThisApplication.ActiveDocument Dim i_RefsNum As Integer Try o_AsmDoc = o_Doc o_CompOccs = o_AsmDoc.ComponentDefinition.Occurrences i_RefsNum = o_CompOccs.Count ...
Was auch problemlos geht, ist ein Auswahlfilter:
Code:
... oInteractEvents = ThisApplication.CommandManager.CreateInteractionEvents oInteractEvents.InteractionDisabled = False oSelectEvents = oInteractEvents.SelectEvents oSelectEvents.AddSelectionFilter(filter) oInteractEvents.Start() ...
Wenn ich aber versuche, ein bestehendes Bauteil hinzuzufügen, oder ein neues aus Vorlage, gibts immer einen Fehler, den ich nicht verstehe. (NullReferenceExeption ... Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt...)
Code:
... Dim oPartDoc1 As PartDocument Dim TemplateDoc As String TemplateDoc = ThisApplication.FileManager.GetTemplateFile(DocumentTypeEnum.kPartDocumentObject) oPartDoc1 = ThisApplication.Documents.Add(DocumentTypeEnum.kPartDocumentObject, TemplateDoc, True) ...
Gleiche Fehlermeldung, wenn ich Pfade abfragen will:
Code:
Dim sWorkgroups As String() Dim sNames As String() Dim ii As Integer ThisApplication.FileLocations.Workgroups(ii, sNames, sWorkgroups)
oder bei
Code:
Dim oTG As TransientGeometry oTG = ThisApplication.TransientGeometry
Im VBA funktioniert es, im VB2008 nicht :-(.Hat irgendwer einen Tipp? Würde mich freuen! Gruß, Christoph Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
daywa1k3r Moderator Softwareentwickler
Beiträge: 3497 Registriert: 01.08.2002 Desktop: 3.3GHz;8GB;SSD OCZ Vertex 3;Gainward Phantom GTX570 Laptop: Alienware m17x Win7, Inventor2012
|
erstellt am: 11. Jul. 2009 12:59 <-- editieren / zitieren --> Unities abgeben: Nur für C-Hoppen
Hallo, befindet sich der ganze Code in einer Datei/Klasse? Sieht für mich nach einem Gültigkeitsbereich Problem aus. Wie wenn ThisApplication nicht zugewiesen ist, obwohl du ganz am Anfang sagst, dass die zugewiesen ist. Das bringt mich zur Annahme, dass ThisApplication da einfach Null als Wert hat, weil die sich ausserhalb von dem Gültigkeitsbereich von der oberen ThisApplication befindet. Normalerweise kann man aber in diesem Fall auch nicht kompilieren, zumindest in C# nicht, denn der Compiler erkennt, dass es sich um zwei verschiedene Variablen handelt. VB.NET ist in einigen Sachen tolleranter, was IMHO der Anfang vom Ende ist. Daher, wenn .NET dann C#. PS: Benutze mal den Debugger um genau festzustellen wo und was da Null ist. PPS: Ist das eine x86, x64 oder Any CPU Anwendung?
------------------ Grüße Igor FX64 Software Solutions - Inventor Tools Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
C-Hoppen Mitglied CAD-Trainer
Beiträge: 51 Registriert: 23.10.2006
|
erstellt am: 11. Jul. 2009 15:33 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von daywa1k3r: Hallo,befindet sich der ganze Code in einer Datei/Klasse? Sieht für mich nach einem Gültigkeitsbereich Problem aus...
Danke für's Augen öffnen. Ganz oben in meinem Code steht "Public ThisApplication..."
Das, was fünktioniert (direkt darunter) ist in der Sub xy... und da steht "Dim ThisApplication..." Der Code, der nicht funktioniert, steht in einer anderen Sub YZ (im gleichen Modul). Schönes WE noch Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
|