| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
Autor
|
Thema: iProperities in vb.net ansprechen (1706 mal gelesen)
|
Rodario7 Mitglied Maschinenbautechniker
Beiträge: 85 Registriert: 08.02.2013 Windows 7 64bit Inventor 2013 Visual Basic 2010 Express
|
erstellt am: 08. Feb. 2013 16:05 <-- editieren / zitieren --> Unities abgeben:
|
rkauskh Moderator Dipl.-Ing. (FH) Versorgungstechnik
Beiträge: 2166 Registriert: 15.11.2006 Windows 10 x64, AIP 2022
|
erstellt am: 08. Feb. 2013 17:30 <-- editieren / zitieren --> Unities abgeben: Nur für Rodario7
Hallo Indem du dich über den Objektbaum bis hin hangelst. Klare Frage, klare Antwort. Schwammige Frage, s.o. Erklär mal bitte etwas präziser was du wo wie machen möchtest. ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rodario7 Mitglied Maschinenbautechniker
Beiträge: 85 Registriert: 08.02.2013 Windows 7 64bit Inventor 2013 Visual Basic 2010 Express
|
erstellt am: 08. Feb. 2013 17:40 <-- editieren / zitieren --> Unities abgeben:
Hehe hast wohl recht sy. Manchmal merkt man nicht dass man sich nicht klar ausdrückt. Also: Habe mir ein wenig vb.net beigebracht und auch schon außerhalb der Inventors kleinere Programme geschrieben. Nun möchte ich ein kleines Programm für Inventor schreiben. Hierzu möchte ich überprüfen ob ein bestimmtes benutzerdefiniertes iProp in der Zeichnung vorhanden ist. Dim oInventorApp As Inventor.Application Dim oDoc As Inventor.DrawingDocument
Das habe ich bisher. Wie aber komme ich über oDoc zu den iProps? [Diese Nachricht wurde von Rodario7 am 08. Feb. 2013 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: 08. Feb. 2013 18:24 <-- editieren / zitieren --> Unities abgeben: Nur für Rodario7
Hallo Damit kann man was anfangen. Code: Dim oInventorApp As Inventor.Application Dim oDoc As Inventor.DrawingDocumentDim oProp as Property For Each oProp In oDoc.PropertySets.Item("{D5CDD505-2E9C-101B-9397-08002B2CF9AE}") If oProp.Name="Name deines iProps" Then MsgBox "Hab's gefunden" End If Next
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rodario7 Mitglied Maschinenbautechniker
Beiträge: 85 Registriert: 08.02.2013 Windows 7 64bit Inventor 2013 Visual Basic 2010 Express
|
erstellt am: 08. Feb. 2013 18:32 <-- editieren / zitieren --> Unities abgeben:
Hm da kommt ne Fehlermeldung : Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt. Dim oProp as Property kann ich nur als Dim oProp As [Property] deklarieren. Ohne die Klammern gehts nicht. Hab übrigens einen Fehler bei meiner Programmdefinition. Arbeite mit Inv 2013 , nicht mit 2011 [Diese Nachricht wurde von Rodario7 am 08. Feb. 2013 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: 08. Feb. 2013 19:33 <-- editieren / zitieren --> Unities abgeben: Nur für Rodario7
Hi Dann versuch mal Code:
Dim oProp as Inventor.Property
Achja, und oDoc und oInventorApp sind nicht nur deklariert sondern auch belegt? oDoc wäre dann
Code: Dim oDoc as Inventor.DrawingDocument oDoc=oInventorApp.ActiveDocument
und bei einer exe
Code: Dim oInventorApp as Inventor.Application oInventorApp=GetObject(, "Inventor.Application")
bzw bei einer AddIn-dll in der Activate-Sub
Code:
Public Sub Activate(ByVal oAddInSiteObject As Inventor.ApplicationAddInSite, ByVal bFirstTime As Boolean) Implements Inventor.ApplicationAddInServer.Activate Dim oInventorApp as Inventor.Application oInventorApp=oAddInSiteObject.Application
------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rodario7 Mitglied Maschinenbautechniker
Beiträge: 85 Registriert: 08.02.2013 Windows 7 64bit Inventor 2013 Visual Basic 2010 Express
|
erstellt am: 09. Feb. 2013 08:09 <-- editieren / zitieren --> Unities abgeben:
Zitat: Original erstellt von rkauskh:
und bei einer exe
Code: Dim oInventorApp as Inventor.Application oInventorApp=GetObject(, "Inventor.Application")
Geht leider auch nicht. Habe die Fehlermeldung angehängt.
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: 09. Feb. 2013 10:32 <-- editieren / zitieren --> Unities abgeben: Nur für Rodario7
Moin Das geht sehr wohl. GetObject erwartet zwei Argumente. Erstens einen String mit dem Pfad zu Applikation und zweitens einen String mit der Applikationsklasse. In deinem Code existiert eine Funktion gleichen Namens, auf die hier versucht wird zuzugreifen. Deswegen meidet man selbstgeschriebene Sachen mit bereits im Framework vergebenen Namen zu belegen. Benenne die Funktion sinnvoll um oder falls sie für das gemacht ist was ich vermute, ruf sie korrekt auf: Code: oInventorApp=GetObject(Inventor.Application)
Hoffentlich ist das zweite Argument url als optional definiert, sonst knallts gleich wieder. Dann poste bitte die ganze Funktion. Lies dir mal [URL=http://modthemachine.typepad.com/my_weblog/2008/09/in-the-last-posting-i-discussed-the-object-model-and-that-it-provides-a-structured-way-to-access-the-various-objects-that-ma k.html]den hier[/URL] zum Thema Referenzierung auf die Inventor API durch. Zumindest den Teil für VB.Net. Dann siehst du auch gleich wie man bei nicht laufendem Inventor eben einen started.
Seltsam, das Forum macht aus "mak.html" immer wieder "ma k.html". ------------------ MfG Ralf Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rodario7 Mitglied Maschinenbautechniker
Beiträge: 85 Registriert: 08.02.2013 Windows 7 64bit Inventor 2013 Visual Basic 2010 Express
|
erstellt am: 09. Feb. 2013 11:45 <-- editieren / zitieren --> Unities abgeben:
oInventorApp = CType(GetObject(, "Inventor.Application"), Application) damit funktionierts. Leider nur im debug modus von visual. wenn ich die exe in Inventor aufrufe kommt wieder die Fehlermeldung mit der falschen Objektinstanz. STOPPPP :-) Es klappt nun.... Thx für die Hilfe
[Diese Nachricht wurde von Rodario7 am 09. Feb. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rodario7 Mitglied Maschinenbautechniker
Beiträge: 85 Registriert: 08.02.2013 Windows 7 64bit Inventor 2013 Visual Basic 2010 Express
|
erstellt am: 09. Feb. 2013 12:14 <-- editieren / zitieren --> Unities abgeben:
Nun habe ich die Info ob es das iProp gibt. Wie komme ich nun an den Inhalt des iProps? Den würde ich gerne herausschreiben. If oProp.Name = "Artikelnummer" Then oProp.Value("Custom", "Artikelnummer") = "7777777" end if
Mal als Test geschrieben ergibt einen Fehler, da ich immer mit Option Strict on arbeite OK Habs
[Diese Nachricht wurde von Rodario7 am 09. Feb. 2013 editiert.] Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Rodario7 Mitglied Maschinenbautechniker
Beiträge: 85 Registriert: 08.02.2013 Windows 7 64bit Inventor 2013 Visual Basic 2010 Express
|
erstellt am: 10. Feb. 2013 17:43 <-- editieren / zitieren --> Unities abgeben:
|