| |  | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte | | |  | PNY wird von NVIDIA zum Händler des Jahres gewählt - zum dritten Mal in Folge, eine Pressemitteilung
|
Autor
|
Thema: Obj-ARX Wrapper (2907 mal gelesen)
|
facebraker Mitglied IT
 
 Beiträge: 158 Registriert: 03.05.2009 Windows 7 Professional 64Bit AutoCAD 2007/2008/2009 ProSteel 3D 17.2/18.0/V8i ProStructures V8i_S3 Visual Studio 2010 Ultimate
|
erstellt am: 12. Aug. 2010 16:09 <-- editieren / zitieren --> Unities abgeben:         
Hallo Leute, ich habe wiedermal ein Problem, ich möchte mich jetzt mal aus gegebenen Anlass mit dem Obj-Arx-Wrapper und dem PSCOMWrapper im VB.NET beschäftigen. Frei nach dem Motto "Vom großen Bruder lernen, heiß siegen lernen" *lach* habe ich mir zum Ziel gemacht, ein fertiges VBA-Makro von ProSteel in VB.NET zu überführen. Das Grundgerüst steht, ich konnte schon den Version-String etc. pp. von ProSteel auslesen, funktioniert im Prinzip. Nun habe ich den VBA Code :
Code: Dim Entity As AcadEntity
und Code: Set Entity = Selection.GetObject(Index)
Im Prinzip logisch, aber er kennt das AcadEntity nicht :-( folgende Fehlermeldung kommt: Zitat: Ein Verweis auf die Assembly "Autodesk.AutoCAD.Interop.Common, Version=17.2.0.0, Culture=neutral, PublicKeyToken=eed84259d7cbf30b", die den Typ "Autodesk.AutoCAD.Interop.Common.AcadEntity" enthält, ist erforderlich. Fügen Sie dem Projekt einen Verweis hinzu.
Was muß ich noch an DLLs hinzufügen, das ich Acad-Entitys ansprechen kann? Eine DLL Autodesk.AutoCAD.Interop.Common.dll existiert natürlich nicht :-( Hier nochmal mein Code bis jetzt: Code: Imports Autodesk.AutoCAD.Runtime Imports Autodesk.AutoCAD.ApplicationServices Imports Autodesk.AutoCAD.EditorInput Imports PSCOMWRAPPERLib Public Class Class1 'Define Command 'NewCmd1' <CommandMethod("NewCmd1")> _ Sub NewCmd1() Dim test As New PSCOMWRAPPERLib.Ks_ComApplication MsgBox(test.VersionString & " " & test.GetGlobalSettings.ApplicationPath) MsgBox("NewCMD1") End Sub <CommandMethod("GetWeight")> _ Sub GetWeight() Dim selection As New Ks_ComSelection Dim property_ps As New Ks_ComProperty Dim entity As Object Dim mWeight As Double Dim mLength As Double Dim Msg As String Dim Result As Long Dim Index As Integer selection.SetSelectionFilter(KsSelectionFilter.kFilterAllSteel) Result = selection.SelectObjects("Elemente für Gewicht waählen") If Result = 0 Then Result = selection.SelectAllObjects For Index = 0 To selection.ObjectCount - 1 entity = selection.GetObject(Index) Next End Sub End Class
Wie gesagt NewCmd1 funktioniert :-) Ich hoffe es ist nur eine Kleinigkeit ;-) Grüße Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 12. Aug. 2010 16:23 <-- editieren / zitieren -->
Hi, Im Dialog für 'Verweise hinzufügen' gehst Du auf die 'COM'-Seite und dort findest Du - AutoCAD 2009 TypeLibrary - und - AutoCAD/ObjectDBX Common 17.x Type Library Bei '17.x' das x gegen die aktuellste Nummer austauschen, kann variieren zwischen 17.0 und 17.2 Natürlich nur gültig, wenn Du COM-basierst arbeitest (und so siehts ja aus). - alfred - ------------------ www.hollaus.at [Diese Nachricht wurde von a.n. am 12. Aug. 2010 editiert.] |
facebraker Mitglied IT
 
 Beiträge: 158 Registriert: 03.05.2009 Windows 7 Professional 64Bit AutoCAD 2007/2008/2009 ProSteel 3D 17.2/18.0/V8i ProStructures V8i_S3 Visual Studio 2010 Ultimate
|
erstellt am: 12. Aug. 2010 16:25 <-- editieren / zitieren --> Unities abgeben:         
Hi Alfred, genau und noch:
Code: Imports Autodesk.AutoCAD.Interop
und dann kann ich sagen:
Code: Dim entity As Common.AcadEntity
SUFU und dann die Eingebung mit COM Register hat geholfen:-) Danke schön!!! Jetzt muss ich mich zwingen Feierabend zu machen, habe Blut geleckt :-/ Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
facebraker Mitglied IT
 
 Beiträge: 158 Registriert: 03.05.2009 Windows 7 Professional 64Bit AutoCAD 2007/2008/2009 ProSteel 3D 17.2/18.0/V8i ProStructures V8i_S3 Visual Studio 2010 Ultimate
|
erstellt am: 12. Aug. 2010 17:02 <-- editieren / zitieren --> Unities abgeben:         
Hi, mein Bemühen war von Erfolg gekrönt, ich konnte das Makro zur Gewichtsermittlung konnte ich im .NET mit dem Wrapper nachbauen und funktioniert, bin stolz auf mich ;-) ABER das war ja nicht viel Code und ich habe das Problem, dass ich nicht debuggen kann. Mein Vorgehen ist folgendes: Ich programmiere die DLL im Visual Studio, gehe dann auf Debuggen und er startet mir gleich das AutoCAD, dann sage ich im AutoCAD netload und öffne die DLL im Debug-Ordner. Jetzt kann ich Haltepunkte im Code setzen wie ich will, er rauscht durch und führ den Code aus. Ich kann mir vorstellen, dass die DLL im Debug-Verzeichnis nicht mehr mit dem Visual Studio "verbunden" ist. Aber Kluge leute im Buch sagen, das funktioniert so. Jetzt ist es noch einfach Fehler zu finden, aber ich kann schlecht auf die Einzelschritt Abarbeitung verzichten :-( An den Haltepunkten steht folgender Fehler mit Ausrufezeichen: Der Haltepunkt wird momentan nicht erreicht. Für dieses Dokument wurden keine Symbole geladen Ich habe noch ein Screenshot meiner Debug-Einstellungen angehängt. Ich denke mal es ist nicht viel kann mir nicht vorstellen, dass alle ohne Einzelschritt programmieren ;-) Danke schön!!! Gruss Alex
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CAD-Huebner Ehrenmitglied V.I.P. h.c. Verm.- Ing., ATC-Trainer

 Beiträge: 9807 Registriert: 01.12.2003 AutoCAD 2.5 - 2022, LDD, MDT, RD, ADT, Civil Inventor AIP 4-11, 2008 -2022 Win 10
|
erstellt am: 12. Aug. 2010 17:18 <-- editieren / zitieren --> Unities abgeben:          Nur für facebraker
|
Ex-Mitglied
|
erstellt am: 12. Aug. 2010 17:19 <-- editieren / zitieren -->
Hi, hast Du wirklich VS2005? Lt. Autodesk ist VS2008 empfohlen (ich glaube seit AutoCAD 2008, das ist aber nicht sicher) Deine Projekteinstellung steht auf 'Debug' oder auf 'Release'? In zweiterem Fall geht nix mit Breakpoint! - alfred - ------------------ www.hollaus.at |
facebraker Mitglied IT
 
 Beiträge: 158 Registriert: 03.05.2009 Windows 7 Professional 64Bit AutoCAD 2007/2008/2009 ProSteel 3D 17.2/18.0/V8i ProStructures V8i_S3 Visual Studio 2010 Ultimate
|
erstellt am: 13. Aug. 2010 11:14 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen, sorry, ich habe meine Signatur noch nicht aktualisiert, nutze VS 2010 Ultimate und Windows 7 64Bit Professional mit AutoCAD 2009. Ich habe jetzt mal gegoogelt und die autocad.exe.config angepasst. Ich hatte zuerst das Framework 2 drin, da kam der Fehler siehe Anhang. Dann habe ich das Framework 4 eingestellt: Code: <startup> <!--We always use the latest version of the framework installed on the computer. If you are having problems then explicitly specify .NET 2.0 by uncommenting the following line.--> <supportedRuntime version="v4.0.30319"/> </startup>
Dann kam der Fehler nicht mehr. Aber anscheinend kann er die Symbole nicht finden: Zitat: C:\Program Files\AutoCAD 2009\acadlock.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. U:\develop\global\Release64\bin\acad\acadlock.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. C:\Windows\symbols\exe\acadlock.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. C:\Windows\exe\acadlock.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. C:\Windows\acadlock.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.C:\Program Files\AutoCAD 2009\acadlock.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. U:\develop\global\Release64\bin\acad\acadlock.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. C:\Users\alki\AppData\Local\Temp\SymbolCache\symbols\exe\acadlock.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. C:\Users\alki\AppData\Local\Temp\SymbolCache\exe\acadlock.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. C:\Users\alki\AppData\Local\Temp\SymbolCache\acadlock.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. C:\Windows\symbols\exe\acadlock.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. C:\Windows\exe\acadlock.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. C:\Windows\acadlock.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
Wenn ich in Einzelschritt vorgehe, kommt de rFehler (siehe Anhang). Ich bin irgendwie ratlos :-( Der Prozess ist managed :-/ Ich habe noch im I-Net die "Lösung" gefunden, die Application manuell zu starten und dann unter "Debuggen" sich an den Prozess zu hängen, finde aber nicht wie das gehen soll :-/ Das ist echt frustrierend ... @Alfred, ich gehe davon aus, dass ich im Debug unterwegs bin, er startet mir ja auch AutoCAD (wie in den Debug-Einstellungen) hinterlegt ist? Oder ist das ein falsches Zeichen? Worauf muss ich noch achten? Vielen Dank!!! Gruß Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 15. Aug. 2010 18:10 <-- editieren / zitieren -->
Hi, kannst Du mal nachsehen, ob PDB-Dateien erzeugt werden? Nennst Du Deine Assembly überhaupt 'acadlock'? - alfred - ------------------ www.hollaus.at |
facebraker Mitglied IT
 
 Beiträge: 158 Registriert: 03.05.2009 Windows 7 Professional 64Bit AutoCAD 2007/2008/2009 ProSteel 3D 17.2/18.0/V8i ProStructures V8i_S3 Visual Studio 2010 Ultimate
|
erstellt am: 16. Aug. 2010 10:46 <-- editieren / zitieren --> Unities abgeben:         
Guten Morgen, sorry, dass ich erst heute antworte, aber ich bin erst heute dazu gekommen. Das mit dem "acadlock" ist mir auch ein Rätsel :-/ Ich habe es heute nochmal aufgerufen und bei Symbolladeinformationen folgendes bekommen: Zitat: C:\Program Files\AutoCAD 2009\AcMgdReverse.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. U:\develop\global\Release64\bin\acad\AcMgdReverse.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. C:\Users\alki\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\symbols\dll\AcMgdReverse.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. C:\Users\alki\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\dll\AcMgdReverse.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. C:\Users\alki\AppData\Local\Temp\SymbolCache\MicrosoftPublicSymbols\AcMgdReverse.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. C:\Windows\symbols\dll\AcMgdReverse.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. C:\Windows\dll\AcMgdReverse.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden. C:\Windows\AcMgdReverse.pdb: PDB-Datei wurde nicht gefunden oder konnte nicht geöffnet werden.
Die PDB Datei wurden NICHT erzeugt, könnte das ein Berechtigungsproblem sein? ICh habe VS schon mit Admin-Rechten gestartet. Oder muß ich noch Debug-Einstellungen machen? Ich habe mal die Symboleinstellungen als Bildschirmschuss angehängt. Außerdem noch die Fehler im Modulfenster als Textdatei. Wie würdest du, Alfred, an die Sache rangehen? Nochmal ein Minimal-Application nur mit Acad - Wrapper-DLLs und probieren, ich weiß nicht wie ich an das Problem rangehen kann :-/ Vielleicht sieht jemand das Problem in den "Log"-Files ... Vielen Dank! Gruss Alex Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 16. Aug. 2010 11:01 <-- editieren / zitieren -->
Hi, >> Wie würdest du, Alfred, an die Sache rangehen? Mit VisualStudio 2008 Und Spass beiseite, wenn Dir 2008 nicht zur Verfügung steht, dann ein neues Projekt ('Hello World', für AutoCAD halt 'Hello Line') und Schritt für Schritt die Verweise hinzufügen, von denen Du weißt, dass Du diese brauchst. Die Meldung der fehlenden 'AcMgdReverse.pdb' kapier ich selbst nicht, denn die wird ja nicht gebaut und zum Debuggen verwendet, aber für Deine Assemblies muss (zum Debuggen) eine PDB-Datei vorhanden sein. Wo ich auch ein wenig skeptisch wäre, wenn ich mir Deine SysInfo ansehe: Du arbeitest mit 64bit Betriebssystem, damit auch (bei AutoCAD 2009) mit 64bit AutoCAD, hat ProSteel überhaupt eine 64bit-Version? - alfred - ------------------ www.hollaus.at |
| Anzeige.:
Anzeige: (Infos zum Werbeplatz >>)
 |