Hot News:

Unser Angebot:

  Foren auf CAD.de (alle Foren)
  Inventor .NET
  IV-Buttonicons - VB.Net AddIn

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:  IV-Buttonicons - VB.Net AddIn (1809 mal gelesen)
BernhardU
Mitglied
Techniker / Konstrukteur / Student


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

Beiträge: 328
Registriert: 17.08.2005

Windows XP SP3
AIP 2011
VS 2005

erstellt am: 06. Dez. 2005 17:01    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 zusammen!!
Jaja ich bins schon wieder mal!
Das AddIn funktioniert ohne Probleme, doch ich würd jetzt noch gern Icons für den Button in IV integrieregn!
Hab auch ein Beispiel in der IV10 -API Hilfe gefunden!

Dim oIcon As IPictureDisp
Set oIcon = LoadResPicture(101, vbResIcon)
Set oButtonDefinition1 = oControlDefinitions.AddButtonDefinition( _
                      "Button 1", "invrSampleCommand1", _
                      kQueryOnlyCmdType, "CLSID of the AddIn", _     
                      "This is button 1.", "Button 1", _
                      oIcon, oIcon)


Doch wie schaut das in VB.Net aus?

Ich hab schon alles mögliche versucht, doch ich bin noch zu keiner lösung gekommen!!

und ein Button ohne Icon ist doch nur ein halber button!!

Vielen Dank!!

MFG

Bernhard

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

BernhardU
Mitglied
Techniker / Konstrukteur / Student


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

Beiträge: 328
Registriert: 17.08.2005

Windows XP SP3
AIP 2011
VS 2005

erstellt am: 12. Dez. 2005 09:27    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

Hi Leute hat sich schon erledigt!
Hab schon herausgefunden, wie es funktioniert!!

Dim smallico As stdole.IPictureDisp
                Dim largeico As stdole.IPictureDisp
                Dim sma, lar As Image
                sma = System.Drawing.Image.FromFile("C:\Programme\Autodesk\Inventor 10\Bin\Macros\Modul1.Schriftfeld.small.bmp")
                lar = System.Drawing.Image.FromFile("C:\Programme\Autodesk\Inventor 10\Bin\Macros\Modul1.Schriftfeld.large.bmp")
                smallico = VB6.ImageToIPictureDisp(sma)
                largeico = VB6.ImageToIPictureDisp(lar)

                obutton = InventorApplication.CommandManager.ControlDefinitions.AddButtonDefinition("Schriftfeld", "Schriftfeld_einfügen:cmdintname1", CommandTypesEnum.kQueryOnlyCmdType, "{ID}"Test", "Test", smallico, largeico)
                obutton.Enabled = True

es funktioniert!!!

Das ist toll an einem Montag Morgen so ein erfolgserlebnis!! 

Trotz dem vielen Dank für eure Bemühungen!!

MfG Bernhard

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

tend.heid
Mitglied
MB-Ing.


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

Beiträge: 12
Registriert: 09.05.2005

erstellt am: 21. Dez. 2005 17:00    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 BernhardU 10 Unities + Antwort hilfreich

Danke BerhardU für das posten des Codes für das erstellen eines Inventor-Buttons, habs so auch endlich geschafft mein Add-In zum laufen zu kriegen.
Auf meinem PC läuft es jetzt auch super, aber wie krieg ich die dll jetzt auf einem anderen PC zum laufen?
Ich hab das VB.NET Standard.
Kann ich per regasm.exe auf meinem PC eine reg-Datei schreiben lassen, die ich auf jedem anderen PC zur Registrierung verwenden kann, oder muß ein Setup gemacht werden.
Das dauert bei mir aber eine halbe Ewigkeit, liegt vieleicht daran, dass die interop.dll von Inventor mit in das Setup kompiliert wird.
Muss das sein, oder kann man das Setup-Programm auch so anpassen, dass nur die wirklich benötigten Dateien im Setup landen und die interop auf dem Zielrechner ins Arbeitsverzeichnis kopiert wird.
Da stell ich mir schon die nächste Frage:
Kann ich im Code auf die interop-datei im Inventor-Verzeichnis verweisen oder ist es sinnvoll meine My.dll ins Inventor-Verzeichnis zu installieren? Da müssten dann aber auch alle benötigten zusätzlichen Dateien rein, wie bmp für die Icons, .txt für das einlesen von Daten, usw.
Da ist dann bald ein ganz schönes Durcheinander im Inventor-Verzeichnis. Wenn ich aber die interop.dll in mein Arbeitsverzeichnis kopiere, besteht doch die Gefahr, dass bei einem SP für Inventor diese ausgetauscht wird und ich davon gar nichts mitkriege oder?

Danke für eure Hilfe

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: 22. Dez. 2005 10:31    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 BernhardU 10 Unities + Antwort hilfreich

Hallo tend.heid,

Zitat:

Kann ich per regasm.exe auf meinem PC eine reg-Datei schreiben lassen, die ich auf jedem anderen PC zur Registrierung verwenden kann, oder muß ein Setup gemacht werden.

Ja, du kannst mit regasm.exe eine reg-Datei erstellen, oder die regasm.exe mitliefern und vor Ort ausführen. Ein Setup finde ich immer gut, jedoch benutze ich nicht das im Visual Studio enthaltene, sonder ich bevorzuge das InnoSetup. Aber wenn es nur eine dll ist, und du musst es unter Kollegen verteilen, dann muss ein Setup auch nicht sein.

Zitat:

… kann man das Setup-Programm auch so anpassen, dass nur die wirklich benötigten Dateien im Setup landen und die interop auf dem Zielrechner ins Arbeitsverzeichnis kopiert wird.

Das ist möglich unter: Projekt Eigenschaften / Erstellen / Für COM-Interop registrieren. Jedoch bin ich der Meinung, dass die interop dll’s sowie die tlb’s nicht mit dem Release  mitgeliefert werden müssen.

Zitat:

Kann ich im Code auf die interop-datei im Inventor-Verzeichnis verweisen oder ist es sinnvoll meine My.dll ins Inventor-Verzeichnis zu installieren? Da müssten dann aber auch alle benötigten zusätzlichen Dateien rein, wie bmp für die Icons, .txt für das einlesen von Daten, usw.

Wie gesagt, musst du die interops nicht mit installieren. Und die Ressourcen werden normaler Weise in die dll / exe rein kompiliert.

Ich habe im Moment auch ein paar Schwierigkeiten mit der Weitergabe einer Assembly, allerdings in C# geschrieben. Es funktioniert nur auf einem Rechner mit der Entwicklungsumgebung (Framework alleine reicht nicht). Muss auch noch schauen was es ist…

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

FX64 Software Solutions
Mold&More Software Solutions

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

rtend12
Mitglied
Dipl.-Ing. (FH) Maschinenbau / Konstrukteur


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

Beiträge: 436
Registriert: 21.07.2004

Catia V5 (R16SP5, B18SP5)
VB.Net 2003

erstellt am: 22. Dez. 2005 20:51    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 BernhardU 10 Unities + Antwort hilfreich

hallo daywa1k3r,

erstmal danke für die ausführliche Antwort.
Ich hab gestern eine reg-Datei mit regasm erstellt und versucht meine dll damit zu registrieren. Im AddIn-Manager ist die dll auch vorhanden, allerdings ist nach dem IV-Start der Button nicht verfügbar und in den Zusatzmodul-Übersicht ist die dll auch als nicht geladen gekennzeichnet.

Kann man beim IV-Start ein log-Datei erstellen lassen oder das laden der dll debuggen, damit ich weiß an was es liegt, dass es nicht geht?

Wie meinst du die Resourcen werden in die dll reinkompiliert? Ich wähle im Studio "Verweis hinzufügen" und wähle die inventor.interop. Danach ist die dll in meinem Projektordner. Kann ich auch im Code auf die interop verweisen, so dass die interop im IV-Verzeichnis verwendet wird?

Wie kann ich für ein AddIn das Verzeichnis der dll im Code ermitteln? Mit System.AppDomain.CurrentDomain.BaseDirectory() krieg ich das Inventor-Verzeichnis, das hilft aber leider nicht.

Danke schon mal

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

tend.heid
Mitglied
MB-Ing.


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

Beiträge: 12
Registriert: 09.05.2005

erstellt am: 23. Dez. 2005 08:18    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 BernhardU 10 Unities + Antwort hilfreich

Den ersten Punkt konnte ich schon mal beheben. Die dll ist nach dem IV-STart als geladen gekennzeichnet. Allerdings fehlt mir trotzdem der Button und die Schaltfläche.
Hab die dll mit regasm My.dll /codebase registriert. Bekomme dann zwar eine Fehlermeldung: die dll bräuchte einen starken Namen, das hab ich dann auch gleich probiert. Das VisualStudio bringt dann die Fehlermeldung: Interop.Inventor.dll hat keinen starken Namen. Wenn es auch ohne starken Namen geht, hab ich damit kein Problem. Warum allerdings die Leiste und der Button nicht da sind ist mir immer noch ein Rätsel.

An alle im Forum schon mal "Frohe Weihnachten"

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: 23. Dez. 2005 09:08    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 BernhardU 10 Unities + Antwort hilfreich

Hallo,

 

Zitat:

Ich hab gestern eine reg-Datei mit regasm erstellt und versucht meine dll damit zu registrieren. Im AddIn-Manager ist die dll auch vorhanden, allerdings ist nach dem IV-Start der Button nicht verfügbar und in den Zusatzmodul-Übersicht ist die dll auch als nicht geladen gekennzeichnet.


Das kann verschiedene Gründe haben… Meistens ist es so, dass in der Activate während des Ladens von ButtonDefinitions, ToolBars, Icons (darauf tippe ich), usw. ein Problem gibt, und das Programm steigt aus, ohne die Activate komplett zu durchlaufen. Eine andere Möglichkeit ist, dass bei der Registrierung von der Assembly irgendwas schief gegangen ist. Ich habe gestern, nach dem ich alle meiner Rechner zu laufen gebracht habe und somit auf die Rechner von Forum Kollegen zugreifen musste (Hallo Mathias   ), festgestellt, dass der Grund warum meine C# Assembly nicht geladen wurde, ein Argument bei der regasm.exe war. Und zwar der CodeBase. Der muss bei der Registrierung benutzt werden, wenn die Assembly nicht in dem GAC registriert ist, sonst weiß die Anwendung, zur welcher das AddIn gehört nicht, wo sich die dll befindet. Also falls dein AddIn eine feste GUID hat, dann suche mal in der Registry danach. Und wenn nirgendwo ein Pfad zu deiner dll angegeben ist, benutze diesen Parameter bei der Registrierung mit regasm.exe (schau mal in msdn rein).

 

Zitat:

Kann man beim IV-Start ein log-Datei erstellen lassen oder das laden der dll debuggen, damit ich weiß an was es liegt, dass es nicht geht?

Ich schreibe mir für solche Fälle immer selbst eine Funktion die eine Log Datei schreibt. Ich gebe dir mal den Code, den du leicht an deine Bedürfnisse anpassen kannst (ich habe es für mich so optimiert, dass immer wenn eine Form aufgerufen wird ein neuer Abschnitt geschrieben wird).

Zitat:

Wie meinst du die Resourcen werden in die dll reinkompiliert?

Mit Ressourcen meinte ich die bmp’s, txt’s, … die du in dein Projekt hinzugefügt hast. Aber ehrlich gesagt, hat mich das so dermaßen angewidert, dass ich deshalb auf C# umgestiegen bin. So kann ich dir darüber keine genaue Information geben, aber ich glaube, dass wenn das sowieso nicht automatisch passiert, ich das in den Optionen irgendwo gesehen habe (die Ressourcen mit kompilieren – oder so).#

 

Zitat:

Ich wähle im Studio "Verweis hinzufügen" und wähle die inventor.interop. Danach ist die dll in meinem Projektordner. Kann ich auch im Code auf die interop verweisen, so dass die interop im IV-Verzeichnis verwendet wird?


KORIGIERT! Siehe nächsten Beitrag...

 

Zitat:

Wie kann ich für ein AddIn das Verzeichnis der dll im Code ermitteln? Mit System.AppDomain.CurrentDomain.BaseDirectory() krieg ich das Inventor-Verzeichnis, das hilft aber leider nicht.


Mit:

Code:

System.Reflection.Assembly.GetExecutingAssembly.Location()

Bekommst du den kompletten Pfad zu deiner dll. Wenn du den Dateinamen nicht brauchst, dann schneide es einfach ab.


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

FX64 Software Solutions
Mold&More 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: 23. Dez. 2005 09:49    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 BernhardU 10 Unities + Antwort hilfreich

Ein Tester meldete mir gerade die Fehlermeldung über die nicht gefundene Interop.Apprentice.dll. Also, es funktioniert nicht immer ohne die Interops. Wovon es abhängt, ist noch rauszufinden…

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

FX64 Software Solutions
Mold&More 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: 27. Dez. 2005 10:41    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 BernhardU 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von rtend12:
...Wie kann ich für ein AddIn das Verzeichnis der dll im Code ermitteln?...

Jetzt habe ich es selbst gebraucht:

Code:

sPath = Path.GetDirectoryName( System.Reflection.Assembly.GetExecutingAssembly().Location.ToString ());


@Edit:

Allerdings in C#

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

FX64 Software Solutions
Mold&More Software Solutions

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

rtend12
Mitglied
Dipl.-Ing. (FH) Maschinenbau / Konstrukteur


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

Beiträge: 436
Registriert: 21.07.2004

Catia V5 (R16SP5, B18SP5)
VB.Net 2003

erstellt am: 27. Dez. 2005 21:59    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 BernhardU 10 Unities + Antwort hilfreich

Hallo daywa1k3r,

wie schreibst du die Log-Datei? Bei meiner dll müsste ja irgendwas in der "Activate" schieflaufen. Wenn ich nach jedem Befehl eine Zeile in die Log-datei mit bezug zu diesem Befehl schreibe sollte das Problem eigentlich schnell gefunden sein.

Die dll-Erstellung für IV ist ja schon eine Herausforderung. Der eigentliche Code der dll funktioniert schon seit ca. 2 Monaten, aber die Integration in IV ist für mich, der sonst eigentlich nur exe programmiert schon heavy. Ist die dll-Erstellung eigentlich für jede Anwendung so aufwendig, oder ist das eine IV-Spezialität?

Gruß
rtend12

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

Charly Setter
Ehrenmitglied V.I.P. h.c.




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

Beiträge: 11977
Registriert: 28.05.2002

erstellt am: 28. Dez. 2005 00:48    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 BernhardU 10 Unities + Antwort hilfreich

Zitat:
Original erstellt von daywa1k3r:
Ein Tester meldete mir gerade die Fehlermeldung über die nicht gefundene Interop.Apprentice.dll. Also, es funktioniert nicht immer ohne die Interops. Wovon es abhängt, ist noch rauszufinden…


Könnte es sein, das Apprentice auf dem betreeffenden Rechner garnicht installiert / registriert war. Dann kann´s auch nicht gefunden werden und muß erst installiert werden. Aber das ist eigentlich trivial 

------------------
Der vernünftige Mensch paßt sich der Welt an;
der unvernünftige besteht auf dem Versuch, die Welt sich anzupassen.

Deshalb hängt aller Fortschritt vom unvernünftigen Menschen ab.
(George Bernard Shaw)

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: 28. Dez. 2005 09:30    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 BernhardU 10 Unities + Antwort hilfreich

Hallo,

Zitat:

wie schreibst du die Log-Datei? Bei meiner dll müsste ja irgendwas in der "Activate" schieflaufen. Wenn ich nach jedem Befehl eine Zeile in die Log-datei mit bezug zu diesem Befehl schreibe sollte das Problem eigentlich schnell gefunden sein.

Ich bin seit geraumer Zeit auf C# umgestiegen, dennoch habe ich ein Beispiel aus meinen ersten Schritten in .NET mit VB gefunden. Da sind die Umstieg Symptome noch sichtbar, denn es wird kein Wert auf die für .NET typische Kapselung gelegt, sondern der ganzer Code ist einfach in ein globales Modul reingeklatscht  Die Funktion habe ich geschrieben um eine Form zu logen, aber die ist leicht anpassbar auf deine Bedürfnisse.

Code:

Imports System
Imports System.IO

Module Module1
    Public oApp As Inventor.Application
    Public sFile As String

    Public Sub Log(ByVal sString As String)
        Dim sw As StreamWriter = File.AppendText(sFile)
        If sString = "" Then
            sw.WriteLine("")
        Else
            sw.WriteLine("[" & DateTime.Now & "]" & vbTab & sString)
        End If
        sw.Flush()
        sw.Close()
    End Sub

    Public Function CreateLogPath()

        Dim sw As StreamWriter
        If Not File.Exists(sFile) Then
            sw = File.CreateText(sFile)
            sw.WriteLine("********************************************************")
            sw.WriteLine("The Log File for daywa1k3rTest1 - " & Date.Now & vbCrLf)
            sw.WriteLine("Application version: " & oApp.SoftwareVersion.DisplayName)
            sw.WriteLine("********************************************************")
            sw.WriteLine("")
            sw.Flush()
            sw.Close()
        Else
            sw = File.AppendText(sFile)
            sw.WriteLine("")
            sw.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
            sw.WriteLine("            New Form                                ")
            sw.WriteLine("            Document: " & oApp.ActiveDocument.DisplayName)
            sw.WriteLine("~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~")
            sw.WriteLine("")
            sw.Flush()
            sw.Close()
        End If
    End Function

    Public Function CreateLogFileName()
        Dim sFolder As String
        sFolder = App_Path() & "Log"

        If Not Directory.Exists(sFolder) Then
            Directory.CreateDirectory(sFolder)
        End If

        sFile = sFolder & "\" & Replace(Replace(Date.Now, ".", "-"), ":", "-") & ".txt"
    End Function
    Private Function App_Path() As String
        Return System.AppDomain.CurrentDomain.BaseDirectory()
    End Function
End Module


Initializiert wird es mit:

Code:

            CreateLogFileName()
            CreateLogPath()

Und die einzelnen Schritte aufgerufen z.B.mit:

Code:

            Log("Activate")

Zitat:

Die dll-Erstellung für IV ist ja schon eine Herausforderung. Der eigentliche Code der dll funktioniert schon seit ca. 2 Monaten, aber die Integration in IV ist für mich, der sonst eigentlich nur exe programmiert schon heavy. Ist die dll-Erstellung eigentlich für jede Anwendung so aufwendig, oder ist das eine IV-Spezialität?

Ich finde nicht, dass es schwierig ist, angenommen man benutzt den mitgelieferten Wizard. Der Wizard ist in der SDK unter Tools zu finden. Einmal installiert, erscheint in VS unter Projekttypen auch Inventor AddIn. Damit wird der wesentliche Konstrukt erstellt, und du fängst mit Erstellen von ButtonDefinitons an…

@Mathias

Auf dem Rechner ist eigentlich Inventor 10 installiert, und ich gehe davon aus, dass Inventor ohne Apprentice gar nicht installiert werden kann. Keine Ahnung was es ist… Vielleicht ein Versionskonflikt? Mal schauen…

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

FX64 Software Solutions
Mold&More 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