| |
| Gut zu wissen: Hilfreiche Tipps und Tricks aus der Praxis prägnant, und auf den Punkt gebracht für Autodesk Produkte |
| |
| PNY bietet das umfangreichste Ökosystem von B2B als auch B2C-Lösungen für IT-Akteure auf dem Markt, eine Pressemitteilung
|
Autor
|
Thema: Lisp auf Funktion einer DLL warten lassen (1193 mal gelesen)
|
Michael Brix Mitglied
Beiträge: 33 Registriert: 01.11.2000
|
erstellt am: 06. Feb. 2004 10:23 <-- editieren / zitieren --> Unities abgeben:
Hallo, bin gerade etwas am probieren mit ActiveX-DLL's und habe das Problem, dass Lisp nicht auf das beenden der jeweiligen Funktion der DLL's wartet. Frage: Wie veranlasse oder erreiche ich das Lisp auf die Rückgabe der Funktion wartet???? Wäre für jede Information dankbar. Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
CADmium Moderator Maschinenbaukonstrukteur
Beiträge: 13527 Registriert: 30.11.2003 .
|
erstellt am: 06. Feb. 2004 10:29 <-- editieren / zitieren --> Unities abgeben: Nur für Michael Brix
|
Michael Brix Mitglied
Beiträge: 33 Registriert: 01.11.2000
|
erstellt am: 06. Feb. 2004 12:02 <-- editieren / zitieren --> Unities abgeben:
Hm, ne while-Schleife habe ich schon mal eingebaut aber die beansprucht soviel Power, dass für andere Prozesse nichts mehr übrig bleibt oder hat jemand ein funktionierendes Beispiel? Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 09. Feb. 2004 19:42 <-- editieren / zitieren --> Unities abgeben: Nur für Michael Brix
hm also ich kenn das anders, wenn du eine activeX dll schreibst, und diese mit (setq dll (vlax-get-or-create-object "meinedll.meineklasse")) startest und dann (vlax-invoke dll "meineFunktion") dann wartet lisp sehr wohl, biss die funktion beednet ist hm vielleicht , wenn es eine Public SUB ist und keine public FUNCTION muss ich mal ausprobieren. ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Dabrunz Mitglied
Beiträge: 127 Registriert: 28.05.2003
|
erstellt am: 10. Feb. 2004 10:56 <-- editieren / zitieren --> Unities abgeben: Nur für Michael Brix
Zitat: Original erstellt von fuchsi: hm also ich kenn das anders, wenn du eine activeX dll schreibst, und diese [..] startest [..] dann wartet lisp sehr wohl, biss die funktion beednet ist
Eben - so ist es in allen Fällen. LISP wartet grundsätzlich auf die Rückgabe der angestoßenen Funktion, sonst würde die Sprache wohl auch nicht funktionieren. Die Betonung liegt hier allerdings auf Funktion. Startet ein eigener Prozess, dann schaut LISP nur hinterher - genau genommen nicht mal das, es setzt die Arbeit fort, denn das Starten des Prozesses hat ja geklappt. Zitat:
hm vielleicht , wenn es eine Public SUB ist und keine public FUNCTION muss ich mal ausprobieren.
S.o. - entscheidend ist, dass der Aufruf (Verzeihung für meine etwas ungenaue Beschreibung, aber meine Kenntnisse der ActiveX-Mechanismen sind außerordendlich begrenzt) den aufrufenden Code in "Wartestellung" versetzt. Nebenläufige Ausführung kennt unser VLISP nämlich nicht. Auch Prozeduren können in dieser Beziehung ähnlich wie Funktionen arbeiten, indem dort Referenz-Parameter geändert werden (als Beispiel möchte ich hier GetBoundingBox anführen). Also scheint mir die Implementierung eines für's Warten zuständigen Interfaces Voraussetzung für eben dieses Verhalten zu sein. @fuchsi: Du hast hier ja einiges an Überblick, kannst du uns mal aufklären, welches da in Frage kommt? Achim Dabrunz Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael Brix Mitglied
Beiträge: 33 Registriert: 01.11.2000
|
erstellt am: 10. Feb. 2004 11:43 <-- editieren / zitieren --> Unities abgeben:
Hallo fuchsi, habe deinen Vorschlag ausprobiert und weder mit Function noch mit Sub erfolg gehabt. In der DLL-Funktion wird ein Dialog aufgerufen, was auch durch den Lisp-Aufrug passiert aber Lisp rauscht gleich weiter und wartet nicht bis der Dialog beendet wird. Die Function ist natürlich erst dann beendet wenn der Dialog geschlossen wird :-( Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 12. Feb. 2004 08:37 <-- editieren / zitieren --> Unities abgeben: Nur für Michael Brix
dann liegts sicher am aufrud des dialoges form1.show bzw. form1. show vbmodal wenn du in vb modeless eine form öffnest, läuft vb weiter und wartet nicht aud die beendigung des dialoges, ööfnest du den dialog modal, wartet vb auf die beednigung des dialoges, lisp wartet auf jeden fall auf die beedndugung der aufgerufenen funktioen, nur die funktion muss auch auf die beednedigung des dialoges warten ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 12. Feb. 2004 08:38 <-- editieren / zitieren --> Unities abgeben: Nur für Michael Brix
|
Michael Brix Mitglied
Beiträge: 33 Registriert: 01.11.2000
|
erstellt am: 12. Feb. 2004 09:26 <-- editieren / zitieren --> Unities abgeben:
Hai fuchsi, tut mir leid mit deiner Hand - dein Kopf scheint aber noch super zu funktionieren!!!! Mit vbmodal funktioniert es einwandfrei - SUUUUUUUUUUPER!!! Vielen Dank für deine Hilfe. Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
fuchsi Mitglied Programmierer c#.net Datawarehouse
Beiträge: 1201 Registriert: 14.10.2003 AutoCad Version 2012 deu/enu <P>Windows 7 64bit
|
erstellt am: 13. Feb. 2004 12:53 <-- editieren / zitieren --> Unities abgeben: Nur für Michael Brix
erzähl mal, was bastelst du denn so. verwendest du die activex.dll um in lisp ansprechendere dialoge (als das sch...ß DCL) zu bekommen. hab ich auch probiert, bin aber wieder davon abgekommen (ich möchte mir das installieren auf den zierlrechnern sparen) und hab mir ObjectDCL gekauft. super Möglichkeiten (z.B.: andockbare Dialoge ähnlich dem eigenschatseditor in acad) leider etwas kompliziert zum proggen (zu mindest am anfang) ------------------ Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |
Michael Brix Mitglied
Beiträge: 33 Registriert: 01.11.2000
|
erstellt am: 13. Feb. 2004 13:32 <-- editieren / zitieren --> Unities abgeben:
Hallo fuchsi, Habe ein Programm geschrieben mit dem man die geometrischen Daten aus AutoCAD heraus lesen kann und dann automatisch ein CNC-Programm generiert wird. Funktioniert auch einwandfrei nur leider sind die Einschränkungen mit den verstaubten AutoCAD-Dialogen aufwendig und nicht zeitgemäß. Kannst dir das Proggi unter: http://www.industrie24.com/i24/pages/mp.php?getpage=ftpfoyer&se=D mal anschauen. Die installation ist natürlich mit DLL's aufwendig (die DLL muss ja auch im System angemeldet sein) - aber ich dachte vielleicht mit einem Installationstool möglich es gibt ja einiges an Freeware in diesem Bereich. Ich wünsche dir nen schönes Wochenende und vielen Dank nochmal. Gruß Michael Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP |