heeft er iemand dit ooit een poging gewaagd om een dll-file aan te roepen binnen lisp?
Weet er iemand of dit mogelijk is....
Citaat van: WebRacer op di 13 02 2007, 12:07:21
heeft er iemand dit ooit een poging gewaagd om een dll-file aan te roepen binnen lisp?
Weet er iemand of dit mogelijk is....
Beste WebRacer,
Ik ben benieuwd waarom je een dll-file wil aanroepen.
Kijk eens op http://www.steinvb.com/v2/vldb.htm in http://www.steinvb.com/docs/vldb-book.zip
naar vbStringClass.LSP
Zie ook bijv. http://ww3.cad.de/foren/ubb/Forum259/HTML/000031.shtml
Zie ook bijv. http://arxdummies.blogspot.com/2005/04/lab-2-solved.html
Zie in bijv. http://www.theswamp.org/index.php?PHPSESSID=c959n05op663h8oeo3q355ikl1&topic=14576.0
hoe je een dll kan registreren.
Een dll laden kan met (command "_.netload" path_to_dll)
Met vriendelijke groet,
HofCAD CSI
ik wist dat jij de eerste zou zijn om hierop te reageren, en ook dat je zeer benieuwd zou zijn....
laat ons zeggen dat ik het doel nog in de midden laat... voorlopig.
wat ik heb: een dll, met daarin 2 vba-functies en dat is het.
naar mijn vermoeden zit er een volledige procedure in de dll..
gemakelijkheidshalve kan ik u meegeven dat de declaratie hiervan er als volgt uitziet:
Declare Sub ProgRun Lib "Bestand.dll"(ByVal xi As Double, ByVal yi As Double,ByRef xo As Double, ByRef yo As Double)
ik zoek nu een weg om dit te gebruiken in lisp, dus eenvoudig: het dll moet voor mij een herberekening maken... en in de dll zitten de parameters voor die berekening.
de groene woorden slaan op de sub en het dll-bestand
ik ben al een beetje op weg, maar wil liever afwachten wat jij zal vinden... om niet door elkaar te werken...
(setq DLL (vla-GetInterfaceObject (vlax-get-acad-object) "dllbestand.YourClassModule"))
zover zit ik al... alleen, ik zzei het al: van VB heb ik geen kaas gegeten, en ik weet dus totaal niet wat er op YouClassModule moet staan... Wie o Wie???
Beste Webracer,
Als uw dll niet voldoet aan "ActiveX-enabled and supplies a type library" dan zal je er geen gebruik van kunnen maken in AutoCAD.
Zie ook:
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/vbcon98/html/vbconassigningreferencetoactivexcomponentobject.asp
Anders (dit voorbeeld gebruikt mscomm32, een oud object om seriële verbindingen te maken):
;; importeren bibliotheek
(VLAX-IMPORT-TYPE-LIBRARY
:TLB-FILENAME
"c:\\windows\\system32\\MSCOMM32.OCX"
:METHODS-PREFIX "comm-"
:PROPERTIES-PREFIX "comp-"
:CONSTANTS-PREFIX "comc-"
)
;; object maken
;; "MsCommlib.MSComm" kan je terugvinden in de object browser in de Visual Basic
(SETQ #com1 (VLAX-CREATE-OBJECT "MSCommLib.MSComm"))
;; daarna kan je gebruik maken van de eigenschappen, constantes en methodes van de bibliotheek zoals:
(COMP-PUT-SETTINGS #com1 "115200,N,8,1")
(COMP-GET-PORTOPEN #com1)
Groetjes
ja, ik heb al wat nagezocht en pogingen ondernomen, ik kom ook tot de beslissing dat de dll geen 'ActiveX-enabled and supplies a type library'-bestand is.
Er kan dus niets mee aangevangen worden in autocad.
Volledig de berekeningen zelf in lisp schrijven is dus de boodschap...