Hogyan használjuk a fórumon közzétett lisp-t, a tartalom platformot
Vladimir Azarko vagy VVA
Ön hasznosnak találta a kódot a Lisp-ben, és használni akarja. 3 lépésben van:
-
a számítógépen lévő programkód mentése az alkalmazás indítását tartalmazó fájl letöltésével
Megjegyzés: Az AutoLISP programok csak a teljes AutoCAD verzióban futtathatók, az AutoCAD LT alatt nem működnek. (kivéve olyan kiegészítő alkalmazások letöltését, mint az LT Extender és hasonlók, amelyeket kifejezetten lisp és / vagy arx alkalmazások futtatására terveztek egy AutoCAD LT környezetben.)
Programkód mentése a számítógépen
A kurzor segítségével jelölje ki ezt a kódot, és a jobb egérgombbal kattintson rá, majd válassza a Másolás (vagy a Ctrl + C) lehetőséget.
Indítsa el a Jegyzettömböt és illessze be kódunkat a Szerkesztés menü >> Beillesztés (vagy Ctrl + V) segítségével:
(defun C: OFF2 (/ d obj ent adoc * hiba * undo lays Flag)
(defun * error * (msg) (vla-EndUndoMark adoc))
(vl-load-com) (setq adoc (vla-get-activedocument (vlax-get-acad objektum))
(vla-get-layers adoc)) (vla-StartUndoMark adoc) (setvar "CMDECHO" 0)
(ha (null * OFF2 *) (setq * OFF2 * (abs (getvar "OFFSETDIST")))))
(ha zerop * OFF2 *) (setq * OFF2 * 1)) (setq d (getvar "UNDOCTL"))
(kond ((= d0) (vl-cmdf "_.UNDO" "_All"))
((= d3) (vl-cmdf "_.UNDO" "_Control" "_All"))
(t nil)); _ vég
(princ "\ n Az elmozdulás mennyisége <")(princ *OFF2*)(princ ">: ")
(initget 6) (ha (null (setq d (getdist))) (setq d * OFF2 *))
(setq * OFF2 * d visszavonása 0 Flag t)
(initget "Undo Mégsem G J Kilépés Kilépés D _Undo Undo Visszavonás Kilépés Kilépés Kilépés Kilépés")
(setq obj (entsel (strcat "\ n Válassza ki az objektumot ["
(ha (nem (zerop undo)) "Mégse /" "")
„Hozam] <выход>: ")))
(cond ((= obj "Undo") (ha (nem (zerop undo)) (prog
(vl-cmdf "_UNDO" "_B") (setq undo (1- undo))) (riasztás "Semmi többet törölni"))))
((= obj "Kilépés") (setq Flag nil))
((null obj) (ha (= (getvar "ERRNO") 52) (setq Flag nil) (prince "*** Mimo ***")))
(t (setq ent (vlax-ename-> vla-objektum (autó obj)))
(vla-get-lock (vla-get-réteg ent))): vlax-true (vla-get-réteg ent)
(riasztás "A blokkolt rétegben!"))
((vlax-method-applicable-pent "Offset") (vl-cmdf "_UNDO" "_M") (setq undo (1+ undo))
(vla-offset ent d) (vla-offset ent (-0 d)))
(t (riasztás "Nem lehet ilyen tárgyat létrehozni"))))))
(initget "Undo Mégsem G J Kilépés Kilépés D _Undo Undo Visszavonás Kilépés Kilépés Kilépés Kilépés"))
(princ "\ nVálassza ki az OFF2 parancssort"))
Miután feltöltötte a kódot egy notebookra, meg kell tennünk valamit:
Töltse le a lisp fájlt
Ezután futtassa az AutoCAD programot, és válassza a Tools >> AutoLISP >> Load (Eszközök >> AutoLISP >> Load) parancsot, vagy írja be a _appload parancsot a parancssorból.
A következő párbeszédablakot kell látnunk:
Használja a következő sorozatot a load2.lsp:
1. Keresse meg azt a mappát, ahová mentette a lisp fájlt.
2. Válassza ki a listából letölteni kívánt fájlt.
3. Kattintson a Letöltés gombra.
(Ha minden jól ment, akkor látnia kell a "off2.lsp sikeres letöltését" feliratát)
4. A parancs bezárásához kattintson a Bezárás gombra.
Parancs vagy funkció?
Először is el kell döntenie, hogy mi van: egy csapat vagy egy funkció?
Egy kis elmélet.
A szinte minden kód leírásában olyan vonal van, mint a
és utána valamit írt. Tehát itt van az, amit írt, és van egy függvény neve.
Ha az első karakter C:. akkor a függvény készen áll a parancssorból történő hívásra. Ha ez nem létezik, akkor a függvényt be kell hívni, zárójelbe zárva a nevét.
Például van egy funkció
(defun c: teszt ()<Что-то делаем 1>)
A parancssorból közvetlenül hívható (feltéve, hogy betöltött) a parancssorból:
És cselekvéseket fognak végrehajtani <Что-то делаем 1>
De ez:
(defun teszt ()<Чего-то делаем 2>)
Most a lisp-nek hiba nélkül kell dolgoznia.
Mi ez (vl-load-com)?
A függvény betölti a nagyszámú funkciók bővítése AutoLisp, amely lehetővé teszi, hogy működjön együtt tárgyak, tulajdonságok, módszerek, rendezvények és az ActiveX. A jel nem szükséges letölteni a terjeszkedés AutoLisp jelenléte a szövegben a program funkcióit előtaggal kezdődnek vla- (pl vla- kap-activedocument) vlax- (pl vlax- kap-Acad-tárgy), VL-(pl VL-catch-all alkalmazni) és vlr- (például vlr-pers).
Mindenesetre soha nem fog fájni add hozzá (vl-load-com) a fájl elejére, hogy elkerülje az ilyen hibákat.
Az lsp fájlok könyvtárának megszervezése.
Mit tegyek, ha elég fájlom van? Minden alkalommal, amikor beír egy _apploadot egy alkalmazás betöltéséhez? A leghatékonyabb könyvtárának megszervezése. Először is, bízzunk abban, hogy minden fájljunk hozzáadódik egy mappához. Például: D: \ MyLisp. Írjuk le ezt a mappát az AutoCAD hozzáférési útvonalaiban. Ehhez válassza az Eszközök >> Opciók (Eszközök) parancsot, vagy írja be a _options parancsot a parancssorba. Menjen a Fájlok lapra, és bontsa ki a Támogatási fájl keresési útvonalát.
A következő párbeszédablakot kell látnunk:
Használja a következő sorozatot, hogy regisztrálja a mappát a hozzáférési útvonalakon:
1. Kattintson a Hozzáadás gombra.
2. Kattintson a Tallózás gombra, és válassza ki a kívánt mappát (esetünkben a D: \ MyLisp)
3. A mappa elérési útja megjelenik a párbeszédpanelen.
4. A parancs befejezéséhez kattintson az OK gombra.
^ C ^ C (ha (null C:<команда>) (terhelés "<файл>„));<команда>;
^ C ^ C (ha (null C: OFF2) (terhelés "off2")); OFF2;
Ha a rajz megnyitásakor be kell tölteni az lsp fájlokat, meg kell adnia a szükséges fájlokat az automatikus feltöltési listához.
Indítsa el az AutoCAD programot, és válassza a Tools >> AutoLISP >> Load (Eszközök >> AutoLISP >> Load) parancsot, vagy írja be a _appload parancsot a parancssorból.
A megnyitott párbeszédpanelen kattintson az alkalmazások gombra a portfólió mellett
A következő párbeszédpanelen kattintson a Hozzáadás gombra, és mutasson a kívánt fájlokra.
Ezeknek szerepelnie kell az alkalmazások listáján.
Mostantól a felsorolt fájlok a kép megnyitásakor lesznek betöltve.
Fontos megérteni, hogy (legalábbis a teljes verzió AutoCAD) alkalmazások betöltése, és helyezzük egy startup (indítás Suite), mint általában, elvégzett összes profil és a munkamenet AutoCAD'a.
Ezenkívül van még egy pont. Ha 2 vagy több fájl van, amelyek ugyanazokkal a nevekkel ellátott funkciókat írnak le, végre végrehajtja az utolsó betöltést. Mivel lehetetlen megjósolni az alkalmazások letöltésének sorrendjét, ezeket a helyzeteket el kell kerülni.