Externe link in lisp (opgelost)

Gestart door AdenRob, ma 01 07 2013, 14:23:52

Vorige topic - Volgende topic

AdenRob

Hallo allemaal!

Wij hebben een vraag over het inladen van een externe lisp in een lisp. We hebben nu een aantal lisps samengevoegd d.m.w. (load) en dan het path-naam, zie voorbeeld. Deze path-naam verwijst naar de map waar de externe lisp zich bevind. Echter is dit bij ons dezelfde map als waar de hoofd-lisp in is opgeslagen.

Wij vragen ons af hoe we een externe lisp in kunnen laden in een andere lisp waarbij deze automatisch kijkt naar het path waarin de hoofd-lisp zich bevind (current folder).

Op deze manier zouden we dan onze hele lisp map kunnen kopiëren naar een andere PC, zonder al onze links aan te hoeven passen in de hoofd-lisps.

Voorbeeld:
(defun c:AAA ( / )
(load "C:/Users/Public/lisps/test/lisp1.lsp")
  (C:lisp1)
  (load "C:/Users/Public/lisps/test/lisp2.lsp")
  (C:lisp2)
  (princ)
)


hierbij zouden we het pad "C:/Users/Public/lisps/test/lisp1.lsp" willen vervangen door de lokatie van de hoofd-lisp (AAA) "lokatie hoofd-lisp/lisp1.lsp".

Heeft iemand een idee hoe we dit zouden kunnen oplossen?  :roll:

Met vriendelijke groet,
AdenRob

PS: wij begrijpen dat het waarschijnlijk gemakkelijker is om de lisp op de server op te slaan, maar helaas werkt dat in ons geval niet...

bk2gsta

Je zou findfile kunnen gebruiken, deze functie zoekt een bestand in de zoekpaden van autocad bv:
(load (findfile "lisp1.lsp"))
(load (findfile "lisp2.lsp"))


Gerard
grtjs van Gerard

roy_043

... Maar als findfile de bestanden kan vinden kun je volstaan met:
(load "lisp1.lsp")
(load "lisp2.lsp")

bart

indien deze map in de zoekpaden van acad is opgenomen wordt daar automatisch gekeken.
en hoeft je niets te doen.

indien de map er niet instaat kun je deze toevoegen
of je kunt een snelkoppeling in een map plaatsen waar wel gezocht wordt naar deze map.
dan doorzoekt autocad de map ook.

Domme vragen bestaan niet.
Domme antwoorden wel.

m.vr. groet Bart

EddyBeerke

Je zou ook de lisp bestanden samen kunnen voegen:
(defun c:test1 ()
(princ "test1")
(princ)
(defun c:lisp1 ()
  (princ "lisp1")
  (princ)
(defun c:lisp2 ()
  (princ "lisp2")
  (princ)
(defun c:lisp3 ()
  (princ "lisp3")
  (princ)
)

(defun c:AAA ( / )
  (C:lisp1)
  (C:lisp2)
  (C:lisp3)
  (princ)
)
(princ "type 'AAA' om te starten")
(princ)
Civil3d 2022, Blender 3.4 gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

AdenRob

Allereerst bedankt voor al jullie reacties!  :D

@ bk2gsta; de functie findfile was bij ons nog niet bekend, bedankt voor de tip!

@ Roy_043; Dit was precies waar we naar op zoek waren! Echter moet de map wel als support map zijn toegekend in AutoCAD, zoals Bart ook al aan gaf. Na dit te hebben gedaan werkte het zoals we bedoelde!  :vreegoe:

@ Bart; Een snelkoppeling is inderdaad ook een slimme manier, bedankt voor deze tip!

@ EddyBeerke; Deze manier van het schrijven van een Lisp is bij ons bekend. Omdat onze lisp uiteindelijk erg lang en daardoor ook erg onoverzichtelijk werd hebben we besloten deze op te splitsen in meerdere "kleine" lisps. Vandaar onze vraag om deze sub-lisps aan te roepen in één hoofd-lisp. Op deze manier kunnen we alle  sub-lisps apart uitvoeren, maar ook in één keer allemaal (door de hoofd-lisp uit te voeren).

Allen BEDANKT voor het meedenken!   :vreegoe: :vreegoe:

Groeten AdenRob

EddyBeerke

Je zou ook een VLX file kunnen maken van heel dat project (lees: meerdere lips-files)
Civil3d 2022, Blender 3.4 gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

AdenRob

Citaat van: EddyBeerke op wo 03 07 2013, 10:22:31
Je zou ook een VLX file kunnen maken van heel dat project (lees: meerdere lips-files)

Beste Eddy,

We waren nog niet bekend met VLX files.
Zojuist hebben we de tutorial op deze site gevold http://www.cadsite.be/applicaties/app.php. We hebben nu een VLX-file aangemaakt en ingeladen met APPLOAD. Echter, wat is hiervan het voordeel?
In de beschrijving staat dat je op deze manier ook een toolbar kunt krijgen. Dit lijkt ons wel makkelijk, een toolbar met hierin al je lisp commando's.
Maar na het inladen van de VLX-file zien we weinig verandering. Wel zijn alle lisps (welke zijn toegevoegd in de VLX-file) op deze manier allemaal automatisch ingeladen.

Is er misschien iemand die ons hier wat meer over kan vertellen? Of eventueel meer mogelijkheden van het gebruik van VLX kan benoemen?

Met vriendelijke groet,
AdenRob

PS; na een aantal dagen een samengestelde lisp te hebben gebruikt (d.m.v. load "lisp....."") zijn we er achter dat deze niet altijd even stabiel en consequent werkt. Soms kunnen we de hoofd lisp 3x achter elkaar uitvoeren en de 4e keer werkt hij dan niet meer.
We werken hier met twee versies van AutoCAD, namelijk 2011 en 2013. Hierbij geeft AutoCAD2013 vaker een foutmelding dan 2011, bij het uitvoeren van exact dezelfde lisp.

EddyBeerke

Er staat dat je z'n toolbar kunt maken.
Je zet dan geen code in de knop maar het commando om de lisp te activeren.

Welke foutmelding zie je en wat heb je gedaan?
Zou het kunnen zijn dat er globale vars gebruikt worden en/of misschien dubbele namen?

Is er een foutvang functie aanwezig?
Kun je achterhalen waar de fout ontstaat in de lisp (broncode)?


Civil3d 2022, Blender 3.4 gebruiker
Gebruiker sinds AutoCAD R12

http://eddylucas.c1.biz/
https://www.google.com/maps/contrib/109381066561676463628/photos/

sschevers

Ik weet dat het topic is opgelost maar deze link kwam ik nog tegen. Volgens mij  kun je hier ook wel iets mee
http://forums.augi.com/showthread.php?101676-A-routine-that-loads-all-of-my-other-routines

groeten

stephan