Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  Zugriff auf das Application Objekt in C#

Antwort erstellen  Neues Thema erstellen
CAD.de Login | Logout | Profil | Profil bearbeiten | Registrieren | Voreinstellungen | Hilfe | Suchen

Anzeige:

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen nächster neuer Beitrag | nächster älterer Beitrag
  
Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte
Autor Thema:  Zugriff auf das Application Objekt in C# (5716 mal gelesen)
sebastianapa
Mitglied
Student


Sehen Sie sich das Profil von sebastianapa an!   Senden Sie eine Private Message an sebastianapa  Schreiben Sie einen Gästebucheintrag für sebastianapa

Beiträge: 20
Registriert: 13.11.2006

.NET 2.0, VS2005, IV11

erstellt am: 14. Nov. 2006 12:29    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo,

wie kann man in C# (.NET 2.0, VS2005, IV10) auf das Application Objekt zugreifen?
Über die globale Variable "ThisApplication" wie in VBA geht es ja scheinbar nicht.

Gibt es eine Dokumentation zum Programmieren für Inventor in C# oder auch Beispielprogramme? Aus den Samples des SDK werde ich nicht schlau.

Wie groß ist eigentlich der Unterschied zwischen Inventor 10 und 11? Können Add-ins bzw. Standalones für INV 10 auch mit INV 11 benutzt werden?

Gruß
Sebastian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Moderator
Softwareentwickler




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

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: 14. Nov. 2006 13:14    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sebastianapa 10 Unities + Antwort hilfreich

Wieso wirst du aus den Beispielen nicht schlau? In:

C:\Programme\Autodesk\Inventor 11\SDK\Samples\VCSharp.net\Standalone Applications\Inventor\AutoBolts

ist doch ein schönes Beispiel:

Code:

private bool ConnectInventor()
{
try
{
try
{
// Get active inventor object
m_InventorApplication = System.Runtime.InteropServices.Marshal.GetActiveObject( "Inventor.Application" ) as Inventor.Application;
}
catch( COMException )
{
MessageBox.Show( "AutoBolts : Inventor must be running." );
return false;
}

// Make sure that at least one document is opened
m_AssemblyDocument = m_InventorApplication.ActiveDocument as AssemblyDocument;
if( m_AssemblyDocument==null )
{
MessageBox.Show( "AutoBolts : An assembly document must be active." );
return false;
}
}
catch( Exception e )
{
MessageBox.Show( e.Message );
return false;
}

return true;
}


Einfacher geht es wirklich nicht.

Und 10 vs 11? Es kann dir immer passieren, dass der 10er Code unter 11er nicht mehr läuft, jedoch viel unwahrscheinlicher als umgekehrt 

------------------
Grüße daywa1k3r

FX64 Software Solutions

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

sebastianapa
Mitglied
Student


Sehen Sie sich das Profil von sebastianapa an!   Senden Sie eine Private Message an sebastianapa  Schreiben Sie einen Gästebucheintrag für sebastianapa

Beiträge: 20
Registriert: 13.11.2006

.NET 2.0, VS2005, IV11

erstellt am: 14. Nov. 2006 13:34    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

Hallo daywa1k3r, Danke für Deine Antwort!

Das Sample AutoBolt hatte ich mir auch angeschaut, wenn ich den Zugriff auf das Application Objekt so mache führt das bei mir zur Fehlermeldung: "SecurityException wurde nicht behandelt".

Und zwar möchte ich über einen Button eine neue ipt-Datei anlegen:

private void cmdNewPart_Click(object sender, EventArgs e)
        {   
        Inventor.Application m_InventorApplication;
        m_InventorApplication =    System.Runtime.InteropServices.Marshal.GetActiveObject( "Inventor.Application" ) as Inventor.Application;
        m_InventorApplication.Documents.Add(DocumentTypeEnum.kPartDocumentObject, "Bauteil", true);
        m_InventorApplication.ActiveDocument.Save();
        }


Oder liegt der Fehler ganz woanders?
Gruß
Sebastian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

sebastianapa
Mitglied
Student


Sehen Sie sich das Profil von sebastianapa an!   Senden Sie eine Private Message an sebastianapa  Schreiben Sie einen Gästebucheintrag für sebastianapa

Beiträge: 20
Registriert: 13.11.2006

.NET 2.0, VS2005, IV11

erstellt am: 14. Nov. 2006 13:44    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities

...um auszuschließen das ich beim Verweis was falsch gemacht habe:

Verweis ist gesetzt auf die Datei "RxInventor.tlb"


und im Kopf der *.cs-Datei habe ich folgendes ergänzt: using Inventor;

Ist das so korrekt? 

Gruß
Sebastian

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Moderator
Softwareentwickler




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

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: 14. Nov. 2006 13:58    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sebastianapa 10 Unities + Antwort hilfreich

Hallo,

dir ist die Bedeutung von try und catch Anweisungen schon klar? Ich meine ja nur, weil du die komplette Fehlerbehandlung gelöscht hast, und am Ende fragst du dich dann wo der Fehler her kommt?!

Hier noch mal eine Funktion die dir ein Inventor.Application Objekt zurück gibt:

Code:

public Inventor.Application  ConnectInventor()
{
try
{
try
{
// Get active inventor object
LocalInvApp = System.Runtime.InteropServices.Marshal.GetActiveObject( "Inventor.Application" ) as Inventor.Application;
}
catch( COMException )
{
MessageBox.Show(rm.GetString("NoInventor"),rm.GetString("MessageCaption"),MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
return null;
}
}
catch( Exception e )
{
MessageBox.Show( e.Message,rm.GetString("MessageCaption"),MessageBoxButtons.OK,MessageBoxIcon.Exclamation);
return null;
}
return LocalInvApp;
}

Bei mir werden die Meldungen wegen Fremdsprachen aus Ressourcen gelesen, so musst du die durch einfachen Strings ersezten.

Und mit „Und zwar möchte ich über einen Button eine neue ipt-Datei anlegen:“ glaube ich, dass du ein neues Bauteil (Vorlage) öffnen meinst.

Da wäre das:

Code:

m_InventorApplication.Documents.Add(DocumentTypeEnum.kPartDocumentObject, "Bauteil", true);

schon richtig, nur “Bauteil” ist kein Templatename. Da musst due den kompletten Pfad für die Vorlage angeben. Da es mehrere Vorlagen geben kann, musst du da Abfragen, welche dass der Benutzer haben will, und die dann als Argument übergeben. Wenn du einfach die Standard Vorlage nehmen willst, kannst du die über:

Code:

oApp.GetTemplateFile...

holen.

Mein Rat wäre eine C#.NET Schulung für Inventor zu machen (angenommen du willst dich ernsthaft damit befassen).

------------------
Grüße daywa1k3r

FX64 Software Solutions

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

daywa1k3r
Moderator
Softwareentwickler




Sehen Sie sich das Profil von daywa1k3r an!   Senden Sie eine Private Message an daywa1k3r  Schreiben Sie einen Gästebucheintrag für daywa1k3r

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: 14. Nov. 2006 14:05    Editieren oder löschen Sie diesen Beitrag!  <-- editieren / zitieren -->   Antwort mit Zitat in Fett Antwort mit kursivem Zitat    Unities abgeben: 1 Unity (wenig hilfreich, aber dennoch)2 Unities3 Unities4 Unities5 Unities6 Unities7 Unities8 Unities9 Unities10 Unities Nur für sebastianapa 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von sebastianapa:
...um auszuschließen das ich beim Verweis was falsch gemacht habe:

Verweis ist gesetzt auf die Datei "RxInventor.tlb"


und im Kopf der *.cs-Datei habe ich folgendes ergänzt: using Inventor;

Ist das so korrekt?  

Gruß
Sebastian


Als Verweis musst du über COM Verweise die InventorObjectLibrary einbinden. Dadurch wird eine Inventor.Interop.dll erzeugt.

using.Inventor ist schon richtig aber auch gefährlich, da es Objekte gibt die sich überschneiden, so z.B. der Application Objekt (System.Application und Inventor.Application). In 2005er wirst du da zwar schon beim eintippen gewarnt, aber sauberer ist, nicht using.Inventor zu machen, sondern immer über Inventor. auf die Objekte zu zu greifen.

------------------
Grüße daywa1k3r

FX64 Software Solutions

Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP

Anzeige.:

Anzeige: (Infos zum Werbeplatz >>)

Darstellung des Themas zum Ausdrucken. Bitte dann die Druckfunktion des Browsers verwenden. | Suche nach Beiträgen

nächster neuerer Beitrag | nächster älterer Beitrag
Antwort erstellen


Diesen Beitrag mit Lesezeichen versehen ... | Nach anderen Beiträgen suchen | CAD.de-Newsletter

Administrative Optionen: Beitrag schliessen | Archivieren/Bewegen | Beitrag melden!

Fragen und Anregungen: Kritik-Forum | Neues aus der Community: Community-Forum

(c)2023 CAD.de | Impressum | Datenschutz