| |
 | Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
 | NVIDIA GTC Paris und ISC High Performance-Konferenz 2025, eine Pressemitteilung
|
Autor
|
Thema: ActiveX DLL mit Dialogfenster im AutoCAD aufrufen (3057 mal gelesen)
|
wklemens Mitglied Systemingenieur
 
 Beiträge: 383 Registriert: 02.09.2002
|
erstellt am: 30. Sep. 2003 11:16 <-- editieren / zitieren --> Unities abgeben:         
Hallo! Ich suche ein Beispiel, in dem ein VB ActiveX-DLL im AutoCAD über Lisp angespochen wird. Es sollte irgendwie möglich sein, ein VB-Dialogfenster statt der DCL-Fenster zu verwenden. Wer hat eine Idee und ein Beispiel? Vielen Dank!
------------------ Grüße aus Linz Willi Klemens MCDS Datensystem GmbH www.mcds.net Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
nahe Ehrenmitglied
    
 Beiträge: 1790 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2023 SP5.0 EPDM ---------------- Windows 11 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 30. Sep. 2003 15:40 <-- editieren / zitieren --> Unities abgeben:          Nur für wklemens
|
wklemens Mitglied Systemingenieur
 
 Beiträge: 383 Registriert: 02.09.2002
|
erstellt am: 30. Sep. 2003 17:32 <-- editieren / zitieren --> Unities abgeben:         
|
nahe Ehrenmitglied
    
 Beiträge: 1790 Registriert: 18.01.2001 arbeite mit: Dell Precision 7750 i7 2,6 GHz 6 Kerne 32GB RAM 512GB SSD NVIDIA Quadro RTX 4000 ------------------------ SWX-2023 SP5.0 EPDM ---------------- Windows 11 ---------------- VB.net VB VBA ein wenig Swift am Mac
|
erstellt am: 01. Okt. 2003 07:35 <-- editieren / zitieren --> Unities abgeben:          Nur für wklemens
|
wklemens Mitglied Systemingenieur
 
 Beiträge: 383 Registriert: 02.09.2002
|
erstellt am: 01. Okt. 2003 13:31 <-- editieren / zitieren --> Unities abgeben:         
Hallo Heinz! Mir geht es jetzt nicht um bestimmte Steuerelemente. Ich möchte nur wissen, wie ich ein ActivX-Dll in VB6 erstelle, das ich in AutoCAD dann über LISP anspreche. Mir ist schon klar, daß ich in VB(A) fast jedes Problem auch lösen kann. Ich habe nur hunderte LISP-Programme mit Dialogfenstern in DCL, die ich eventuell durch ein Fenster in VB ersetzen will. Dazu suche ich irgend ein Programmierbeispiel.
------------------ Grüße aus Linz Willi Klemens MCDS Datensystem GmbH www.mcds.net Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Ex-Mitglied
|
erstellt am: 06. Okt. 2003 13:40 <-- editieren / zitieren -->
Prinzipiel kannst du eine ACtiveX-Komponete mit Lisp aufrufen. Dazu musst du per VLAX-Befehle ein Objekt erzeugen und dann kannst du die Eigenschaften und Methoden der Komponente aufrufen. Weiteres würde hier zu weit führen, da das Thema wirklich sehr komplex ist. Schau mal bei http://www.acadx.com nach. Jürgen |
vkleppel Mitglied Dipl.-Ing. Architekt

 Beiträge: 11 Registriert: 19.09.2003
|
erstellt am: 06. Okt. 2003 22:54 <-- editieren / zitieren --> Unities abgeben:          Nur für wklemens
Hallo, die Programmaufgabe die du hast, ist zweistufig. Du mußt in VB ein sogenanntes "ActiveX-DLL" Projekt anlegen, in dem Du z.B. die benötigten Formulare und weitere Module anlegst. Danach ist in VBA oder VisualLisp der Zugriff in AutoCAD auf die ActiveX-Komponente zu programmieren. Zu VB: Hier mußt Du ein Klassenmodul schreiben, daß die Verbindung zur "Aussenwelt" herstellt. Der Name des Projekts entspricht hierbei dem DLL-Dateinamen und damit dem ActiveX-Namen, der Name des Klassenmoduls entspricht dem Objekt innerhalb der DLL. Die im Klassenmodul definierten öffentlichen SUB oder FUNCTION (public SUB/FUNCTION) können dann als Funktion aufgerufen werden. Zu VBA/VisualLisp: Hierzu ein kleines Beispiel, das ein Objekt aus der Datei "XODLL.dll" mit der Klassenmodul "XOCLASS" erstellt und dann die im Klassenmodul vorhandene öffentliche Routine "XOFUNCTION" mit der Parameterübergabe 'objThsDrawing' übergibt: (defun c:XDO (/ objXDODll objThisDrawing xdodump) (vl-load-com) (setq objXDODLL (vlax-create-object "XODLL.XOCLASS")) (setq objThisdrawing (vla-get-activedocument (vlax-get-Acad-Object))) (setq xdodump (vlax-invoke-method objXDODLL "xofunction" objThisdrawing)) (vlax-release-object objXDODLL) (vlax-release-object objThisdrawing) ) Sobald das Objekt XODLL.XOCLASS nicht mehr existiert, wird die Codeausführung an VisualLisp zurück übergeben und die in VisualLisp erzeugten Objekte objXODLL und objThisDrawing werden gelöscht. Eine Einbindung der DLL in VBA sieht ähnlich aus. Dein Wunsch, manche Formulare in VB zu programmieren, kann ich nachvollziehen. Denn zum einen steckt dort eventuell Code, denn man nicht so ohne weiteres veröffentlchen will oder man will durch die Installationsroutine von VB sicher gehen, daß auch wirklich alle benötigten weiteren Komponenten auf einem System installiert sind. Dieses ist bei VBA beiden nicht gegeben. Ciao Volker Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Harryxx Mitglied Konstrukteur
 Beiträge: 5 Registriert: 12.09.2001
|
erstellt am: 13. Okt. 2003 12:41 <-- editieren / zitieren --> Unities abgeben:          Nur für wklemens
|
fuchsi Mitglied Programmierer c#.net Datawarehouse
   
 Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 16. Okt. 2003 13:20 <-- editieren / zitieren --> Unities abgeben:          Nur für wklemens
hallo herr klemens ! besuchen sie mich doch mal in meiner firma, sowas habe ich schon öfters auprobiert, ist gar nicht so schwer bzw. haben sie schon mal object DCL ausprobiert, finde ich genial Anton Fuchs, Bene Büromöbel Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |