Topograf Online

Software => LISP, AutoLISP => Subiect creat de: Admin din Iun 19, 2006, 12:16 AM

Titlu: Scripturi in LISP AutoLISP
Scris de: Admin din Iun 19, 2006, 12:16 AM
Orice script realizat de voi pe care doriti sa il prezentati membrilor forumului il puteti publica la aceasta rubrica.
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: dtoni din Noi 14, 2006, 01:17 AM
http://www.cadastru.home.ro/noutati.html (http://www.cadastru.home.ro/noutati.html)


:)
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: soso din Mar 04, 2007, 01:34 PM
Un script pentru raportare fisier de coordonate in (Auto/Intelli)cad, pentru listare la scara 1:500. Sunt necesare straturile 0, cote, nrpunct.
Format fisier: nrpunct[spatii]nord[spatii]est[spatii]z.
Fisierul trebuie sa aiba extensia .sos.
http://rapidshare.com/files/19314891/rap500.VLX.html (http://rapidshare.com/files/19314891/rap500.VLX.html)


lansarea in executie se face cu  comanda
rap

Modificat de soso (04-03-2007 11:44:58)
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: set4 din Mar 08, 2007, 01:32 PM
Command: rap
Cannot set CLAYER to that value.
; error: Function cancelled
*Invalid*
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: set4 din Mar 08, 2007, 01:33 PM
.sos
 37   316032.427      404957.208         73.630
101   316015.275      404954.478         73.745
103   316011.521      404953.881         73.770
102   316003.173      404952.552         72.452
100   315990.358      404950.512         70.430
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: soso din Mar 13, 2007, 12:28 AM
Sunt necesare straturile (layer-ele) 0, cote, nrpunct.
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: shadow_ din Mar 29, 2007, 01:30 AM
Acuma ne chinuim sa facem 1 lisp care pe baza  noului regulament de predare a lucrarilor sa-ti creeze si sa completeze toate tabele , precum caroiaju si inventaru de coordonate  daca folosesti polilinii inchise ptr caldiri si teren ....   :cool:
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: lilica din Iun 07, 2007, 01:54 PM
shadow_: accelerati si terminati programele, astfel se schimba iar regulamentul si formatul de predare a lucrarilor!
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: a_dy2001 din Sep 09, 2007, 03:48 AM
si daca ati terminat vreau si eu... dau o bere sau mai multe!!!:)
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: a_dy2001 din Sep 09, 2007, 03:49 AM
serios daca a facut cineva asa ceva vreau si eu cu bani daca altfel nu se poate
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: invizible din Sep 22, 2007, 07:55 PM
Citat din: sosoUn script pentru raportare fisier de coordonate in (Auto/Intelli)cad, pentru listare la scara 1:500. Sunt necesare straturile 0, cote, nrpunct.
Format fisier: nrpunct[spatii]nord[spatii]est[spatii]z.
Fisierul trebuie sa aiba extensia .sos.
http://rapidshare.com/files/19314891/rap500.VLX.html


lansarea in executie se face cu  comanda
rap


uite ce dragut e autocadul cand ma avertizeaza :

CitatCommand: rap
; error: bad argument type: numberp: nil

 :rolleyes:  vreo idee ?  :rolleyes:
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: catalinord din Oct 25, 2007, 08:51 PM
ca tot e discutia de lispuri ... are cineva vreo idee unde gasesc si eu un lisp de usi si ferestre pt autocad care sa imi puna si dimensiunile ?

cu respectele cuvinete .... multumesc
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: DanCad din Oct 29, 2007, 12:00 AM
Sunteti interesati de Autolisp?

(http://topograf.3xforum.ro/img/pics/topograf.3xforum.ro/ok_1394.jpg)
581/436px 58.4KB

Modificat de DanCad (16-01-2008 10:32:52)
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: DanCad din Oct 29, 2007, 12:03 AM
Deja testez un vitor program care are la baza autolisp, dcl si disel, pentru intocmirea documentatilor cadastrale, eu nu sunt autorizat dar colaborez cu autorizati.
 :D
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Dec 11, 2007, 05:50 AM
Lispul de care zice shadow_ l-am facut deja.
Calcul de suprafete relevee+ intocmire tabel. ordin 634 anexa 11
Ce faceti cand tabelul contine peste 80 de incaperi cum calculati totalul la suprafata ?!!? :zzz:
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Dec 11, 2007, 05:53 AM
Mai am un lisp care afiseaza textul la Z cand aveti puncte 3D. (plan cotat)

 E-mail
pentru cine este interesat de lispuri
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Dec 11, 2007, 05:55 AM
catalinord > sa puna dimensiunile la usi pentru plan arhitectural ???
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: scootergts din Dec 11, 2007, 05:11 PM
Citat din: TOPDAVLADLispul de care zice shadow_ l-am facut deja.
Calcul de suprafete relevee+ intocmire tabel. ordin 634 anexa 11
Ce faceti cand tabelul contine peste 80 de incaperi cum calculati totalul la suprafata ?!!? :zzz:

bv foarte tare, poti fi un bun samaritean si sa'l uploadezi sa ne bucuram si noi de el?
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Dec 12, 2007, 03:50 AM
Citat din: scootergts
Citat din: TOPDAVLADLispul de care zice shadow_ l-am facut deja.
Calcul de suprafete relevee+ intocmire tabel. ordin 634 anexa 11
Ce faceti cand tabelul contine peste 80 de incaperi cum calculati totalul la suprafata ?!!? :zzz:

bv foarte tare, poti fi un bun samaritean si sa'l uploadezi sa ne bucuram si noi de el?

Cu cea mai mare placere. Va trimit mai multe numai sa-mi ziceti unde sa fac uploadul.
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Dec 12, 2007, 04:00 AM
ID-ul meu pe yahoo

 E-mail
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Dec 12, 2007, 04:01 AM
E-mail _______
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Dec 12, 2007, 04:03 AM
ID mess yahoo

 E-mail
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Dec 12, 2007, 04:11 AM
http://rapidshare.com/files/75918585/TOPDAVLAD.rar.html
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: cristi_gav din Dec 13, 2007, 03:39 AM
Multumesc TOPDAVLAD! Sper sa ma descurc cu ele!
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Dec 13, 2007, 03:58 AM
daca ai intrebari ma gasesti pe mess....in mod normal la profil ar trebui sa-mi
vezi si mailul
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Dec 13, 2007, 04:38 AM

                  Am facut capturi la 2 comenzi care mi s-au parut mie mai utile.




(pentru suprafataboudary2)




(pentru calculeaza suprafete)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: scootergts din Dec 13, 2007, 04:17 PM

                  Merci TOPDAVLAD, foarte util cel cu releveul, te scuteste de mult timp pierdut cu introducera suprafetelor, denumirilor de camere, etc. Destul de putini oameni au caracterul tau, ca imi dau seama ca sa faci o rutina lisp nu e lucru usor, cel putin pt nestiutori. Ai tot respectul meu!

_______________________________________
It's nice to be important, but is more important to be nice !


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: lilica din Dec 13, 2007, 06:13 PM

                  Cand esti pasionat de ceva si ai caracter, nu te gandesti numai la castiguri materiale. Sper sa avem cat mai multi colegi pe forum care gandesc si actioneaza astfel.
Numai bine!



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Dec 13, 2007, 06:17 PM

                  Cu placere! Cel care face totalul la suprafete l-am realizat pentru ca aveam
mai multe relevee, cu vreo 80-90 camere pe nivel si nu aveam timp sa le mai calculez cu calc. de mana. Sunt convis ca exista si alte metode de calcul fara
ca sa exporti in fisier excel dar lispul asta l-am facut mai repede.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Dec 16, 2007, 01:42 AM

                  Mai ziceti si voi ceva !!!!


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Ian 13, 2008, 06:44 PM

                  Misto. Da-i si tu share.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: cipry din Ian 14, 2008, 08:23 PM

                  un programel care pune usi si ferestre gasiti aici http://www.virses.com/doorwin.html


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Feb 02, 2008, 01:59 AM

                   Cotare  automata (cum este in topoLT) si generare puncte.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Feb 02, 2008, 02:00 AM

                  Cine doreste aplicatia sa ma caute pe mail.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Feb 02, 2008, 02:01 AM

                  




               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: alpha din Iun 18, 2008, 07:16 PM

                  mdeah!!! TOPDAVLAD.....NU POT SA ZIC DECAT CA SUNT NISTE FURACIUNI ORDINARE!!!!
Cristinel Bujor si al sau TopoLt iti spune ceva?!?!?!?!
iti spun eu daca nu.....
ce ai tu acolo sunt franturi din al sau program....mult mai complex si facut de unul....mult mai destept...asa ca las-o mai usor cu "MERITELE"



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Iul 05, 2008, 10:36 PM

                  WOOOW, ALPHA, CATA OSTILITATE  .  Ce am facut era ptr mine si ptr ca aveam nevoie de ceva rapid sa-mi coteze . In momentul respectiv nu aveam TOPO LT. Dar, frate, zi-mi si mie cum as putea sa "fur" ceva din TopoLT avand in vedere ca lispurile din program sunt protejate ?!?!
Gandeste si tu putin.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Corvinus din Iul 19, 2008, 08:01 PM

                  Respecte. Sunt nou venit si ma intereseaza si pe mine LISP in general, si intrand aici am vazut discutia aprinsa despre furaciuni, si as dori sa spun ca se poate fura din lispuri protejate, care sunt numa criptate. Doar ca trb sa stii cum  .


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: TOPDAVLAD din Iul 20, 2008, 06:22 PM

                  Corect Corvinus.    Nu m-a interesat sa fur. Procedura de executie la lispul meu este alta decat la TOPO LT tocmai ptr ca eu am gandit-o altfel si ptr ca nu fac lispuri, aplicatii ca sa-mi casting existenta.  In fine, eu am crezut ca aici putem face schimb de aplicatii si alte informatii utile ptr noi, dar vad ca mai mult se transforma intr-o competitie.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Corvinus din Iul 21, 2008, 03:17 AM

                  Nu stiu cat e competitie dar pe mine nu ma deranjeaza cand cineva se inspira de undeva, de exemplu (si nu stiu cat e de legal ce o sa spun ) , dar am cam decriptat niste lispuri de la Topograph sa le vad constructia , si am facut-o doar pentru inspiratie nu ca sa fur, si uite asa , fara sa folosesc catusi de putin din codul de acolo am reusit sa fac ceva lispuri cu setari pt autocad, pt diferite scari, si repet doar pt inspiratie leam folosit. Deci nu vad ceva rau in a te inspira dintr-un program atata timp cat nu afectezi integritatea programului prin insusiri de cod. In orice caz bravo Topodavlad pentru ca esti un "puturos".

Modificat de Corvinus (21-07-2008 00:18:23)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Corvinus din Iul 21, 2008, 03:21 AM

                  Si ca sa iti spun de ce te-am facut "puturos" - Prof. meu de topo inginereasca are o vorba: omul lenes e ala care nu vrea sa faca nimic, iar omul puturos e ala care vrea sa faca pe cat posibil cat mai mult da cu cat mai putina munca. Deci automatizand procesul de constructie a unui plan cu lispuri e o chestie foarte tareee, multumesc pe aceasta cale celor care au inventat limbajul LSP pentru ca s-au gandit si la noi astia mai puturosi.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Corvinus din Iul 21, 2008, 03:28 AM

                  Si cele de mai sus fiind spuse, as avea nevoie de putin ajutor, in ultima vreme am tot prins sate intregi de masurat pentru modernizare infrastructura (apa, canal, sosele... e un chin partea de birou tinand cont ca trb luate profile din 15 in 15 m) si ma gandeam sa fac un lsp pentru a uni punctele intre ele, doar cautand nr punctului, adica sa lansez comand pline si dupa sa ii dau punctele prin care sa treaca. Nu stiu daca se poate da m-am tot documentat si tot nu am aflat cum se poate atasa unui punct din autocad un nume dupa care sa fie recunoscut, nu doar textul cu matricola punctului. Asa ca daca aveti idei va rog "bombardati-ma".


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Corvinus din Iul 21, 2008, 05:46 PM

                  doru nu cred ca mai inteles, eu nu ma refer la planuri de intabulare sau de parcelare s.a.m.d., care sunt relativ mici si care daca ai fost in teren le unesti si dupa ce iti aduci aminte ca arata terenul. Ma refeream strict la lucrari mari cu 8000+ puncte, in care ti-ar fi mult mai usor sa unesti cum ma gandeam eu. Si da sunt de acord cu tine de ce sa dai pe autocad atat, dar ce sa ii faci, a fost monopolizat de scoli autocad-ul si in principiu cam ala e progr de cad care se preda, deci la ce vrei sa se gandeasca noii absolventi sa cumpere  , chiar daca nu face atatea.

Modificat de Corvinus (21-07-2008 14:47:06)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Iul 21, 2008, 07:22 PM

                  corvinus: In cazul lucrarilor cu numar mare de puncte singura solutie viabila este utilizarea codurilor si un soft corespunzator.
Nu strica sa parcurgi putin documentatia referitoare la principiul "linework" - de ex. http://www.ejsurveying.com/FBK_from_CSV ... _Codes.pdf

Daca folosesti TopoLt versiuni 7.x - comanda  JoinPct permite unirea punctelor dupa codurile acestora (vezi Help).


_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: klu_naravas din Iul 21, 2008, 09:45 PM

                  as fi interesat de acest mod de lucru cu linework,numai ca inteleg mai greu termenii din engleza.
daca e cineva care poate explica pe romaneste... as da mai multe beri...



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Corvinus din Iul 23, 2008, 09:29 PM

                  ms mult doru pt lamuriri si advex pt informatii, o sa ma documentez sa incerc si eu sa fiu mai eficient. Ms mult inca odata.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: klu_naravas din Iul 23, 2008, 10:17 PM

                  nu se baga nimeni sa ajute si un sarman topometrist....


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Aug 04, 2008, 01:35 PM

                  Pentru Corvinus:

Hai sa-ti dau o idee cu profilurile: fa-ti terenul o retea tip "mesh", pe urma expodeaz-o, iti va rezulta o colectie de entitati "3dface", cu care te poti descurca mult mai usor in materie de profile, curbe de nivel, interpolari.

Mai este un utilitar la care-i spune PROFIL sau PROFILE, merge sub DOS, îi dai fisierul de coordonate [nume punct  X  Y  Z], pe urma îi spui aproximativ numele punctelor cele mai apropiate de profilul tau si scarile pe lungime si inaltime si-ti scoate un DXF destul de misto.

Bafta !



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: diagodose2009 din Ian 14, 2009, 06:22 PM

                  BRAVO topodavlad, chiar dacă şi eu calculez automat suprafeţele cu un program lisp adaptat pentru formatul propriu de releveu - şi scuteşte de mult timp întocmirea unui releveu. Încercările de programe lisp ale user-ului topodvlad mi se par benefice, [ furăciuni de autolisp sunt în tot INTERNET-ul ].
.............
Aşa că este legal, poate nu extrage din TopoLT subprograme lisp,
dar găseşti şi pe GOOGLE.com fisiere sursă lisp.
 Limbajul lisp are o deficienţă mare, nu există opţiunea de compilare
a programelor lisp acceptată  de intellicad şi zwcad, (excepţie vlx-ul din internă autocad).

Modificat de diagodose2009 (04-12-2009 21:18:10)


_______________________________________
http://we.tl/D8HOKFyTJ7


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: viozel din Mar 10, 2009, 05:02 PM

                  cine ma poate ajuta cu un lisp pt generare taluz, sau un dume ceva


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mar 10, 2009, 06:31 PM

                  De ce Lisp pt. generare taluz ? Ai fisierul de definitii de linii, acolo sunt mai multe tipuri de linii pentru taluzuri. Daca chiar nu gasesti, cauta alt fisier cu extensia LIN si vezi pe-acolo ce gasesti (parca este topo.lin).
Nu stiu ce sunt alea dume (daca vorbim serios), cu asta nu te pot ajuta.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Mar 10, 2009, 06:49 PM

                  viozel:
La http://www.glamsen.se/CadTools.htm gasesti o aplicatie utila care te va ajuta in generarea liniilor dorite de tine + alte solutii bune pentru topografi.

Spor!

Modificat de advex (10-03-2009 16:49:54)


_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: viozel din Mar 13, 2009, 12:40 PM

                  scz de "dume", ma interesau de fapt NUME de aplicatii ce ma pot ajuta


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mar 13, 2009, 05:53 PM

                  Da, advex, dar stii ce e interesant ? Este FOARTE greu de apasat F1 daca nu stii ceva, si, se pare, mult mai usor de postat aici. Ca cineva tot "musca". Iar stilul asta ma enerveaza.
Scuze pentru exprimare, nu m-am adresat nimanui direct... dar  exista si chestiuni pe care nu le înghit. Fiecare cu defectele lui...



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: viozel din Mar 13, 2009, 06:35 PM

                  stiam de existenta unui LISP pt asa ceva si cautam in special pe acesta, cat despre utilizarea acadului mai am multe de invatat, folosesc si f1, experiente de tot felul, dar depinde si de timpul avut la dispozitie. sincer la a cata postare a fost (prima)  nici nu ma asteptam la ceva in timp relativ scurt, dar se vede ca m-am inselat si multam celor care au sarit in ajutor.




P.S. oricum parerea fiecaruia trebuie respectata



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Mar 13, 2009, 06:59 PM

                  Daca tot vorbim de taluz, de rampe... credeti ca la constructia din foto a participat si vreun topograf la trasare?


450/356px  27.5KB


_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mar 14, 2009, 12:33 PM

                  viozel:

Spune-mi (daca vrei) ce adresa de mail ai, si-ti trimit eu un fisier de definitii de linii care are si vreo 3-4 linii de tip taluz. Daca nu stii ce sa faci cu el, zi-mi si-ti spun - nu ma apuc acum fiindca poate deja stii. Ar trebui sa mai stiu daca desenele tale le mai dai si altora, care poate nu au fisierul respectiv - se rezolva si asta.

De LISP-ul ala n-am auzit.... probabil foloseste comanda "divide" sau "measure" si-ti insereasa un block din loc in loc.... daca e asa, nu te-as sfatui sa-l folosesti, mai mult te incurci. Foloseste pur si simplu linia de tip TALUZ, vezi la ce scara iti convine si gata.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Iul 15, 2009, 06:29 PM

                  Probabil o sa incep sa postez diferite utilitare LISP; daca veti fi interesati, voi continua. Primul este:

;;;Cere inaltimea dorita a textelor de modificat si le aduce la aceasta marime pe toate cele selectate,
;;; , si se pot muta daca se doreste. Se repeta cu CR sau click-dreapta.

(setq htext (getreal "\nMarimea textului: " ))
(defun C:HT()
(setq a (entget(car(entsel "\nSelectati textul de modificat: " ))))    ;;;selectam textul = a
   (progn
    (setq a (subst (cons 40 htext) (assoc 40 a) a))
        (entmod a)
    );;;de la PROGN

(command "move"  (cdr (car a)) "" )    ;;;de obicei trebuie si mutate dupa rotire
        );;;DEFUN

(princ "\nLansare cu comanda HT" )



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Iul 15, 2009, 06:33 PM

                  Si al doilea:

;;;SCRIE IN FISIERUL "PUNCTE.XYZ" X, Y, SI Z DE LA PUNCTELE SELECTATE ; cere numele punctului
;;;FISIERUL ARE FORMA:  PCT  Y  X  Z
;;;Pentru extragere coordonate si numerotare puncte

(defun c:zx()
(while
    (setq fis (open "c:\\puncte.xyz" "a" ))
    (setq pct (getpoint "\nSelectati punctul:" ))
    (setq x (rtos (car pct) 2 3)
          y (rtos (cadr pct) 2 3)
          z (rtos (caddr pct) 2 3))
    (setq nume (getstring T "\nNume punct?" ))
    ;;;(command "text" (list (+ 1.2 (car pct)) (+ 1.2 (cadr pct))) "0" nume)
    (setq linie (strcat nume " " y " " x " " z))
    (write-line linie fis)
    (close fis)
        );;;WHILE pentru selectie nula
            );;;DEFUN
(princ "\nLansare cu ZX" )
(princ "\nSuspendare cu ENTER" )



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Iul 16, 2009, 01:08 PM

                  Uneori, am avut de adus la unghiul zero (directia = East) mai multe texte de pe o plansa, pe care le scrisese altcineva la tot felul de unghiuri. Mi-a fost mai usor cu lispul de mai jos:

;;;ADUCE TEXTELE SELECTATE  LA UNGHIUL 0  (ASSOC 50)
;;;se poate introduce comanda de mai jos pt. setare unitati
;;;(command "units" "2" "3" "3" "4" "0.0000" "Y" ) (graphscr)

(defun C:RT()

(setq a (entget(car(entsel "\nSelectati textul de rotit: " ))))    ;;;selectam textul
   (progn
    (setq a (subst (cons 50 0) (assoc 50 a) a))
        (entmod a))
(command "move"  (cdr (car a)) "" )    ;;;de obicei trebuie si mutate dupa rotire
        )    ;;;DEFUN

(princ "\nLansare cu comanda RT" )



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Iul 16, 2009, 01:33 PM

                  John Doe: multumim pentru programe!

Iti recomand o vizita la http://www.asmitools.com/Files/Programs.html unde gasesti solutii si idei interesante in acest domeniu.



_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Iul 16, 2009, 02:17 PM

                  Da, o sa ma uit. Ce am postat pana acum sunt chestiuni simple, le-am facut pentru mine si exact pentru ce-mi trebuia la un moment dat. Toate functioneaza, si sunt testate inainte de postare, merg cam pe orice AutoCAD pana la 2007 inclusiv, mai departe nu am. Am adaugat si comentarii, ca sa se poata modifica diverse chestiuni. Si nu sunt imbricate prea mult, tocmai ca sa fie mai usor de înteles.
O sa vina si lucruri mai complicate, dar sunt mai greu de explicat. Sa vedem daca e nevoie.
Sunt si pe Net o groaza de lispuri, dar nu toate merg, nu fac chiar ce vreau eu, nu pricep eu bine engleza sau nu s-a pierdut timpul cu explicatii la ele. Partea buna e ca sunt gratis.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Iul 22, 2009, 08:33 PM

                  cine ma ajuta cu un lisp, program de facut profile, nu vreau sa aud de profLT, si altele de genu pe care trebuie sa le platesc, ca sa fac cate un profil din an in pasti`.
Pana acum am mai incercat cateva programele, lispuri, dar fara rezultat.

Am mai auzit discutandu-se de ceva program PROF.exe, sau cam asa ceva, "merge" e bun de ceva ?, sau alta solutie, este binevenita.

Numai bine !



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Aug 03, 2009, 11:20 AM

                  Prof.exe e sub DOS, merge binisor; iti trebuie un fisier   <numepunct> <X> <Y> <Z>   , îi spui prin ce puncte vrei profilul si poti exporta un DXF cu profilul. Spune-mi ce adresa de mail ai.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: scootergts din Aug 03, 2009, 11:30 AM

                  prof.exe e tot profLT dar e o versiune mai veche, sub dos. oricum e tot de Bujorel facuta, iti faci treaba cu el. daca te intereseaza da msg si rezolvam

_______________________________________
It's nice to be important, but is more important to be nice !


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Aug 03, 2009, 01:01 PM

                  am rezolvat cu profilele, multumesc !


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: diagodose2009 din Sep 03, 2009, 12:01 PM

                  vvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvvv

Modificat de diagodose2009 (04-12-2009 21:18:55)


_______________________________________
http://we.tl/D8HOKFyTJ7


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Sep 09, 2009, 11:43 AM

                  Un utilitar micut pentru schimbarea stilului textului. Merge sub orice AutoCAD, se poate adapta usor la nevoile fiecaruia. Probabil sunt multe altele asemenea, sper sa va fie de folos.


;;;MODIFICA STILUL TEXTULUI SELECTAT LA "ARIAL" , SI LE MUTA PE URMA.

;;;========definim nout stil ARIAL; merge si daca exista deja=======
(command "-style"
    "Arial"        ;;;numele stilului
    "arial.ttf"    ;;;numele fontului, cu extensie
    0.00        ;;;height
    1        ;;;width factor
    0        ;;;obliquing angle
    N        ;;;backwards
    N)        ;;;upside-down


;;;========comanda propriu-zisa

(setq s_text '"Arial" )
(defun C:SX()
(setq a (entget(car(entsel "\nSelectati textul de modificat: " ))))   
   (progn
    (setq a (subst (cons 7 s_text) (assoc 7 a) a))
        (entmod a)
    )        ;;;de la PROGN

(command "move"  (cdr (car a)) "" )   
        )    ;;;DEFUN

(princ "\nLansare cu comanda SX" )



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Sep 16, 2009, 09:24 PM

                  Utilitar care transforma cate una suprafetele scrise de TopoLT din "123.00mp" în "S=0.0123Ha" ; daca faceti parcelari cu TopoLT e destul de util. Nu am reusit sa configurez TopoLT sa faca singur asta.


;;;MODIFICA toate textele din "1000.00mp" in "S=0.1000Ha"
;;;Se selecteaza câte unul

(defun C:MD()


(setq a (entget(car(entsel))))
(setq txt (cdr (assoc 1 a)))        ;;;assoc 1 = textul
(setq txt (atof txt))
(setq txt (/ txt 10000))
(setq supraf (rtos txt 2 4))        ;;;2=modul de transformare, 4=nr. zecimale
(setq tmod (strcat "S=" supraf "Ha" ))

(setq a (subst (cons 1 tmod) (assoc 1 a) a))
(entmod a)


        )
(princ "\nLansare cu comanda MD" )



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Sep 17, 2009, 03:33 PM

                  Si inca unul, daca vreti sa scrieti suprafata unui contur inchis sub forma "S=xxxmp", prin pick in interiorul conturului, alegeti punctul de start pt. text si unghiul de rotatie (cu stilul curent):


;;;Se selecteaza un contur, calculeaza aria lui
;;;si o scrie sub forma S=xxxmp
(defun C:A ()

(command "-boundary" "A" "I" "N" "" "" pause "" )
(command "area" "e" "last" )    ;;;calculam aria ei
(setq sup1 (getvar "area" ))    ;;;si o extragem cu numele SUP1
(command "erase" "l" "" )       
           

(setq sint (fix sup1))
(setq dif (- sup1 sint))
(if (>= dif 0.5) (setq sint (+ 1 sint)))

(setq rez (strcat "S=" (rtos sint 2 0) "mp" ))

(setq pct (getpoint "Punct start text:" ))
(command "text" pct "" pause rez "" )

        );;;DEFUN

(princ "\nLansare cu comanda A" )



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: radian2009 din Sep 17, 2009, 09:50 PM

                  puneti topolt-ul aici bucata cu bucata?

 



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Sep 18, 2009, 11:13 AM

                  Sunt aplicatii simple, facute de mine, postate in ideea ca pot fi de ajutor si altora uneori. Contin codul sursa cu comentarii, nu sunt imbricate prea tare, pentru a putea fi si modificate dupa nevoia fiecaruia.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: radian2009 din Sep 18, 2009, 11:34 AM

                  john Doe, de ce nu te apuci de facut ceva mai complex daca tot te pricepi?


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: toporas din Sep 18, 2009, 11:55 AM

                  Reiau si aici ideea scrisa in topicul topolt. De ce nu face cineva un site cu scopul declarat de a construi un program cu contributia oricui vrea sa vina cu idei si experienta, un open source, unde un colectiv de baieti buni(am vrut sa spun destepti, dar acest cuvant a primit o conotatie pe care nu voiam sa o dau acestui cuvant) care sa adune si sa asambleze aceste idei intr-un program utilizabil.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Sep 18, 2009, 01:29 PM

                  Aplicatiile mai complexe nu sunt pe gustul tuturor, faci anumite treburi cu ele dar altele nu, si de obicei cam fiecare vrea altceva sau altfel. M-am obisnuit sa lucrez cu aplicatii relativ consacrate, iar ce nu fac ele automatizez eu. Cam asta e nivelul meu - sunt topograf de formatie, nu programator. Ca pot judeca logic si construi o aplicatie, asta e altceva.
Cred ca a construi un site pe tema propusa implica mai multe lucruri decat pare la prima vedere. Mai multi oameni o pot face, eu singur nu - ramân totusi deschis la propunerea asta. In plus, exista deja astfel de site-uri - ramane de vazut daca e mai util sa se deschida inca unul sau sa colaboram cu cele existente deja si cu oamenii de acolo.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: toporas din Sep 18, 2009, 07:22 PM

                  Pana acum am vazut site-uri specifice pentru popularizarea unor programe, sau cum site-ul tau, pentru prelucrari directe de date, dar nu am vazut un site de colaborare(ca un fel de Wikipedia, dar pentru un program, nu pentru un dictionar, deci la o scara mult mai mica). Aceasta e ideia - hai sa facem toti un program care sa fie pe placul fiecaruia!
Oare putem sa ne inhamam la acesta sarcina? Efortul este mare... da' macar sa incercam!



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Sep 21, 2009, 11:32 AM

                  Nu stiu daca chiar trebuie un site separat. Putem deschide pe acest forum un subiect dedicat.
Putem chiar sa incepem de aici:
Am facut o aplicatie care genereaza automat PAD-ul, nota de tarifare, calculul suprafetelor si anexele 1, 2, 5 pentru o documentatie de prima inscriere in CF. Caseta care trebuie completata arata ca mai jos, iar in afara de completarea ei mai trebuie trei pick-uri si gata tot:


325/236px  18.6KB



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Sep 21, 2009, 11:34 AM

                  Urmeaza sa o completez cu generarea planului de incadrare in zona (asta cred ca o descurc singur), si cu generarea tabelului de miscare parcelara; deocamdata am facut doar un proiect de caseta ca mai jos, dar m-am cam blocat in idei. Aveti propuneri ?


421/239px  21.1KB



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: toporas din Sep 21, 2009, 01:34 PM

                  Foarte bine John Doe, automatizarea activitatii arata ca esti foarte activ si nu ti-e jena sa gandesti sau sa inovezi. Eu am ramas doar la stadiul de sabloane, dar la activitatea mea e bine si asa... Ce as fi vrut eu sa facem ar porni de la CP si datele pe care le punem acolo. Variabilele Cp-ului pot fi folosite in automatizare.Dar as fi vrut sa facem un program care sa aiba sectiune de calcule(prelucrari de masuratori, chiar daca sunt forte rar folosite-din pacate- cum are goguletz, daca nu ma insel), o sectiune de prelucrari grafice(cum e CadTools sau asemanatoare topolt si proflt), o sectiune juridica(cu toate legile, ordinele si mai stiu eu ce ne atinge direct si indirect), eventual o arhiva actualizata in permanenta cu rezultatele activitatii. Pot parea aiureli, dar daca am avea un astfel de program s-ar standardiza oarecum munca, ar fi unitara prezentarea la OCPI a lucrarilor si ce e mai important, ar eficientiza enorm activitatea noastra. Putem rade de o astfel de idee sau putem sa ne dam mana sa o realizam si cine stie, poate ca o va adopta chiar ANCPI si o va dezvolta! NU?


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Sep 21, 2009, 02:15 PM

                  Inteleg ce vrei tu. Chestiunea cu CP-ul e o idee, si eu m-am tot gândit dar nu am aflat înca cum as putea introduce variabilele mele in program.
Sectiune de prelucrari masuratori: prea putin folosite, cere foarte multa munca, exista deja - deci nu are sens. Desi... parca vad ca daca voi fi obligat sa fac asa ceva, am s-o fac...
Baza de date legislativa: am facut deja vreo doua variante (in Access si Word), si nu mi-a folosit nici mie.
Prelucrari grafice: exista TopoLT si altele. Nici roata n-a fost reinventata, stii. Indiferent de numarul de spite.
Mai poti fi sigur de ceva: nimeni nu va lucra unitar decat daca va fi obligat. Iar pana acolo mai este. Si de obicei, pâna la Dumnezeu îti rup sfintii picioarele.
Scuze pentru pesimism; nu inseamna ca ma opresc aici.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: toporas din Sep 21, 2009, 02:52 PM

                  Fiecare din sectiunile propuse exista.Nu vreau sa pun eu coada la cireasa!. Dar nu exista intr-n program GRATUIT. Cum ti-am spus, am sabloane pentru toate activitatile de editare a lucrarilor de cadastru, dar nu e un program care sa faca TOT. Sunt convins ca nu e usor si se poate incape cu ceea ce exista. Bujor are variabilele CP, deci se pot obtine. ANCPI are tot interesul sa ne ajute! Nu stiu daca si cere ceva pentru asta!
Baza de date legislative nu e mare scofala-o fereastra in care poate fi derulat un pdf e suficienta. Eu mereu consult 634 modificat cu 134, deasemenea L7 si D834 cand e cazul si regulementele ANCPI, tarife, etc.
As vrea ca la terminarea unei lucrari sa actualizez un desen dwg ce contine toate lucrarile cu planul realizat, cu puncte noi si vechi, eventual cu un link spre fisierul de masuratori sau folder-ul cu lucrarea. Si toate astea cu un click pe o iconita.
Mi-ar placea ca toate astea sa fie intr-un pachetel. Si pentru pachetelul acesta am pledat eu pana acum. Si ma opresc.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: diagodose2009 din Noi 02, 2009, 12:24 AM

                  S-a mutat


334/580px  18.1KB

Modificat de diagodose2009 (10-01-2010 00:01:42)


_______________________________________
http://we.tl/D8HOKFyTJ7


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: 79 din Ian 22, 2010, 09:48 PM

                  John Doe      "Am facut o aplicatie care genereaza automat PAD-ul, nota de tarifare, calculul suprafetelor si anexele 1, 2, 5 pentru o documentatie de prima inscriere in CF. Caseta care trebuie completata arata ca mai jos, iar in afara de completarea ei mai trebuie trei pick-uri si gata tot:"

Astepam cu interes aplicatii care sa ne usureza munca.
Spor la treaba si asteptam sa le postati ca sa le putem incerca si noi.

 



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Ian 25, 2010, 10:22 AM

                  Da, nu am uitat si o sa ma tin de cuvânt.
Am constatat ca aplicatia includea o portiune de cod preluata de la altcineva, portiune pe care trebuie sa o rescriu, si apoi dupa aia o pot posta aici. In plus, vreau sa completez aplicatia ca sa scrie si tabelul de miscare parcelara iar asta imi da ceva de lucru.
Daca as sti ca nu se modifica regulamentele din nou, poate as avea mai mult chef de lucru...



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Feb 05, 2010, 11:28 AM

                  Am avut de verificat suprafetele la mai multe parcele de pe un plan, si m-am saturat de selectat contururi, deschis si inchis caseta "properties" si Escape. Asa ca am scris câteva randuri de Lisp, si daca fac un click in interiorul unei parcele cu contur inchis imi afiseaza pe ecran o caseta de dialog in care scrie "S=1234mp". Caseta are un singur buton, OK. Nu modifica nimic in desen. Codul este:

;;;Se selecteaza un contur, calculeaza aria lui (rotunjita la intreg)
;;;si o zice omului pe ecran, intr-o caseta de alerta cat e aria

(defun C:A ()
(command "-boundary" "A" "I" "N" "" "" pause "" )
(command "area" "e" "last" )    ;;;calculam aria ei
(setq sup1 (getvar "area" ))    ;;;si o extragem cu numele SUP1
(command "erase" "l" "" )       
(setq sint (fix sup1))
(setq dif (- sup1 sint))
(if (>= dif 0.5) (setq sint (+ 1 sint)))

(setq rez (strcat "S=" (rtos sint 2 0) "mp" ))

(alert rez)

        );;;DEFUN

(princ "\nLansare cu comanda A" )



Tastati A si Enter, si porneste. Daca nu va convine, schimbati A de dupa "defun" si porneste cu ce ati scris voi. Schimbati si textul de la ultima linie ca sa nu va incurcati mai tarziu.
Suprafata este rotunjita la intreg.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Feb 05, 2010, 11:53 AM

                  Pentru verificari rapide in Autocad de suprafete, lungimi laturi, perimetre etc va recomand si utilizarea BubbleCAD, o aplicatie gratuita ( http://www.bubblecad.com/en/bubble.htm ) - necesita doar inregistarea pe site.

Tinand cursorul mouse-ului peste elementul grafic (linie, polilinie, block) aveti afisate caracteristicile pe ecran. Se pot seta elementele si durata de afisare. 



Modificat de advex (05-02-2010 09:54:30)


_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Feb 05, 2010, 01:45 PM

                  Misto chestia.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Feb 19, 2010, 10:16 AM

                  Am avut nevoie sa cotez mai multe parcele pe un plan, si am scris un Lisp care face asta. Conditia este sa fie un contur inchis. Aplicatia genereaza un fisier auxiliar numit "Cord.txt", unde scrie coordonatele punctelor de inflexiune ale conturului ultimei parcele cotate; am avut nevoie de asa ceva ca suport de date externe. Verificat pe AutoCAD 2000-2007.
Listez fisierul aici:

;;;Scrie pe desen lungimile laturilor unui contur inchis

(defun c:cote ()
(setq pct (getpoint "\nFaceti un click in interiorul parcelei: " ))
(setq htext (getreal "\nInaltime text: " ))
(setq dmin (getreal "\nDistanta minima care sa fie cotata, metri: " ))
(command "-boundary" pct "" )
(setq lent (entget (entlast)))
(command "area" "e" "last" )    ;;;calculam aria ei
(setq smas (getvar "area" ))
(setq smasfix (fix smas))
(setq dif (- smas smasfix))
(if (>= dif 0.5)(setq smas (+ 1 smasfix))(setq smas smasfix))
;;;stergem boundary
(command "erase" (entlast) "" )

;;;scriem coordonatele si nr. crt. in fisier
(setq ncor 0)
(setq cont 0)
(setq fis (open "Cord.txt" "w" ))

(while (setq entc (nth cont lent))
    (setq cont (+ 1 cont))
    (if (= 10 (car entc))(progn
        (setq ncor (+ 1 ncor))
        (write-line (itoa ncor) fis)
        (write-line (rtos (cadr entc)) fis)
        (write-line (rtos (caddr entc)) fis)

                );;PROGN de la IF
                    );;; IF
                        );;WHILE
(close fis) ;;;inchidem fisierul de coordonate scris

;;;ncor=nr. de puncte
(setq fis (open "Cord.txt" "r" ))

;;;stocam x, y de la pct. nr. 1 ca ne trebuie
(read-line fis)    ;;;pentru nr. pct., nu ne trebe la sfarsit
(setq x1 (distof (read-line fis))
         y1 (distof (read-line fis)))
(setq xx1 x1)
(setq yy1 y1)

(setq cont 1)
(while (< cont ncor)    ;;;ar trebui sa citeasca pana la ultimul punct, primul e citit deja
(setq cont (+ 1 cont))
    (setq crt (read-line fis))    ;;;nr. punct, nu trebe
    (setq x2 (distof (read-line fis)))
    (setq y2 (distof (read-line fis)))
;;; x2y2 va fi citit din nou la urmatorul ciclu, deci se va pierde
;;; x, y anterioare se stocheaza cu numele x1, y1 si se folosesc ca atare in calcule
;;; x2, y2 = punctul din fata; x1, y1 = punctul din spate

(setq xm (/ (+ x2 x1) 2))
(setq ym (/ (+ y2 y1) 2))

(setq dx (- x2 x1))
(setq dy (- y2 y1))
(setq alfa (atan  dy dx))
(setq rot (+ 200 (atof (angtos alfa))))
(setq pt1 (list x1 y1))
(setq pt2 (list x2 y2))
(setq dis (distance pt1 pt2))
;;;calculam offsetul textului fata de linie
(setq ofx (* 1 (cos alfa)))
(setq ofy (* 1 (sin alfa)))

;;;acum sa vedem scara, distanta si daca o punem, htext
(if (> dis dmin)(progn
(command "text" (list (+ ofx xm) (+ ofy ym)) htext rot ( strcat (rtos dis 2 2) "m" ))
    (setq x1 x2)
    (setq y1 y2)
        ));;;PROGN si IF de la verificare dist. minima
            );;;WHILE de la citire fisier
(close fis)

;;;repetam toata povestea pentru segmentul dintre ultimul punct si primul
(setq x1 xx1)
(setq y1 yy1)
(setq xm (/ (+ x2 x1) 2))
(setq ym (/ (+ y2 y1) 2))

(setq dx (- x2 x1))
(setq dy (- y2 y1))
(setq alfa (atan  dy dx))
(setq rot (atof (angtos alfa)))
(setq pt1 (list x1 y1))
(setq pt2 (list x2 y2))
(setq dis (distance pt1 pt2))
(if (> dis dmin)(progn
(command "text" (list xm ym) htext rot ( strcat (rtos dis 2 2) "m" ))
        ));;;PROGN si IF

);;;end defun
(alert "Lansare cu comanda COTE" )



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mar 06, 2010, 07:44 PM

                  Am mai facut un utilitar Lisp, pentru caroiaje. Cere scara si 2 puncte (puse oricum, face caroiaj intre ele). Sursa e cam lunga (vreo 100 de linii numai fisierul LSP, plus vreo 50 DCL-ul), nu stiu daca are sens sa postez aici. Daca e cineva interesat, sa spuna si ori le postez, ori le trimit pe mail. Arata ca mai jos; totul se pune pe un layer nou creat, nu sut blocuri sau grup ci doar linii si text. Revine la setarile OSNAP si la layerul de pe care s-a pornit.


194/219px  10.5KB



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: adrianmonea din Mar 07, 2010, 10:53 PM

                  
John Doe a scris:

Nu stiu daca chiar trebuie un site separat. Putem deschide pe acest forum un subiect dedicat.
Putem chiar sa incepem de aici:
Am facut o aplicatie care genereaza automat PAD-ul, nota de tarifare, calculul suprafetelor si anexele 1, 2, 5 pentru o documentatie de prima inscriere in CF. Caseta care trebuie completata arata ca mai jos, iar in afara de completarea ei mai trebuie trei pick-uri si gata tot:



ma ajuti si pe mine cu chestia asta?



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mar 08, 2010, 10:03 AM

                  Ti-am trimis mail.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Mar 08, 2010, 10:43 AM

                  sunt si eu interesat de scripturile astea LISP, dar nu ai putea sa le uploadezi pe un site, sa le ia de acolo toti cei care sunt interesati ?!

O zi faina !



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mar 08, 2010, 05:00 PM

                  @kod: Ba da, dar e ceva mai complicat fiindca ar trebui sa le compilez intr-un singur fisier, care nu se mai poate modifica dupa cum are chef utilizatorul, iar unul dintre scopurile mele era tocmai sa faca cine ce vrea cu ele. Stiu cum era cand invatam eu Lisp, si cat mi-ar fi folosit asa ceva. Iar cine e chiar interesat se uita si aici. Daca vor fi prea multi, probabil asa am sa fac; deocamdata nici nu mai stiu o adresa unde se pot uploada ca mi s-a busit address book-ul.
Ti le trimit si tie. Spor !



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Mar 08, 2010, 06:18 PM

                  Multumesc, mult ! Nu din rautate am intrebat daca le poti pune pe toate intr-un folder si sa-l uploadezi pe vre-un site gen:
www.megaupload.com
www.mediafire.com
www.netdrive.ws ...mai sunt si altele da nu-mi vin in minte acum.

Ci ideea era ca daca tot sunt mai multi interesati sa nu te deranjeze de fiecare data cu aceeasi rugaminte: "Poti sa mi le trimiti si mie ? "

Toate cele bune !



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mar 09, 2010, 10:01 AM

                  @kod: Mi-am dat seama de ce ai zis sa le uploadez, nu-ti fa probleme. Mersi pentru linkuri.

Si inca ceva: se poate scrie fisierul CP direct din AutoCAD. Deschideti un fisier CP cu Notepad si o sa vedeti ca are o structura relativ simpla. Eu am reusit sa-l fac, dar mai e de lucru.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Mar 09, 2010, 10:35 AM

                  Da asa este practic un cod sursa .xml scris sub forma de tag-uri, se poate deschide/edita cu excel si/sau notepad. Desi nu stiu cine se apuca sa completeze linie cu linie decat sa completeze un tabel. Poate daca s-ar face un lisp in care sa-ti completezi informatiile in mod succesiv, eventual sa se automatizeze tot ce s-ar putea (gen suprafata, generare fisier dxf, salvare sub ext. cpxml...etc. ) stiu eu ce s-ar mai putea face, probabil multe altele, eu nu ma prea pricep la Lisp, cum am spus !

Numai bine !

Modificat de kod (09-03-2010 10:21:17)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: diagodose2009 din Mar 11, 2010, 03:08 PM

                  Se Sterge

Modificat de diagodose2009 (05-05-2010 05:28:03)


_______________________________________
http://we.tl/D8HOKFyTJ7


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Marian din Mar 11, 2010, 04:13 PM

                  Am fost unul din cei care au cistigat licitatia aia cu PLANURILE CADASTRALE. Am avut de facut citeva mii de CP-uri. Am folosit o aplicatie care le genera automat. Le-am predat la OCPI care le-a integrat in E-Terra 2 si nu am avut nici o problema de preluare.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mar 11, 2010, 05:11 PM

                  @diagodose: nu te contrazic, poate sa fie si cum spui tu. Am verificat ce am facut eu prin toate metodele care mi-au dat prin cap, am corectat tot ce dadea  eroare si acum astept sa vad ce spune si programul de la OCPI. Personal, nu as crede ca pentru fisierul CP ai nevoie de nu stiu ce hipergenerator XML dar pana la proba contrarie ma abtin.

@marian: felicitari.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: scootergts din Mar 15, 2010, 12:52 PM

                  va salut !
Un program/addon/lisp pentru autocad care sa-mi insereze usi/geamuri la relevee de genul descris in imagine stie cineva? ii multumesc anticipat

p.s. folosesc Autocad 2009


580/389px  23.2KB


_______________________________________
It's nice to be important, but is more important to be nice !


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: goguletz din Mar 15, 2010, 01:45 PM

                  Cred ca mai usor ti-ar fi sa creezi blocuri (block) pentru usi, ferestre, etc. Dupa care le poti copia dintr-o plansa in alta.

Multa bafta!


_______________________________________
www.topo-online.ro
www.firmecadastru.ro


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Mar 16, 2010, 06:58 PM

                  Am nevoie de urmatorul lucru cand inserez un patrulater in ACad.
comanda: "rectangle"
datele problemei: am 2 coordonate (Y colt stanga jos si X colt dreapta sus)
specific celelalte coordonate se vor determina automat prin intersectii de linii, orizontale si verticaleale.
intrebare: cum fac sa-mi deseneze chenarul (patrulaterul) ?
eu sa introduc doar cele 2 coordonate (atentie nu perechi de coordonate, doar Y colt stanga jos si X colt dreapta sus)
Vre-un lisp ceva, stiu sigur ca se poate.

Si alta intrebare, dupa ce am georeferentiat un raster cum il pot salva din AutoCAD ca si imagine *TIFF + word file (contine coordonatele in stereo `70) sau alt format *.JPG, *BMP , dar neaparat sa-mi salveze automat si fisierul *.TFW ce contine coordonatele !



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Mar 16, 2010, 10:14 PM

                  
kod a scris:

Am nevoie de urmatorul lucru cand inserez un patrulater in ACad.
comanda: "rectangle"
datele problemei: am 2 coordonate (Y colt stanga jos si X colt dreapta sus)
specific celelalte coordonate se vor determina automat prin intersectii de linii, orizontale si verticaleale.
intrebare: cum fac sa-mi deseneze chenarul (patrulaterul) ?
eu sa introduc doar cele 2 coordonate (atentie nu perechi de coordonate, doar Y colt stanga jos si X colt dreapta sus)
Vre-un lisp ceva, stiu sigur ca se poate.

Si alta intrebare, dupa ce am georeferentiat un raster cum il pot salva din AutoCAD ca si imagine *TIFF + word file (contine coordonatele in stereo `70) sau alt format *.JPG, *BMP , dar neaparat sa-mi salveze automat si fisierul *.TFW ce contine coordonatele !


1. Nu cred ca este suficient sa introduci doar aceste valori pentru a genera patrulaterul dorit de tine.
De exemplu:


2. Poti utiliza un program gratuit pentru generare fisier tfw, jpw (a mai fost semnalat pe forum)
Raster Manager: http://www.abcautocad.it/software_autoc ... er_AutoCAD


_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Mar 17, 2010, 12:37 AM

                  mda, sa raspund:

1. advex uite cum arata un "coord. file" ce contine coordonatele (asa cum am spus anterior Y colt stanga jos, X colt dreapta sus)

format *.twf

0.500000000000000
0.000000000000000
0.000000000000000
-0.500000000000000
417080.250000000000000
553241.250000000000000

se poate si fara atatea zecimale, dar asta e:
linia 1 si 4 reprezinta precizia unui pixel exprimata in m (0,5 m) iar ultimele 2 linii : linia 5, respectiv 6 cele 2 coord.  Y colt stanga jos, X colt dreapta sus
liniile 2 si 3 nu stiu exact ce sunt, dar oricum sunt 0 "zero" tot timpul.
Presupun ca lungimile laturilor vor fi date de aceasta scara (0,5 m/pixel in cazul de fata) si asa se face georeferentierea

2. mi-am dat seama ca merge si daca schimb extensia "word file-urilor" ce contin coordonate: si anume: *.twf pt. *TIFF-uri cu *.jgw pt. *.JPG-uri desi la unele extensi gen *.ers trebuiesc extrase, dar nu e complicat 



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Mar 17, 2010, 09:11 AM

                  kod:
Fata de enuntul initial, acum sunt altele datele problemei. Este o diferenta intre a genera un patrulater stiind x, y la colturi si fisierele world file.

Explicatia ta privind caracteristicile fisierului este incompleta. Vezi articol: http://en.wikipedia.org/wiki/World_file
Pentru a genera patrulaterul dorit de tine, coordonatele x,y ale colturilor sunt extrase din fisierul world dar si din foto (transformare afina).

Pentru georeferentiere planuri topo, ortofotoplanuri la care aveti si fisierele world asociate va recomand un fisier autolisp. El este disponibil pe http://www.theswamp.org/index.php?topic=8904.0 - autor ronjonp.



;;;Reads world tiff file (.tfw) to scale and place image correctly in autocad.
;;;First insert all tiff images into drawing at whatever scale and insertion point.
;;;If the TFW exists in same directory and is named the same as the image selected,
;;;it will automatically be found and the image will be scaled and placed. If it is
;;;not in the same directory the browser. Currently the routine does not
;;;support image rotation and disregards lines 2 and 3 of the TFW file.

(defun c:tfw (/          file_select     line1   line2   line3   line4
          line5   line6   ent     obj     hgt     wdth    bbox
          tfwlist name    llc     urc     ulc     pt
         )
  (vl-load-com)

;MP'S ROUTINE________________________________
  (defun FileToList (filename / handle result)
    (cond
      ((and
    (eq 'str (type filename))
    (setq handle (open filename "r"))
       )
       (while (setq stream (read-line handle))
    (setq result
        (cons (vl-string-trim
            " "
            stream
              )
              result
        )
    )
       )
       (close handle)
       (reverse result)
      )
    )
  )
 ;____________________________________________

  (defun getboundingbox    (obj / minpt maxpt llc urc)
    (vla-getboundingbox obj 'minpt 'maxpt)
    (mapcar 'vlax-safearray->list (list minpt maxpt))
    (setq llc (vlax-safearray->list minpt)
      urc (vlax-safearray->list maxpt)
    )
    (list llc urc)
  )
  (while
    (= ent nil)
     (setq ent (car (entsel "\n Select Image: ")))
     (if (= ent nil)
       (alert "\n You lush, you missed your pick...")
     )
  )
  (setq    obj  (vlax-ename->vla-object ent)
    name (vla-get-name Obj)
    hgt  (vla-get-height Obj)
    wdth (vla-get-width Obj)
  )
  (if (findfile (strcat (getvar 'dwgprefix) name ".tfw"))
    (setq file_select (strcat (getvar 'dwgprefix) name ".tfw"))
    (progn
      (setq file_select
         (getfiled (strcat "Select TFW File to read for image " name)
               (strcat (getvar 'dwgprefix) name)
               "tfw"
               8
         )
      )
      (if (findfile (strcat (getvar 'dwgprefix) file_select))
    (setq file_select (strcat (getvar 'dwgprefix) file_select))
      )
    )
  )
  (setq    tfwlist    (FileToList file_select)
    line1    (nth 0 tfwlist)
    line2    (nth 1 tfwlist)
    line3    (nth 2 tfwlist)
    line4    (nth 3 tfwlist)
    line5    (nth 4 tfwlist)
    line6    (nth 5 tfwlist)
  )
  (vla-put-imageheight obj (* hgt (atof line1)))
  (vla-put-imagewidth obj (* wdth (atof line1)))
  (setq
    bbox (getboundingbox obj)
    llc    (car bbox)
    urc    (cadr bbox)
    ulc    (list (car llc) (cadr urc))
  )
  (setq pt (list (atof line5) (atof line6)))
  (vla-move obj (vlax-3d-point ulc) (vlax-3d-point pt))
  (alert (strcat "DATA USED FROM FILE: " file_select "\n"
        "\n"         line1    "\n"         line2
        "\n"         line3    "\n"         line4
        "\n"         line5    "\n"         line6
        )
  )
)

Modificat de advex (17-03-2010 07:13:37)


_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Mar 17, 2010, 09:38 AM

                  Asa este, ai dreptate advex, la primul post neintentionat,am uitat sa specific de celelalte valori care intra la un "word file" pe care le-am explicat in postul precedent. si da practic liniile 2 si 3 reprezinta, rotatia pe axele x, respectiv y (sau cum ii spui tu, afinitatea).

1.50000000000000 (X scale, pixel size in meters) 
0.00000000000000 (affinity - Y-scale in X dir.) 
0.00000000000000 (affinity - X-scale in Y dir.) 
-1.50000000000000 (Y scale) 
1934001.50000000000000 (X coordinate of the upper left pixel) 
1187698.50000000000000 (Y coordinate of the upper left pixel) 

si uite inca un Lisp, foarte bun de georeferentiere automata cand ai "word file-ul" merge pt. orice tip raster cu word file-ul corespunzator: *.Tiff, *.Jpeg, *.Bmp, *.Png etc.

http://www.xanadu.cz/dl/GeoRefImg.zip

cum procedati:

1. se copiaza GeoRefImg.VLX in subdirectorul "Support" din directorul Autocad (nu cred ca merge cu progecad, sau zwcad - nu am incercat)
2. In autocad se incarca aplicatia cu comanda: "APPLOAD"
3. se introduce un raster oriunde pe ecran (de ex aaa.tiff si aaa.tfw sa fie in acelasi director)
4. cu comanda "GeoRefImg" (fara ghilimele) se selecteaza conturul imaginii inserate si automat o va pozitiona pe coordonatele bune !

Numai bine !

Modificat de kod (17-03-2010 07:39:40)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mar 17, 2010, 10:37 AM

                  Cu asta cred ca s-au rezolvat multe probleme, dar a mai ramas una: ce se poate face cu imaginile SID ? AutoCAD-ul obisnuit (adica fara Raster) nu le poate insera fiindca nu recunoaste formatul, si se pare ca nu e chiar simplu de schimbat asta.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Mar 17, 2010, 11:01 AM

                  
John Doe a scris:

Cu asta cred ca s-au rezolvat multe probleme, dar a mai ramas una: ce se poate face cu imaginile SID ? AutoCAD-ul obisnuit (adica fara Raster) nu le poate insera fiindca nu recunoaste formatul, si se pare ca nu e chiar simplu de schimbat asta.


Pentru imagini MrSID in AutoCAD ai incercat sa intalezi Raster Design Object Enabler?
detalii: http://usa.autodesk.com/adsk/servlet/ps ... ID=9240617


_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Mar 17, 2010, 11:19 AM

                  exista sigur si pt. asta solutie si anume:

descarci programul acesta (practic este un plug -in care se instaleaza pt. Internet Explorer - nu va recomand IE, dar si pt. FireFox- recomand cu caldura)
http://www.lizardtech.com/download/down ... _setup.exe
Il instalati si....

-desi am mai zis asta pe undeva


kod a scris:

revin cu ultima versiune "up to date" a celui mai bun, sigur si rapid browser din lume, Mozilla firefox v. 3.5.2 editie portabila dedicata in mod exclusiv topografilor de pe acest forum si nu numai. Are in componenta lui cateva extensii si plugin-uri f. utile navigarii in siguranta pe net, plus daca aveti ortofotoplanuri cu extensia *.SID le puteti deschide direct din browser, sau mai usor drag`n`drop fiser.SID in fereastra de mozilla firefox + alte surprize placute !

il puteti downloada de aici: http://www.megaupload.com/?d=33UB6VZ6

se dezarhiveaza cu 7-zip http://topograf.3xforum.ro/redir.php?ht ... ight_click
.......


parca pe aici daca nu ma insel http://topograf.3xforum.ro/post/887/3/A ... _PROGRAM_/


1. dupa care iei frumos fisierul *.SID si-l tragi peste fereastra browserului => *.SID-ul gata georeferentiat pe coordonate
2. iti alegi o zona interesata unde ai ridicarea ce vrei sa o suprapui
3. cu clik dreapta ai multe obtiuni ("show coordinate info, save aS.. etc.)
4. dai save as.. si il salvezi ca si Tiff + Word File
5. il incarci in autocad ca raster (fisierul nou salvat de ex. ridicare.tiff + ridicare.tfw)
6. il georeferentiezi automat cu "GeoRefImg.VLX"

7. ...dai o bere cand ne intalnim

8. O mica precizare, la firefox-ul ala portabil din link-ul de mai sus, nu mai trebuie instalat plug-in-ul esta gata instalat

O zi faina !



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mar 17, 2010, 11:20 AM

                  Il aveam si eu, dar mi-am reinstalat AutoCAD-ul si am uitat de el. Acum merge, si "GeoRefImg" chiar functioneaza. Mersi.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Mar 17, 2010, 11:22 AM

                  Am uitat sa atasez si un screen sut


581/465px  70KB

Modificat de kod (17-03-2010 09:22:56)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Mar 17, 2010, 05:12 PM

                  Daca tot discutam despre georeferentiere, ANCPI a lansat de curand un ordin privind aprobarea Specificatiilor tehnice pentru scanarea si georeferentierea planurilor vechi de carte funciara.

http://www.ancpi.ro/images/legislatie/Ordin_78.pdf

Modificat de advex (17-03-2010 15:13:32)


_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mai 04, 2010, 05:59 PM

                  Am ajuns si la proba contrarie de mai sus: am câteva zeci de fisiere CP (adica *.cpxml) facute automat si receptionate de OCPI fara nici o problema. Deci se pot face si asa.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: diagodose2009 din Mai 05, 2010, 08:35 PM

                  Message empty


552/584px  46KB

Modificat de diagodose2009 (29-08-2010 15:11:24)


_______________________________________
http://we.tl/D8HOKFyTJ7


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: oak din Sep 10, 2010, 12:35 AM

                  Un lisp pentru generarea unui inventar de coordonate polare?


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Sep 10, 2010, 10:59 AM

                  Am numai pentru coordonate plane.
Pentru cele polare are TopoLT ceva de genul, la "Coordonate -> Calculeaza radiate".



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: DAN.ARBA din Oct 28, 2010, 08:08 PM

                  Anul asta n-a mai intrat nimeni aici?!
Programez si eu sub autolisp&DCL .Poate va ajuta unele dintre micile mele realizari.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Oct 28, 2010, 08:42 PM

                  
DAN.ARBA a scris:

Anul asta n-a mai intrat nimeni aici?!
Programez si eu sub autolisp&DCL .Poate va ajuta unele dintre micile mele realizari.


Asteptam cu mare interes, bun venit in clubul omenilor...hopa, adica topografilor



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 29, 2010, 11:12 AM

                  Daca te uiti la datele postarilor, vezi ca s-a intrat si anul asta pe-aici. Pe urma, chiar numai sectiunea asta are 5 pagini acum, deci e ceva. Mai sunt si altele pe aceeasi tema, deci exista si interes.
Bun venit, si asteptam sa ne prezinti aplicatiile tale.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: DAN.ARBA din Oct 30, 2010, 05:18 PM

                  Stim ca autocadul nu are comanda de afisare arie pe un contur (sau polilinii deschise) in mediul de lucru ( ma rog, stie sa calculeze ariile dar nu sa le afiseze).In momentul in care ai nevoie sa indici pe desen aceste valori, e foarte util scriptul pe care l-am realizat. E destul de simplu ,dar foarte util ,credeti-ma!
   Aveti posibilitatea sa scalati textul . Modificati valoarea "dimscale <1>" daca e necesar. IN plus, se repeta nelimitat pana la anularea comenzii.
   Pentru cei necunostatori, scrieti in prompterul de comenzi al autocadului comanda
 _appload si incarcati aplicatia de mai jos pe care ati salvat-o in prealabil cu ajutorul notpad-ului in format  " .lsp " :




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;  script autolisp realizat de Dan Arba;    ;;;
;;;    adresa email:  E-mail        ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;


(defun c:arie ()
    (setq mag (getvar "osmode"))
                (setvar "osmode" 0)
                (setvar "snapmode" 0)
                (setvar "cmdecho" 0)
                (setvar "blipmode" 0)
    (command "_undo" "begin")
(setq ddi (getvar "dimscale"))
(setq dd (getreal (strcat "\n dimscale <" (rtos ddi) ">" )))
(cond ((= dd nil) (setvar "dimscale" ddi))
      ((/= dd nil)(setvar "dimscale" dd))
)
(while (not nil) (aria))
(setvar "osmode" mag)
(command "undo" "end")
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun aria ()
    (setq mag (getvar "osmode"))
                (setvar "osmode" 0)
                (setvar "snapmode" 0)
                (setvar "cmdecho" 0)
                (setvar "blipmode" 0)
    (command "_undo" "begin")

(setvar "osmode" 513)
(while
  (not(and (not(prompt "\n  Selectati un contur!"))   ;;;
           (setq ob (ssget (setq p(getpoint)) '((0 . "lwpolyline,circle,ellipse,polyline,spline"))))

      )
  )
)
           (redraw (ssname ob 0) 3)   
(command "area" "o" ob)                                                     
(setvar "osmode" 0)
(setq ar (rtos (getvar "area") 2 3))
(setvar "dimldrblk" "DotSmall")
(command "leader" p pause "" (strcat "S= " ar " mp") "" )
(redraw (ssname ob 0) 4)
(setvar "osmode" mag)
(command "undo" "end")
)
;;;; gata prog arie
;;;; se lanseaza in executie la comanda ARIE
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

Modificat de DAN.ARBA (30-10-2010 14:26:15)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: DAN.ARBA din Oct 30, 2010, 05:38 PM

                  Pentru desenarea unui triunghi oarecare cand se cunosc doar laturile triunghiului:



;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;  script autolisp realizat de Dan Arba;    ;;;
;;;    adresa email:  E-mail        ;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



(defun c:trio ()
    (setq mag   (getvar "osmode"))
                (setvar "osmode" 0)
                (setvar "cmdecho" 0)

(setq D1 (getdist "\nIntroduceti latura AB:")
      D2 (getdist "\nIntroduceti latura BC:")
      D3 (getdist "\nIntroduceti latura AC:"))

      (if (and (< (abs (- D1 D2)) D3) (< D3 (+ D1 D2))
               (< (abs (- D1 D3)) D2) (< D2 (+ D1 D3))
               (< (abs (- D2 D3)) D1) (< D1 (+ D2 D3)))
          (PROGN (setq A (getpoint "\nPrecizati coltul A al triunghiului:")
                       B (list (+ D1 (car A)) (cadr A))
                       L (/ (- (expt D3 2) (+ (expt D1 2) (expt D2 2))) (* 2 D1))
                       H (sqrt (- (expt D2 2) (expt L 2)))
                       C (list (+ L (car B)) (+ H (cadr A))))
                                   (cond ((> (car B) (car C))
                                          (setq intBC (list (car B) (cadr C))))
                                         ((> (car C) (car B))
                                          (setq intBC (list (car C) (cadr C))))
                                         ((equal (car B) (car C))
                                          (setq intBC (list (car B) (cadr C))))
                                   )
                 (command "_zoom" "window" a  intBC)
                   (command "pline" A B C "c" "")
                   (colturi AAA BBB CCC D1 D2 D3 notA notB notC)
          )
          (alert (strcat "\nNu este indeplinita conditia de existenta al triunghiului!"
                         "\n                 A se vedea conditia lui Herron!"))
      )
(setvar "osmode" mag)
)
(defun colturi (AAA BBB CCC D1 D2 D3 notA notB notC)
                (setq MINIM (min D1 D2 D3))
                (setq ZECIMEDEMINIM (/ MINIM 10))
                (setq notA (getstring T "\nColtul 1 al triunghiului:"))
                (setq notB (getstring T "\nColtul 2 al triunghiului:"))
                (setq notC (getstring T "\nColtul 3 al triunghiului:"))
                  (setq AAA (list (- (car A) ZECIMEDEMINIM) (cadr A)))
                  (setq BBB (list (+ (car B) ZECIMEDEMINIM) (cadr B)))
                  (setq CCC (list (car C) (+ ZECIMEDEMINIM (cadr C))))
                           (command "text" AAA ZECIMEDEMINIM 0 notA "")
                           (setq ob1 (ssget "l"))
                           (command "text" BBB ZECIMEDEMINIM 0 notB "")
                           (setq ob2 (ssget "l"))
                           (command "text" CCC ZECIMEDEMINIM 0 notC "")
                           (setq ob3 (ssget "l"))
                           (command "_zoom" "o" ob1 ob2 ob3 "")
)

Modificat de DAN.ARBA (30-10-2010 22:22:49)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: DAN.ARBA din Oct 30, 2010, 05:51 PM

                  daca e cineva interesat - am foarte multe scripturi ,insa destule dintre ele nu sunt bine puse la punct , le-am scris in graba in functie de ceea ce aveam de lucru in acel moment, dar se pot folosi ,chiar daca nu sunt foarte clar definite . Cel mai important pentru voi topografii (corectat la observatia lui diagodose2009) cred ca e importul si exportul de puncte. Cand vine vorba de puncte, am intalnit atatea situatii cati topografi ; unii aveau punctele in blocuri cu atribute ,altii in format text , altele desi aveau in atribut si cote  ele erau inserate doar in plan ... sau unele care nu aveau nici macar elevatia atasata(indicata). Pentru aceste situatii a trebuit sa adaptez diverse scripturi pentru a le aduce la un model comun de lucru.
  Exemplu mai concret :
   Ridicare puncte podete . Desi erau inscrise cotele , ele erau situate in plan ,dar deja fiind unite intre ele conform situatiei din teren , cele mai multe manual (mentionez ca era vorba de multe poduri si podete) nu mai era rentabil sa le faci din nou ca sa fie 3D. Asa ca in autolisp am reusit sa le remodelez fortat 3D fara sa se piarda toate trasarile dintre ele si nici straturile sau tipul de linie.

Modificat de DAN.ARBA (06-11-2010 23:42:28)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: DAN.ARBA din Oct 30, 2010, 05:57 PM

                  Va mai dau unul frumusel pentru selectie filtrata . Land Desktop are implementata comanda pentru asta, dar autocadul nu prea (adica are ceva ,dar e mai pretentios . ma refer la quic select):

  Aici postez interfata de dialog. Trebuie salvata cu numele " sssdcl.dcl " undeva unde autocadul are deja facuta o cale (un path) ,de pilda direct in " C:\Program Files\AutoCAD 2009 " ... sau ,ma rog, ce autocad folositi.

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;-----------------------------------------------------------------;;;
;;;---DCL  realizat de : Dan Arba------------------------;;;
;;;--- adresa email:  E-mail       ------------------------;;;                       
;;;-----------------------------------------------------------------;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;  Executa selectie similara pe un sector rectangular sau poligonal;;
;;;  indicat la alegere printr-un patrulater sau printr=un poligon   ;;
;;;  deschis.
;;;  Are si otpiunea pe intreg spatiul model ,atunci nefiind necesara;;
;;;  indicarea zonei.
;;;  Cauta obiectele dupa strat si tip de entitate.
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
sssdcl : dialog {
    label = "selectie similara " ;
: column {
: row {
: spacer {
  width = 7;
  //height = 1;
}
: text {
        key = "t5" ;
        value = "Includeti toate elementele selectate? " ;
        width = 35 ;
       }
}
: boxed_column {
  label = "tip selectie" ;
                : radio_column  {
                  key = "radios";
                  : radio_button {
                    label = "retineti toate obiectele";
                    key = "full";
                    value = "1";
                  }
                  : radio_button {
                    label = "doar zona selectata";
                    key = "selectare";
                    value = "0";
                  }
                }
}
: boxed_column {
  label = "limite" ;
: row {
: text {
          key = "t1";
          value = "selectati o zona de cautare";
          width = 24;
        }
    : button {
      key = "rectangular";
      label = "rectangular";
      width = 1;
      height = 1;
      is_default = false;
    }
   }

: row {
: text {
          key = "t2";
          value = "tot spatiul model";
          width = 23;
        }
    : button {
      key = "nelimitat";
      label = " Nelimitat ";
      width = 1;
      height = 1;
      is_default = true;
      is_cancel = true;
    }
   }
: row {
: text {
          key = "t7";
          value = "Poligonal (pt. a termina apasati click dreapta)";
          width = 35;
        }
    : button {
      key = "poligonal";
      label = " poligonal ";
      width = 1;
      height = 1;
      is_default = false;
      is_cancel = true;
    }
   }
 }
: row {
: spacer {
  width = 10;
  //height = 1;
}

    : button {
      key = "cancel";
      label = " Cancel ";
      is_default = false;
      width = 8;
      height = 1 ;
      is_cancel = true;
    }
: spacer {
  width = 10;
  //height = 1;
}
}
}
}

//pentru sss_dcl_final , face selectie filtrata cu fereastra de dialog

Modificat de DAN.ARBA (01-08-2011 15:00:50)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: DAN.ARBA din Oct 30, 2010, 06:09 PM

                  ;;;Iar acesta functioneaza doar cu cel postat mia sus (sssdcl.dcl):
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;-----------------------------------------------------------------;;;
;;;---script autolisp realizat de : Dan Arba------------------------;;;
;;;---adresa email:  E-mail       ------------------------;;;                       
;;;-----------------------------------------------------------------;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;  Executa selectie similara pe un sector rectangular sau poligonal;;
;;;  indicat la alegere printr-un patrulater sau printr=un poligon   ;;
;;;  deschis.
;;;  Are si otpiunea pe intreg spatiul model ,atunci nefiind necesara;;
;;;  indicarea zonei.
;;;  Cauta obiectele dupa strat si tip de entitate ( o sa mai adaug in viitor si lista de optiuni pentru filtre)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; mai jos ultima versiune revizuita ( am corectat si partea cu selectia poligonala)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

(DEFUN c:sss  ()     
    (setq mag (getvar "osmode"))
                (setvar "osmode" 0)
                (setvar "snapmode" 0)
                (setvar "cmdecho" 0)
                (setvar "blipmode" 0)
(setq obiecte (ssget "_I"))         ;;;------------------- trebuie pus inaintea oricarei "command" ,altfel ;se debifeaza
;;(command "undo" "begin")
;;;--- daca nu avem selectat anterior nici un obiect selectam acum

(if (equal obiecte nil)
    (setq obiecte (ssget)))
(sssetfirst obiecte obiecte)

;;;--- gata selectare anterioara
;;--------resetam variabilele

(setq nume nil lung nil i nil nume nil strat nil lisnume nil lisstrat nil lfn nil lfs nil LUNGLISNUME NIL numej nil nume-strat nil
j nil k nil lista_filtre nil numejj nil lista_prefinala nil numel nil listal nil fil1 nil filtre nil fil nil lunglf nil p nil li nil ;;; aici sunt si elemente in plus aparute de la multiple incercari pe care nu le-am mai sters ;ulterior
sector nil p1 nil p2 nil punct nil poligon nil sector nil elemente nil )
 
(sssetfirst nil obiecte)
(setq lung (sslength obiecte)
          i 0
)

;;---intocmire lista NUME

(while (<= i (- lung 1))
       (setq nume  (assoc 0 (entget (ssname obiecte i))))     
       (if (= (member nume lisnume) nil)
           (setq lisnume (append (list nume) lisnume))
       )
       (setq i (1+ i))
)
(setq lunglisnume(length lisnume)
      j          0
)

;;---gata lista cu (0 . "nume")
;;---intocmire lista cu straturi pentru fiecare nume in parte

(while  (<= j (- lunglisnume 1))
        (setq numej (list(nth j lisnume))
                  k 0
        )
           (while (<= k (- lung 1))
                      (if (and (equal (list(assoc 0 (entget(ssname obiecte k)))) numej)
                               (equal (member (cons 8 (cdr(assoc 8 (entget(ssname obiecte k))))) numejj) nil)
                          )
                      (setq  numejj (append(list(assoc 8 (entget(ssname obiecte k)))) numejj)
                                 k (1+ k)
                      )
                      (setq k (1+ k))
                      )
           (princ)
           )
        (setq lista_prefinala (append numej numejj)
              lista_filtre (append lista_prefinala lista_filtre)
              numejj nil
        )
        (setq j (1+ j))
)
(setq lisnume(reverse lisnume))

;;;---gata lista cu straturi pentur fiecare nume in parte
;;;---prelucrare lista finala pentru selectia filtrata

(setq lunglf (length lista_filtre)
      p 0
      q 0
      FILTRE lista_filtre
)
;;;;;;;;;;;;;;;;;;;;
;;; DEOARECE AVEM j LISTE CU NUME,O SA REPETAM DE j ORI ,PENTRU FIECARE NUME IN PARTE
(setq li5 (list(cons -4 "or>")))
(repeat j
        (setq li (list (nth q lisnume)))         
        (setq p (1+ p))                                                                  ;;;;;;;;;;;; il incrementam cu 1 ca ;sa nu se opreasca pe (0 . "nume")
(while  (equal (car(nth p lista_filtre)) (read "8"))
               (setq li (append (list(nth p lista_filtre)) li))                         
               (setq p (1+ p))
)
        ;;;--- trebuie sa transformam cdr-ul din (8 . "strat") in "stringuri" unite prin "," intre ele daca ;sunt mai multe
         (progn
              (setq r 0
                    lungli (length li)
                    li2 ""
              )
              (while (= (car(nth r li)) 8)
                     (setq li2 (strcat (cdr (nth r li)) "," li2))
                     (setq r (1+ r))
              )
              (setq li3 (cons 8 li2))
         )
        ;;;--- gata transformare straturi in sir de caractere
(setq q (1+ q)
      li4 (list (cons -4 "<and") (last li) li3 (cons -4 "and>"))
      li5 (append li4 li5)
))
(setq li6 (append (list (cons -4 "<or")) li5))

;;;--- gata lista intocmita pentru ssget
;;------------------------------stabilirea zonei de cautare (limitat sau nelimitat)-----------------
;;(initget "R r N n P p ")
;(setq sector (getkword "\n [Sector/Nelimitat]: ?"))
;;;;;;;;;;;;;-----------------------------fereastra dialog  DCL---------------------
  (setq dcl_id (load_dialog "sssdcl.dcl"))
  (if (not (new_dialog "sssdcl" dcl_id) ) (exit))
  (action_tile "rectangular" "(setq ddiag 1)(saveVars)(done_dialog)")
  (action_tile "nelimitat" "(setq ddiag 2)(done_dialog)")
  (action_tile "poligonal" "(setq ddiag 4)(saveVars)(done_dialog)")
  (action_tile "cancel" "(setq ddiag 3)(done_dialog)")
  (start_dialog)
  (unload_dialog dcl_id)
(cond ((= ddiag 1) (setq sector "R"))  ;;---sector rectangular
      ((= ddiag 2) (setq sector "N"))  ;;---sector nelimitat
      ((= ddiag 4) (setq sector "P"))  ;;---sector poligonal
      ((= ddiag 3)  (setq elemente nil))
)
;;;;;;;;;;;;;-----------------------------gata fereastra dialog  DCL---------------------
(cond ((equal sector "R")
       (progn (setq      p2(getcorner (setq p1(getpoint "\nPunctul p1:")) "\nPunctul p2:")
                  elemente (ssget "w" p1 p2 li6)
              )

        ))
      ((equal sector "P")
      (rlf) ;;;regen-line-false + linie elastica

      (setq  elemente (ssget "wp" poligon li6))
      )


       
      ((= sector "N")  (progn (setq elemente (ssget "x" li6))(sssetfirst nil elemente)))
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;               
(setq afis1 (strcat "\n       S-au adaugat " (itoa (sslength elemente)) "  entitati")
      afis2 "\n Asteptati cateva secunde dupa ce apasati OK !")

(if (> (sslength elemente) 100)
(alert (strcat afis1 afis2))
(alert afis1)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;(command "_undo" "end")
;;(command "redraw" )

(cond ((= radio1 1)
       (progn
        (setq h 0)
        (repeat (sslength obiecte)
          (setq elemente(ssadd (ssname obiecte h) elemente)
                 h      (+ h 1))
        )
           (sssetfirst nil elemente)))
      ((= radio2 1)(sssetfirst nil elemente))
)

(setvar "osmode" mag)


)
;;;--------------------------gata program selectie filtrata---------------------------------------
;;;;;;;;;;;;;; determinare prin "click pe radio" daca se retin toate obiectele,adica si cele initial ;selectate daca sunt inafara zonei de selectie
(defun saveVars()
       (setq radio1(atoi(get_tile "full")))         
       (setq radio2(atoi(get_tile "selectare"))) 

)
;;;;;;;;;;;;;;gata determinare conditie "radio selectie"

;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mai jos alcatuirea poligonului de selectie

(defun gr ( )                      ;;;grdraw-repeat  - afiseaza continuu liniile false ale poligonului
(setq jj 0)
(setq lungime2 (length poligon))
(if (cdr poligon)
(repeat (- lungime2 1)
        (grdraw (nth jj poligon) (nth (+ jj 1) poligon) 3 1)
        (setq jj (+ 1 jj))
)
)
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(DEFUN rlf ()                  ;(REGEN-LINE-FALSE)     
    (setq punct nil poligon nil)

    (setq punct   (getpoint  "start poligon")
          poligon (append (list punct) poligon)
    )

(while (/= (car (setq pp1(grread t 1))) 25)
       (cond ((= (car pp1) 5)
             (redraw)
             (gr)
             (grdraw punct (cadr pp1) 2 1)
             (grdraw (last poligon) (cadr pp1) 2 1)
             )
             ((= (car pp1) 3)
              (gr)
              (setq punct (cadr pp1)
                    poligon (append (list punct) poligon)
              )
             (grdraw (last poligon) (car poligon) 2 1)
             )
       )
)
)

Modificat de DAN.ARBA (01-08-2011 15:05:19)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: DAN.ARBA din Oct 30, 2010, 06:14 PM

                  E ok acum. Am corectat si partea de la poligonal (mai sus varianta revizuita).

"Aveti posibilitatea de-a retine si obiectele deja selectate (chiar daca sunt de de diferite categori ) sau doar pe cele din sectorul indicat . La varianta POLIGONAL mai trebuie sa lucrez ; nu dati zoom in timp ce trasati zona de selectie! Le-am scris pe baza comenzilor de "grredraw" si dispar liniile la regen. "


581/286px  26.2KB

Modificat de DAN.ARBA (01-08-2011 15:06:44)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: shury din Noi 02, 2010, 06:14 PM

                  Salut sunt nou pe aici , adica de urmarit va urmaresc de vreo 2-3 ani dar e prima data cand scriu . John Doe as dori si eu cateva aplicatii si lisp uri. sunt interesante si cred ca ma vor ajuta. Deasemenea as fi interesat de aplicatia lui Marian de generare cp automata. ms anticipat


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Noi 03, 2010, 10:52 AM

                  Chestie de gusturi... eu folosesc Qselect si merge destul de bine.
Referitor la metodele topografilor (nu tipografilor, Dane!): este un compromis intre ceea ce poate individul, ce i se cere si ce are la dispozitie. Si ce e mai ieftin. Nu intotdeauna e si solutia cea mai simpla, dar daca functioneaza...



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Noi 20, 2010, 08:33 PM

                  Uneori ni se cere si un fel de carnet de teren care sa contina distante, orientari, etc. , care seamana cu fisierul IDX dar nu e intotdeauna usor de obtinut. Postez mai jos o aplicatie LISP care poate ajuta; dati "paste" la cod intr-un fisier text si schimbati extensia fisierului in LSP si se poate folosi.

Code:

;;;----------------------CARNET  DE  TEREN----------------------
;;;trebuie sa avem pe plan polilinii si punctele de statie si de orientare - entitati POINT, asa s-a setat OSMODE
;;;Genereaza fisierul CARNET.csv in forma:  [PS]  [PV]  [X]  [Y]  [Dx]  [Dy]  [Dist redusa]  [Orientare] , pentru toate vertexurile poliliniilor din desen
 

(command "units" "2" "3" "3" "4" "0.0000" "N")
(graphscr)


(defun C:CARNET ()
(setq msel (ssget "X" (list (cons 0 "LWPOLYLINE"))))
(setq lng (sslength msel))
(setq index 0)
(setq ncor (getint "\nNumerotare puncte începând cu <100>: "))
    (if (= nil ncor)(setq ncor 100))
(setq des "q")
(while (AND (/= des "y")(/= des "Y")(/= des "n")(/= des "N")(/= des ""))
(setq des (getstring "\nScriem numarul punctelor pe desen? Yes/No <Y>:"))
                    );;;while
(if (= des "")(setq des "Y"))
(setq des (strcase des))
(setq fis (open "Fiscord.txt" "w"));;;---asta e temporar, va fi sters la sfarsit

(while (< index lng)
(setq nent (ssname msel index))
(setq index (+ 1 index))
(setq lent (entget nent))
(setq cont 0);;;numar de ordine al componentelor entitatii-lista, si daca da de codul de grup 10  extrage coordonatele
(while (setq entc (nth cont lent))
    (setq cont (+ 1 cont))
    (if (= 10 (car entc))(progn
        (setq ncor (+ 1 ncor))
        (write-line (itoa ncor) fis)
        (setq x (cadr entc))
        (write-line (rtos x 2 3) fis)
        (setq y (caddr entc))
        (write-line (rtos y 2 3) fis)
    (if (= des "Y")(command "text" (list (+ 1 x) (+ 1 y)) 3 0 ncor))
       
                ));;PROGN si IF
                );;WHILE pe fiecare entitate
        );;;WHILE de la index entitati
(close fis)

;;;------------------Acum avem fisierul de coordonate, il citim si facem carnetul de teren

(setvar "osmode" 8);;;------------pentru "Node"
(setq ps (getpoint "\nSELECTATI PUNCTUL DE STATIE:"))
(setq nps (getstring "\nNUMAR PUNCT STATIE: "))
(setq po (getpoint "\nSELECTATI PUNCTUL DE ORIENTARE:"))
(setq npo (getstring "\nNUMAR PUNCT DE ORIENTARE: "))
(setq ys (nth 0 ps))
(setq xs (nth 1 ps))
(setq yo (nth 0 po))
(setq xo (nth 1 po))
(setq dx (- xo xs));;;---real
(setq dy (- yo ys));;;---real
(setq dist (distance ps po));;;---real
(setq orient (angle ps po))
(setq orient (angtos orient 2 4));;;---string
(setq orient (atof orient))

(if (AND (> dx 0) (> dy 0))(setq orient (- 100 orient)));;;---cadran 1
(if (AND (> dx 0) (< dy 0))(setq orient (- 500 orient)));;;---cadran 2
(if (AND (< dx 0) (< dy 0))(setq orient (- 500 orient)));;;---cadran 3
(if (AND (< dx 0) (> dy 0))(setq orient (- 500 orient)));;;---cadran 4

(setq cale (getvar "dwgprefix"))
(setq fis2 (open (strcat cale "Carnet.csv") "w"))
(write-line (strcat "Punct statie: " nps) fis2)
(write-line (strcat "Punct orientare: " npo ) fis2)
(write-line "" fis2)
(write-line "" fis2)
(write-line "PS,PV,X,Y,Dx,Dy,Dist. red.,Orientare" fis2)
(write-line (strcat nps "," npo "," (rtos xo) "," (rtos yo) "," (rtos dy) "," (rtos dx) "," (rtos dist) "," (rtos orient 2 4) ) fis2)

(setq nfis1 (open "Fiscord.txt" "r" ))

;;;---------------citim pe rand fiecare linie din fisier
(while (setq np (read-line nfis1))
(setq yp (read-line nfis1))
(setq xp (read-line nfis1))
    (setq xp (atof xp))
    (setq yp (atof yp))
    (setq dx (- xp xs))
    (setq dy (- yp ys))
    (setq dist (distance ps (list yp xp)))
    (setq orient (angle ps (list yp xp)))
    (setq orient (angtos orient 2 4));;;string
    (setq orient (atof orient))
    (if (AND (> dx 0) (> dy 0))(setq orient (- 100 orient)));;;---cadran 1
    (if (AND (> dx 0) (< dy 0))(setq orient (- 500 orient)));;;---cadran 2
    (if (AND (< dx 0) (< dy 0))(setq orient (- 500 orient)));;;---cadran 3
    (if (AND (< dx 0) (> dy 0))(setq orient (- 500 orient)));;;---cadran 4

(write-line (strcat "," np "," (rtos xp) "," (rtos yp) "," (rtos dy) "," (rtos dx) "," (rtos dist) "," (rtos orient 2 4) ) fis2)

        );;;while de la citire fisier
        (close nfis1);;;inventarul de coordonate
        (close fis2);;;carnetul de teren

(command "sh" "del Fiscord.txt")
(setq linie (strcat "Fisierul CARNET.csv a fost creat in locatia:  \n" cale ))
(alert linie)
                            );;;defun CARNET



(alert "Pentru generate carnet de teren, dati comanda CARNET")




               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: doara.florin din Noi 21, 2010, 06:55 PM

                  Tyyyy 10x John.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Noi 21, 2010, 07:35 PM

                  Foarte buna aplicatia, dar am cateva intrebari, nedumeriri:
Daca am mai multe statii din care am ridicat imobilul, practic aplicatia imi ia in considerare doar cea pe care eu o selectez nu ?
Si cum anume este gandita rutina, adica ce puncte radiate ia in considerare, tot ce am pe plan sau doar toate punctele care intra in constructia unei polilinii ?
Dar daca am mai multe polilinii ?

Nu o lua ca pe o mustrare sau o indicatie, ci doar vreau sa stiu cum anume a fost gandita, cum anume numeroteaza punctele (banuiesc ca de la statia de baza in sens direct matura tot ce iese la iveala nu ? ) sau ma insel ?



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Noi 22, 2010, 11:05 AM

                  Carnetul de teren e pentru OCPI, care asa cere. Poliniliile le folosesc eu, sunt mai eficiente. Nu pot face aplicatii universale, pentru toate situatiile si stilurile de lucru, deci ramane cam pe gusturile mele... dar crede-ma, doua zile m-am tot gandit pana am facut aplicatia.

Ideea este cam asa: din desenul tau, iei cu copy elementele fiecarui punct de statie: poliliniile cu care ai unit punctele, statia si punctul pe care te-ai orientat, si le dai paste in coordonate intr-un desen nou. Incarci aplicatia, dai comanda si ai fisierul CSV. Atentie, fisierul are acelasi nume chiar daca e alta statie si o sa-ti scrie peste el, daca il ai acolo de la statia precedenta. Redenumeste-l sau muta-l inainte de a porni aplicatia.
Operatia se repeta pentru fiecare punct de statie separat.
Se poate face carnetul si pentru tot desenul deodata, prin mai multe seturi de selectii, dar e mult prea complicat ca sa fie rentabil.

Elementele sunt legate intre ele... faptic: punct de statie, punct de orientare, elemente radiate din statia aia unite cu polilinii.

Am folosit polilinii si nu puncte fiindca s-ar putea ca multi sa-si fi raportat punctele cu tot felul de alte programe, care folosesc diverse elemente in loc de puncte si m-as fi trezit cu o gramada de intrebari ca de ce nu merge... (fiindca nici o fapta buna nu ramâne nepedepsita, nu?).
Poliliniile si punctele sunt numerotate in ordinea in care sunt ele in desen, adica in ordinea in care au fost desenate. Unii ai nevoie doar de carnetul de teren ca foaie cu calcule de predat la OCPI, iar cine vrea sa faca si corespondenta dintre calcule si teren poate sa-si numeroteze punctele.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: masterat0r din Noi 24, 2010, 05:35 PM

                  selectie entitati dupa atribute sau layere si multe alte functii : CADTOOLS http://www.glamsen.se/Download/CadTools ... _setup.EXE


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Noi 24, 2010, 08:32 PM

                  
John Doe a scris:

Carnetul de teren e pentru OCPI, care asa cere. Poliniliile le folosesc eu, sunt mai eficiente. Nu pot face aplicatii universale, pentru toate situatiile si stilurile de lucru, deci ramane cam pe gusturile mele... dar crede-ma, doua zile m-am tot gandit pana am facut aplicatia.

Ideea este cam asa: din desenul tau, iei cu copy elementele fiecarui punct de statie: poliliniile cu care ai unit punctele, statia si punctul pe care te-ai orientat, si le dai paste in coordonate intr-un desen nou. Incarci aplicatia, dai comanda si ai fisierul CSV. Atentie, fisierul are acelasi nume chiar daca e alta statie si o sa-ti scrie peste el, daca il ai acolo de la statia precedenta. Redenumeste-l sau muta-l inainte de a porni aplicatia.
Operatia se repeta pentru fiecare punct de statie separat.
Se poate face carnetul si pentru tot desenul deodata, prin mai multe seturi de selectii, dar e mult prea complicat ca sa fie rentabil.

Elementele sunt legate intre ele... faptic: punct de statie, punct de orientare, elemente radiate din statia aia unite cu polilinii.

Am folosit polilinii si nu puncte fiindca s-ar putea ca multi sa-si fi raportat punctele cu tot felul de alte programe, care folosesc diverse elemente in loc de puncte si m-as fi trezit cu o gramada de intrebari ca de ce nu merge... (fiindca nici o fapta buna nu ramâne nepedepsita, nu?).
Poliliniile si punctele sunt numerotate in ordinea in care sunt ele in desen, adica in ordinea in care au fost desenate. Unii ai nevoie doar de carnetul de teren ca foaie cu calcule de predat la OCPI, iar cine vrea sa faca si corespondenta dintre calcule si teren poate sa-si numeroteze punctele.


Da, ai dreptate nu poti sa te adaptezi pt. toti, cred ca ti-a dat ceva de gandit, ma bucur ca ai reusit sa-i dai de cap pana la urma, de asta am si intrebat care a fost logica. (la fel m-am gandit si eu)
O seara faina



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Noi 24, 2010, 08:39 PM

                  
masterat0r a scris:

selectie entitati dupa atribute sau layere si multe alte functii : CADTOOLS http://www.glamsen.se/Download/CadTools ... _setup.EXE


Aplicatia a mai fost semnalata la http://topograf.3xforum.ro/post/2092/1/ ... t_AutoCAD/

Aici au sunt postate fisiere autolisp distincte, descoperite pe net sau creatie proprie, utile topografilor.


_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Noi 25, 2010, 10:10 AM

                  Uneori, cand avem de facut un tabel cu inventarul de coordonate ale punctelor unui contur apar unele chestiuni neplacute, sau daca sunt prea inghesuite punctele e ceva de lucru pana le aranjam.
Postez mai jos o aplicatie care numeroteaza punctele unui contur, le scrie pe plan si face si inventarul de coordonate cu "S=xxx mp" scris sub el, dar punctele sunt aranjate dupa alt algoritm. Ideea este sa scrie numarul punctului cu alta aliniere (stanga, dreapta, sus sau jos) functie de cadranul in care este segmentul la capatul caruia pune punctul.
Luati textul cu copy si dati paste intr-un fisier text gol, la care îi schimbati extensia in LSP si va merge. NU se ia si cuvantul "Code:", ala e scris automat de site.
Codul e scris destul de labartat, are si comentarii, tocmai ca sa poata fi inteles si modificat si de voi in functie de ce aveti nevoie concret.
Variabila "ofs" este offsetul la care scrie textul intr-o parte sau alta fata de punctul geometric, "alfa" este orientarea segmentului de dreapta, etc. - am folosit denumiri cat mai sugestive.
Exista mai multe optiuni de plasare a tabelului cu inventarul de coordonate, acum functioneaza cea mai potrivita pentru mine dar se poate anula cu ";;;" in fata liniilor corespunzatoare si se pate activa alta optiune daca stergeti ";;;" din fata liniilor de cod.

Code:

;;;pentru planse de parcelare OCPI - numeroteaza punctele de contur si face tabelul cu inventarul de coordonate

(defun C:TAB ()
(setq osn_old (getvar "osmode"))
(setvar "osmode" 0)
(command "pdmode" 35)
(command "pdsize" 1.5)
(command "ortho" "off")
(command "units" "2" "3" "3" "4" "0.0000" "N")
(graphscr)
(command "-style" "Arial" "Arial.ttf" 0 1 0 "N" "N")

(setq pi2 (/ pi 2))
(setq 5pi2 (/ (* 5 pi) 2))
(setq 2pi (* pi 2))
(setq 3pi2 (/ (* pi 3) 2))
(setq mselt (ssadd))


(setq sel (car(entsel "\nSelectati conturul:")));;;----obiect
(setq msel (entget  sel));;;-----lista
(setq lng (length msel))

;;;---------------ar trebui sa vedem cate vertexuri are, ca se suprapune ultimul cu primul
(setq index1 0)
(setq nmax 0)
(while (< index1 lng)
    (setq nent1 (nth index1 msel))
    (setq index1 (+ 1 index1))
    (setq cod1 (car nent1))
    (if (= 10 cod1)(setq nmax (+ 1 nmax)));;;asta e nr. maxim de puncte
                );;;while
(setq nmax (- nmax 1))
;;;-------------acuma le luam pe rand si scriem
(setq index 0)
(setq ncor 0)
(while (< index lng)
(setq nent (nth index msel));;;element de lista
(setq index (+ 1 index))
(setq cod (car nent))
        (if (AND (= 10 cod)(<= ncor nmax))(progn
            (setq ncor (+ 1 ncor))
            (setq y (cadr nent))
            (setq x (caddr nent))
            (command "point" (list y x));;;parantezele se inchid mai incolo

        (if (= ncor 1)(progn
            (command "text" (list (+ 1 y) (+ 1 x)) 3 0 ncor)
            (setq pant (list y x))
                    ));;;PROGN+IF ncor=1
        (if (> ncor 1)(progn
            (setq alfa (angle pant (list y x)))
            (setq dist (distance pant (list y x)))
            (setq ofs 3)
            (if (<= alfa pi2)(setq alfa1 (- alfa 5pi2)))
            (if (> alfa pi2)(setq alfa1 (- alfa pi2)))
            (if (< dist 5)(setq alfap 1)(setq alfap 0))
            (if (AND (< distant 5)(= alfant 1))(setq alfap 0))
            (setq alfa1 (+ alfa1 (* alfap pi)))
            (setq aabs (abs alfa1))
            (if (> aabs 2pi)(setq aabs (- aabs 2pi)))
            (if (AND (>= aabs 0)(< aabs pi2))(setq jt "BL"))
            (if (AND (>= aabs pi2)(< aabs pi))(setq jt "BR"))
            (if (AND (>= aabs pi)(< aabs 3pi2))(setq jt "TR"))
            (if (AND (>= aabs 3pi2)(< aabs 2pi))(setq jt "TL"))
            (setq dx (* ofs (cos alfa1)))
            (setq dy (* ofs (sin alfa1)))
            (command "text" "J" jt (list (+ y dx) (+ x dy)) 3 0 ncor)
            (setq pant (list y x))
            (setq distant dist)
            (setq alfant alfap)
                        ));;;PROGN+IF ncor>1
;;;=================pentru liniile cap de tabel===========================luam X, Y pentru tabel de aici
            (if (= ncor 1)(progn
                (setq xs y)
                (setq ys x)
                (setq ps (list y x))
                (command "text" (list xs (+ ys 5)) 3 0 "Nr            X                 Y")
                (setq mselt (ssadd (entlast) mselt))
                (command "line" (list (- xs 1) (+ ys 4)) (list (+ xs 55) (+ ys 4)) "");;;linia de sub Nr....X....Y
                (setq mselt (ssadd (entlast) mselt))
                (command "line" (list (- xs 1) (+ ys 9)) (list (+ xs 55) (+ ys 9)) "");;;linia de deasupra Nr...X...Y
                (setq mselt (ssadd (entlast) mselt))
                                ));;;PROGN si IF ncor=1
;;;==================================================================================
            (if (< ncor 10)(setq sp "     "))
            (if (AND (< ncor 100)(>= ncor 10))(setq sp "   "))
            (if (>= ncor 100)(setq sp " "))
            (setq lin (strcat (itoa ncor) sp (rtos x 2 3) " " (rtos y 2 3)))
            (setq yc (- ys (* (- ncor 1) 4.8)))
                    (command "text" (list xs yc) 3 0 lin)
                    (setq mselt (ssadd (entlast) mselt))
                    (command "line" (list (- xs 1) (- yc 1)) (list (+ xs 55) (- yc 1)) "")
                    (setq mselt (ssadd (entlast) mselt))
                                        ));;PROGN si IF  cod=10
                                        );;;WHILE de la index lista entitati

;;;---------- liniile verticale
(command "line" (list (- xs 1) (+ ys 9)) (list (- xs 1) (- yc 1)) "");;;verticala din stanga
(setq mselt (ssadd (entlast) mselt))
(command "line" (list (+ xs 7.7) (+ ys 9)) (list (+ xs 7.7) (- yc 1)) "");;;verticala dintre numar si X
(setq mselt (ssadd (entlast) mselt))
(command "line" (list (+ xs 30.85) (+ ys 9)) (list (+ xs 30.85) (- yc 1)) "");;;verticala dintre X si Y
(setq mselt (ssadd (entlast) mselt))
(command "line" (list (+ xs 55) (+ ys 9)) (list (+ xs 55) (- yc 1)) "");;;ultima
(setq mselt (ssadd (entlast) mselt))

;;;-----------acuma sa vedem ce suprafata are
(command "area" "ob" sel)
(setq supraf (getvar "area"))
(setq sint (fix supraf))
(setq dif (- supraf sint))
(if (>= dif 0.5)(setq supraf (+ 1 sint)))
(setq supraf (rtos supraf 2 0))
(command "text" (list (+ xs 12) (- yc 5)) 3 0 (strcat "S=" supraf " mp"))
(setq mselt (ssadd (entlast) mselt))


;;;-------------acum sa facem conturul gros de 0.8 ca se vede mai bine
(command "pedit" sel "W" 0.8 "")

;;;=================================aici avem mai multe optiuni===============================
;;;OPTIUNEA 1: facem bloc, si il inseram dupa aia
(if (= nil bn)(setq bn 1)(setq bn (+ 1 bn)))
(setq bname (strcat "b" (itoa bn)));;;construim numele blocului, ca sa nu se suprapuna cu altele
(command "-block" bname ps mselt "");;;il ascunde cu totul si trebe inserat dupa aia
(command "insert" bname pause 1 1 0)
(command "scale" "l" "" ps 1.2);;;scara 1:2000 nu se prea vede, scalam

;;;OPTIUNEA 2: se poate lua in memorie, si paste dupa aia
;;(command "_cutclip" mselt "")
;;(command "_pasteclip")

;;;OPTIUNEA 3: se face tabelul normal, si pe urma se muta direct ca il face langa punctul nr. 1
;;;(command "move" mselt "" ps)
;;;==================================================================================
(setvar "osmode" osn_old);;;revenim la osnapul dinainte

                            );;;DEFUN

(alert "Lansare cu comanda TAB")




               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Noi 25, 2010, 10:39 AM

                  jos palaria, no comment !


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Noi 25, 2010, 02:44 PM

                  Am o mica obiectie la generare automata carnet teren, (poate se verifica si rezolva usor, nu stiu) !
La distantele reduse la orizont cam are tendinta sa le puna cu erori destul de mari, nu tot timpul, dar mi sa intamplat de 2 ori consecutiv, nu stiu am facut eu ceva gresit, desi nu cred.
A nu se interpreta ca ar fi vreo mustrare, e doar o constatare de a mea

Modificat de kod (25-11-2010 12:45:03)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Noi 25, 2010, 04:14 PM

                  In contextul asta, nu ma poate supara nici o critica; din contra, consider ca asa ceva e constructiv si duce doar la perfectionarea chestiunii in cauza. Vorbesc despre afirmatiile la subiect.
In cazul de fata, kod, am impresia ca unele dintre punctele tale sunt raportate cu Z cu tot, si tu masori in desen de fapt distanta inclinata si zici ca aia e buna. Este?



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Noi 25, 2010, 07:48 PM

                  Oaresi-cum ai dreptate, da sunt toate cu cote, dar diferenta este prea mare de ordinul sutelor de m, deci nu asta cred sa fie problema, problema cred ca este la mine ZWCad-ul (la el am liceenta) cu care lucrez, asa cred
Ca acum am incercat si cu AutoCAD-ul si nu-mi face figuri !

Oricum mare atentie si la setarile care trebuie facute de la bun inceput: grade cetisimale, zecimale, directie ...etc.

Si inca o intrebare, la aplicatia cu inventarul de coord. si tabel, unde ar trebui sa pun cele ";;;" sa-mi anuleze numerotare automata a poliliniei, sau cum as putea sa-mi pastrez "numarul punctului" sau mai concret zis sa mi-l ia in considerare direct cel de pe plan ?! cred ca ar fi foarte utila varianta asta ! (stiu ca deja devin enervant si cer imposibilul

Modificat de kod (25-11-2010 17:49:46)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Noi 26, 2010, 10:12 AM

                  CARNET:
Am uitat eu sa spun ca punctele pot fi raportate cu sau fara Z, carnetul de teren e acelasi - coordonata Z daca exista, nu e luata in calcul. Cu unghiurile verticale nu am lucrat deloc fiindca exista mai multe moduri de raportare a punctelor. Aplicatia completa ar trebui sa fie una cu raportarea punctelor cu sau fara Z si pe urma carnet de teren cu sau fara unghiuri verticale. Dar asta ar insemna deja sa ma complic mai mult decat trebuie; daca te gandesti bine, aplicatia nu e foarte ortodoxa, ea doar raspunde la una dintre cerintele mai mult sau mai putin idioate ale OCPI. Si la cate s-au tot cerut si modificat pana acuma, oricat as fi vrut la inceputuri sa fac numai treaba ca lumea, mi-a cam trecut.

Nu conteaza setarile din AutoCAD, LISP-ul calculeaza gradele in radiani si pe urma le transforma in centesimale.
Totusi, ca sa evit diverse surprize la care nu ma astept, mai pe la inceput i-am dat comanda "-units" ca sa rezolv treaba asta cu unitatile, si l-am setat in metri, 3 zecimale coordonatele si 4 unghiurile, directia zero pe est.
La fel si cu OSNAP, pot aparea diverse surprize in timp ce ruleaza aplicatia daca e setat pe ce nu trebuie; asa ca l-am pus numai pe ce vreau eu in timpul executiei, si cand termina revine la ce-a fost inainte. Vezi variabila OSMODE in Acad.

TABEL:
Caracterul ";" (fara ghilimele) inseamna ca ce este dupa el pe linia aia e comentariu si nu e luat in considerare. Eu pun caracterul asta de 3 ori, ca sa-l vad mai bine. Deci, daca vrei sa nu functioneze vreo linie de comanda pui ";" chiar la inceputul ei.
Aplicatia cu tabelul nu e facuta ca sa-ti recunoasca tie numarul punctului de pe plan, nici nu stiu sigur cum s-ar putea face asta fiindca nu am gasit un algoritm de recunoastere a textelor corespunzatoare suficient de bun.
Daca vrei sa nu-ti mai scrie deloc punctele pe desen, cauta linia asta:

(command "text" "J" jt (list (+ y dx) (+ x dy)) 3 0 ncor)

, si pui ;;; in fata ei si gata. "ncor" este numarul punctului, "jt" este modul de aliniere a textului, x si y sunt coordonatele punctului iar dx si dy se adauga la ele ca sa scrie textul unde ar fi mai potrivit. Daca ai chef si timp, cauta fiecare dintre variabilele astea si ai sa vezi cum sunt calculate; nu e mare lucru, trebuie doar sa ai rabdare.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Marian din Noi 26, 2010, 10:45 AM

                  John Doe, mie mi-a facut cineva demult un program ptr. calculul suprafetelor in Excel si recunostea numarul punctului. Cind l-am intrebat cum face asta, mi-a raspuns ca programul vede punctul de insertie al cifrei(nr. pct) Nu sunt expert in soft, dar poate-ti dau o idee! Raportarea punctelor o faceam cu Toposys care, in functie de scara, pozitiona cifrele(nr. pct) la o distanta constanta pe x si y a punctului de insertie al cifrei! Distanta asta era de baza ptr recunoasterea nr.pct.

Modificat de Marian (26-11-2010 08:47:57)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Noi 26, 2010, 10:49 AM

                  Da e clar, chinezaria asta de ZWCAD ii cam "fucked up"  cum zic los americanos, deci uite un ex. (numa la dist. redusa vad ca face figuri si culmea nu la toate punctele, chiar aia care cel mai usor de verificat la ospicii

kod a scris:


A1,A2,520904.64,393234.62,580.079,4105.2495,4157.9791,8.9364  <-- var. gresita din ZWCad

A1,A2,520904.64,393234.62,580.079,4105.249,4146.03,8.9364  <-- vers. corecta din Autocad


sunt setate amandoua cad-urile cum trebuie, unitati, unghiuri etc. dar deageaba, vb. aceea chinezaria tot chinezarie ramane

Multzam fain John, da, asta cautam
John Doe a scris:

(command "text" "J" jt (list (+ y dx) (+ x dy)) 3 0 ncor)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Noi 26, 2010, 11:08 AM

                  @Marian: inteleg ce spui; de exemplu, ia pe rand fiecare entitate de tip TEXT (care pot sa o pun eu pe alt layer, ca sa fiu sigur ca nu ia altceva), o citeste si îi asociaza cea mai apropiata entitate de tip POINT, dar am constatat ca nu intotdeauna poti fi sigur pe algoritmul asta.
S-ar mai putea face inca ceva: sa verifice prima data cate POINT si cate TEXT sunt in desen, si daca numarul lor difera sa spuna. Dupa ce userul rezolva asta manual, sa asocieze fiecare text la un singur punct (cel mai apropiat), si daca userul vrea sa poata verifica asocierea. Eventual cu linii de indicatie puse pe alt layer... da, cred ca ar merge... sa vedem. Daca raportez tot eu punctele e OK, dar daca le-a raportat (si poate si mutat dupa aia) userul trebuie sa presupun eu cum a facut-o.

Repet, orice critica/observatie e binevenita pentru mine. Nu am pretentia ca fac numai aplicatii corecte si cele mai bune, dar... sa nu uitam ca sunt si gratuite... o sa apara si din alea mai pe bani dupa ce rezolv chestiunea cu drepturile de autor. Daca reusesc.
Spor la munca tuturor pana atunci, cu ce avem deocamdata !



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Marian din Noi 26, 2010, 01:05 PM

                  Am uitat sa precizez ca atunci cind calculam suprafata, programul imi cerea(facea zoom pe pct cu nr cel mai mic) distanta dintre pct si pct de insertie al textului corespunzator.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Noi 26, 2010, 02:41 PM

                  Da, cel mai sigur asa este, dar daca ai 200 - 300 de puncte nu te enervezi ? si-l înjuri pe programator...


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Marian din Noi 26, 2010, 03:31 PM

                  Pai prin alea 200-300 puncte trece polilinia si pe aia o marchezi ca sa faci suprafata. Nu stiu daca te ajuta, dar as putea sa-ti trimit programul ala. L-a facut baiatul meu demult.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Noi 26, 2010, 03:53 PM

                  Mersi Marian, nu e nevoie, am inteles cum ai zis ca functioneaza si pana sa stau sa pricep cum a conceput altcineva algoritmul mai bine il scriu eu frumos de la inceput. Deocamdata însa, nu prea am timp si nici nevoie.
In plus, nu ma pot baza pe ideeea ca toate textele sunt la o distanta fixa de punctul lor - daca userul a mutat ceva texte fiindca nu se vedeau bine? ma suna si-mi zice ca nu merge si eu imi sparg capul sa-mi dau seama ce am gresit? crede-ma, am ceva experienta pe tema asta....

Am mai spus: aplicatiile pot suplini multe operatiuni si calcule repetitive, scutesc foarte mult timp, nu gresesc dar NU pot suplini anumite... lipsuri ale utilizatorilor. Prefer sa intuiesc cat mai multe chestiuni din partea a doua si sa le evit. De ce crezi ca i-am tras comanda UNITS la inceput? sau de ce m-am legat de OSNAP? si altele.

Voiam sa spun ca daca ar fi sa indici la toate textele de  pe contur care e punctul corespunzator mori încet, nu e o solutie. Teoretic, o aplicatie e facuta pentru automatizarea lucrului deci utilizatorul trebuie sa intervina cat mai putin; daca e nevoie sa intervina prea mult, aplicatia nu-si mai are rostul.

In fine... hai ca ne lungim prea mult. Ai incercat sa vezi daca la tine merge aplicatia asta cu tabelul ?



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Marian din Noi 26, 2010, 05:29 PM

                  Nu am incercat ca nu am nevoie. Am TopoLT cu licenta.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: sharkymatei din Dec 02, 2010, 03:29 PM

                  Salut la toti.
Urmaresc cu interes discutiile de pe acest forum, si am vazut ca lumea se ajuta intre ei cu diferite aplicatii concepute individual.
As dori sa va intreb dc stie cineva cum pot sa aduc niste puncte topo la cota scrisa in textul de langa ele.
Am niste ridicari topo in .dwg la niste stradute si nu am inventarul de coordonate. Punctele apar cu x,y, insa z=0. Cota este scrisa text langa punct, precum si numarul si codul punctului.
In functie de ce cod apartine, punctele sunt in layere separate, la fel si textele cotelor. Deci pot selecta sa vad doar punctele, textele si codurile pt margine drum spre exemplu.
Aveti careva vreun lisp care sa ma ajute sa ''mut '' punctele la cote de langa scrisa in text? Eventual sa atribui si codurile scrise tot langa.
Am nevoie de aceste puncte sa aiba si cota corespunzatoare, ca sa pot genera o suprafata.

Multumesc

P.S.: Daca as putea atribui si codurile pt fiecare punct as putea sa le unesc prin polilinii 3d, ce ma vor ajuta f mult la suprafata (de fapt aici vreau sa ajung)

Modificat de sharkymatei (02-12-2010 13:30:45)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Dec 02, 2010, 03:43 PM

                  cel mai usor ii ceri celui/celei care a masurat drumul sa-ti dea si inventarul de coordonate (sau chiar mai multe dace are) si le poti importa pe urma in ACad cu punctele direct pe cote sau cum mai ai nevoie.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: sharkymatei din Dec 02, 2010, 03:55 PM

                  Salut. Problema e ca nu vor sa ne dea inventarul de coordonate, ne cer bani pe el, chiar dc cineva i-a platit deja. E romanika frate.
S-au facut ridicarile la niste stradute, s-a realizat un SF si acum noi trebuie sa facem PT+DDE, dar ridicarile facute de ei le-au pus la dispozitie doar pe suport de hartie. Am primit de la cineva ridicarile ''brute'' dar nu sunt in formatul in care sa ma pot folosi de ele.
Nasol.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Dec 02, 2010, 04:52 PM

                  Sau poti incerca sa-ti generezi tu un inventar de coordonate din Tools -> Attribute Extraction ; ar trebui sa poti genera un XLS pe care-l faci pe urma text sau ce trebuie si il raportezi din nou, cu Z cu tot.
Sa fii atent doar la ce scrie prin casetele alea, ce bife pui sau nu, de mers trebuie sa mearga. Nu neaparat din prima incercare.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Gunnerica din Dec 02, 2010, 10:03 PM

                  De vreo 2 zile imi apare o eroare in autocad in momentul in care vreau sa generez modele 3d pt calcul de volume cu TopoLt. Eroarea ii : " Bad argument type: stringp nil". Inainte mergea si acum nu mai reusesc nicicum. ( am ajuns pana la reinstalarea autocad-ului). Poate cineva sa ma ajute?

Modificat de Gunnerica (02-12-2010 20:04:23)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Dec 02, 2010, 11:08 PM

                  
Gunnerica a scris:

De vreo 2 zile imi apare o eroare in autocad in momentul in care vreau sa generez modele 3d pt calcul de volume cu TopoLt. Eroarea ii : " Bad argument type: stringp nil". Inainte mergea si acum nu mai reusesc nicicum. ( am ajuns pana la reinstalarea autocad-ului). Poate cineva sa ma ajute?


Semnaleaza eroarea pe forum TopoLT - http://www.topolt.com/en/resources/users-forum.html si sunt convins ca vei primi un raspuns clar din partea autorului programului!


_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Mit din Dec 03, 2010, 01:22 AM

                  Cred ca ai o eroare in fisierul .dwg. Incearca sa creezi modelul 3D intr-un fisier nou creat. Nu cred ca-i de la TopoLT. 


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: adrianc din Dec 03, 2010, 10:11 AM

                  Sunt de acod cu mit, copiaza totul intr-un dwg nou, eventual raporteaza punctele din nou si trebuie sa mearga.

_______________________________________
La muncă! nu la întins mâna.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Dec 03, 2010, 10:13 AM

                  Sau:
    Incearca si in alt calculator, sa vezi ce se intampla. Poate fi din cauza comenzilor "Save As..." in alta versiune de AutoCAD, poate fi busit sistemul de operare... multe cauze.
    Incearca si sa iei cu copy tot desenul, da-i paste in coordonatele originale intr-un desen nou si vezi daca asa merge.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Mit din Dec 03, 2010, 11:14 AM

                  
John Doe a scris:

Sau:
    Incearca si in alt calculator, sa vezi ce se intampla. Poate fi din cauza comenzilor "Save As..." in alta versiune de AutoCAD, poate fi busit sistemul de operare... multe cauze.
    Incearca si sa iei cu copy tot desenul, da-i paste in coordonatele originale intr-un desen nou si vezi daca asa merge.


Ideea era sa nu copieze date din fisierul pe care-l cred busit, ci sa creeze un nou dwg. de la zero. Daca nici atunci... inseamna ca-i de la sistem, ca din cate-am inteles, AutoCAD-ul a fost reinstalat. 



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: sharkymatei din Dec 03, 2010, 11:50 AM

                  
John Doe a scris:

Sau poti incerca sa-ti generezi tu un inventar de coordonate din Tools -> Attribute Extraction ; ar trebui sa poti genera un XLS pe care-l faci pe urma text sau ce trebuie si il raportezi din nou, cu Z cu tot.
Sa fii atent doar la ce scrie prin casetele alea, ce bife pui sau nu, de mers trebuie sa mearga. Nu neaparat din prima incercare.



Din ce program sunt comenzile astea??



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Dec 03, 2010, 03:27 PM

                  sharkymatei: AutoCAD 2007. Si 2002, si 2011 - am verificat.
Daca chiar nu te descurci, trimite-mi desenul pe mail si-ti trimit inapoi inventarul de coordonate 3D. Adresa de mail o gasesti la profilul fiecarui user. Chiar nu stiu daca merita sa-ti bati capul, mie mi-ar lua vreo 15 minute. Asta dupa ce prima data am stat vreo 3 ceasuri sa ma prind, cand tot asa pe gratis am lucrat... asa ca tie iti cer o bere cand dai prin Sibiu.

Am zis ca te ajut nu fiindca n-am alta treaba, ci fiindca stiu cam cum e sa fii la inghesuiala in situatii mai mult sau mai putin idioate.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Gunnerica din Dec 05, 2010, 09:33 PM

                  Am incercat sa extrag coordonatele din desen si sa generez apoi un alt inventar de coordonate de tip .txt ( initial incarcam in autocad .gsi). Am incercat apoi sa raportez iar punctele si tot n-a mers. Am luat fisierul de coordonate pe stick si am incercat apoi si pe laptop si nici asa n-am reusit. Am instalat si autocad-ul si TopoLt de vreo 2 ori si nici asa n-a mers. Am incercat si pe autocad 2000, 2002, 2006 si 2008 si n-am reusit. Am instalat apoi si Leica geo tools si am facut iarasi setarile si nici asa n-a mers.( Aveam impresia ca e de la descarcarea aparatului problema, deoarece am descarcat aparatul pe laptop si acolo a mers si pe calc tot n-a mers). In cele din urma dupa 2 zile de lupte si nervi, a cedat calcu si dupa ce am venit de pe teren de la alta masuratoare, am reusit sa descarc si sa generez modelul 3D si apoi sa fac curbe de nivel si calcule de volum. Deocamdata merge si nu-mi dau seama ce s-a intamplat,dar sper sa nu reapara problema. Multumesc tuturor colegilor de ajutor.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Gunnerica din Dec 05, 2010, 09:33 PM

                  Am incercat sa extrag coordonatele din desen si sa generez apoi un alt inventar de coordonate de tip .txt ( initial incarcam in autocad .gsi). Am incercat apoi sa raportez iar punctele si tot n-a mers. Am luat fisierul de coordonate pe stick si am incercat apoi si pe laptop si nici asa n-am reusit. Am instalat si autocad-ul si TopoLt de vreo 2 ori si nici asa n-a mers. Am incercat si pe autocad 2000, 2002, 2006 si 2008 si n-am reusit. Am instalat apoi si Leica geo tools si am facut iarasi setarile si nici asa n-a mers.( Aveam impresia ca e de la descarcarea aparatului problema, deoarece am descarcat aparatul pe laptop si acolo a mers si pe calc tot n-a mers). In cele din urma dupa 2 zile de lupte si nervi, a cedat calcu si dupa ce am venit de pe teren de la alta masuratoare, am reusit sa descarc si sa generez modelul 3D si apoi sa fac curbe de nivel si calcule de volum. Deocamdata merge si nu-mi dau seama ce s-a intamplat,dar sper sa nu reapara problema. Multumesc tuturor colegilor de ajutor.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Gunnerica din Dec 05, 2010, 09:43 PM

                  Imi cer scuze pt postarea de mai multe ori, dar mi-a cazut netu si apoi m-am trezit ca l-a pus de mai multe ori. Am tot cautat si n-am descoperit cum pot sa-l sterg


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Dec 06, 2010, 10:09 AM

                  Gunnerica: Dupa ce postezi, sub fiecare text scrie cu galben niste posibile actiuni de efectuat asupra postului; daca e al tau sigur este si "Stergeti". Pe cele cu "error" ti le-am sters eu.

Extragerea coordonatelor asa cum am zis au merge daca punctele sunt raportate sub forma unor blocuri cu atribute, raportate toate cu Z=0 dar la un anumit camp al blocului se regaseste valoarea Z. Asa cum raporteaza TopoLT, de exemplu.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: sharkymatei din Dec 06, 2010, 01:27 PM

                  salut John Doe... acestea sunt fisierele .csv cu ridicarile topo de care ziceam. Am reusit sa fac rost pt o parte din strazi de inventarul de coordonate. Problema e ca nu reusesc sa imi generez un plan cu punctele de acelasi cod unite cu polilinii 3d. Evorba de niste strazi care au puncte pt ax existent, margine p carosabila, santuri, limite prprietati, etc. Poate reusesti sa le generezi cu ceva program.....
Multumesc...



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: sharkymatei din Dec 06, 2010, 01:38 PM

                  salut John Doe... acestea sunt fisierele .csv cu ridicarile topo de care ziceam. Am reusit sa fac rost pt o parte din strazi de inventarul de coordonate. Problema e ca nu reusesc sa imi generez un plan cu punctele de acelasi cod unite cu polilinii 3d. E vorba de niste strazi care au puncte pt ax existent, margine p carosabila, santuri, limite prprietati, etc. Poate reusesti sa generezi cu ceva program polilinii 3D (neaparat 3D).....
Multumesc...

Acestea sunt inventarele de coordonate pt acele strazi din 2 localitati

Coordonate strazi sharkymatei.rar - 39.3 Kb

PS: nu vad butonu de stergeti pt postarea de 2 ori de mai sus, acolo langa modificati :P:P

Modificat de sharkymatei (06-12-2010 11:47:35)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Dec 06, 2010, 02:45 PM

                  sharkymatei: Era sa ma bagi in ceata cu site-ul ala... au sarit pe mine vreo zece reclame, gagici... abia am scapat.
In fine, ai reusit sa-ti faci un carnet de teren cu Z cu tot si cu coduri. Daca-mi aduc bine aminte, TopoLT are o functie de unit puncte dupa coduri si nu prea vad rostul sa ma apuc eu acuma sa reproiectez ceva existent. Nu cred ca-ti uneste punctele cu polilinii 3D, dar iti face modelul terenului din 3DFace, pe care iti face pe urma si curbele de nivel daca-ti trebuie.
Sau: raporteaza-ti punctele pe layere separate, functie de coduri, si coloreaza fiecare layer altfel; pe urma o sa fie mai usor sa unesti de mana punctele.

Cât despre butonul ala de stergere... mai uita-te ca este.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Dec 06, 2010, 02:46 PM

                  john, butonul ala il vezi doar tu, ca esti moderator 


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: sharkymatei din Dec 06, 2010, 02:51 PM

                  nici eu nu il vad...deja ma gandeam k is pe langa... dar tot nu il vad...

Referitor la siteaul acela, l-au tot incarcat cu tot felul de publicitati, insa majoritatea de hosting gratuit au asa. Daca ai cont pe bani nu vezi publicitatile.

Topolt are functia de a uni, insa cu polilinii 2d, dar am nevoie neaparat de 3D.
Cu Autocad Civil 3D pot genera suprafata pe baza punctelor, dar am nevoie de acele linii 3d sa conditionez suprafata, sa se faca o triangulatie ce nu taie acele linii. Astfel iese o suprafata aproape de cea reala.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Dec 06, 2010, 03:01 PM

                  
sharkymatei a scris:


Referitor la siteaul acela, l-au tot incarcat cu tot felul de publicitati, insa majoritatea de hosting gratuit au asa. Daca ai cont pe bani nu vezi publicitatile.


Daca ai "Add block plus" si "WOT" (Web of Trust) <-- extensii pt. Mozilla firefox si Google Chrome, nu ai sa le vezi (pop-up-urile alea) si implicit nu poti da click pe ele => nu-ti poti infecta PC-ul cu tot felul de troieni si alte prostii

Morla: Nu mai folositi oameni buni porcaria aia de Internet Explorer  "Be smart" !



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Dec 06, 2010, 04:17 PM

                  Da, cu butonul ala probabil ca sunt eu pe langa. Si nici nu e buton de fapt, e hyperlink. Scuze.

Am inteles ce vrei, dar nu am nici o aplicatie care sa uneasca puncte dupa coduri. Si nici nu e chiar simplu de facut. Ai si ceva mii de puncte, cam naspa. N-am nici o idee in afara de ce am zis pana acum...



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: adrianc din Dec 06, 2010, 04:38 PM

                  TopoLT iti uneste intradevar cu polilinii 2D dar tot cu TopoLT poti folosi comanda "liftup" sau din meniu->transformari->ridica la cota punctelor si iti transforma 2D in 3D la cota punctelor.

_______________________________________
La muncă! nu la întins mâna.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: sharkymatei din Dec 06, 2010, 05:07 PM

                  
adrianc a scris:

TopoLT iti uneste intradevar cu polilinii 2D dar tot cu TopoLT poti folosi comanda "liftup" sau din meniu->transformari->ridica la cota punctelor si iti transforma 2D in 3D la cota punctelor.


Am sa incers sa vad ce iese...mersi



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Dec 17, 2010, 10:16 AM

                  Ziceam mai demult ca am reusit sa fac o aplicatie care face PAD-ul (A4 si A3),  Anexele 1, 2, 5, nota de tarifare si fisierele CPXML si DXF pentru dosare de prima intabulare teren extravilan, persoane fizice sau juridice.
      Ca sa vedeti ceva mai exact ce face, am postat doua filmulete aici:

http://dl.transfer.ro/transfer_ro-17dec-2eafda81ce.zip

      Nu o distribui gratis, chiar am muncit prea mult la ea; va fi si de vanzare la un pret modic, dar deocamdata nu am reusit sa obtin drepturile de autor. Daca cineva m-ar putea ajuta la faza asta cu drepturile, nu raman dator.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Dec 17, 2010, 10:20 AM

                  Ai incercat pe forumurile juristilor/avocatilor ?


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Dec 17, 2010, 10:25 AM

                  Da, dar mereu sunt indrumat catre cate un cabinet de avocatura... fie nu sunt ei prosti, fie au dreptate.
Cu hardul si softul sunt in regula dar sunt ale firmei la care lucrez; nu are nici o pretentie, dar pare ca e mai complicat din cauza asta.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: vio30 din Dec 17, 2010, 10:55 AM

                  Am vizionat filmuletele.
Sper sa obtineti cat mai repede drepturile de autor.
           
Asteptam sa vedem si preturile.
 



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Dec 17, 2010, 11:10 AM

                  Pretul va fi modic... doar atat cat sa nu fie gratis. Ca sa nu merite oboseala de a o decompila si sa descurajeze tendinta de a o face cadou altora. E compilata si functioneaza numai pe calculatorul care are o anumita serie la hard.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Dec 17, 2010, 11:26 AM

                  John Doe:
Distribuirea unui produs este esentiala dupa efortul si entuziasmul creatiei.
O idee ar fi sa contactezi o firma specializata, acelasi lucru l-a facut si autorul TopoLt, ProfLt.
Vezi daca sunt interesati cei de la CADWARE Engineering: http://www.cadware-eng.ro/


_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Dec 17, 2010, 01:10 PM

                  Da partea asta cu alianta e cu 2 taisuri, la un moment dat, daca vad ca va fi profitabila treaba, or sa faca tot posibilul sa se fac ei stapani pe munca ta, si tu vei fi marginalizat.

Dupa ce am vazut filmuletele, mi-am dat seama, cat de mult depinzi de ordonantele si legile date de ancpi, si de programul generare CP, adica, la modul in care se misca lucrurile, ba cate un ordin care modifica fundamental cate o anexa, sau mai multe, ba un update la generare cp in care se mai schimba cate ceva, vei avea mult de furca la partea de "mentenanta" sau de update la zi !

In rest jos palaria



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: sacoracad din Dec 20, 2010, 01:09 AM

                  Am eu un programel, nu stiu de unde (Dxyz) care face exact ce vrei tu, in cateva secunde. :hi

_______________________________________
Noi te masuram cel mai bine


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Dec 20, 2010, 08:55 AM

                  
sacoracad a scris:

Am eu un programel, nu stiu de unde (Dxyz) care face exact ce vrei tu, in cateva secunde. :hi


Asteptam zilnic astfel de interventii.
Nu stiu de unde, nu stiu cum, nu stiu pentru cat timp dar munca va fi placuta, autolisp nu va avea secrete...


_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: sacoracad din Dec 20, 2010, 10:51 AM

                  Aici e programelul. Atentie! fisierul .dwg trebuie sa fie fomat 2000.
http://dl.transfer.ro/transfer_ro-20dec ... 4274a7.zip


_______________________________________
Noi te masuram cel mai bine


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Dec 20, 2010, 11:11 AM

                  
sacoracad a scris:

Aici e programelul. Atentie! fisierul .dwg trebuie sa fie fomat 2000.
http://dl.transfer.ro/transfer_ro-20dec ... 4274a7.zip


S-a mai amintit pe forum despre utilitarul DXF2XYZ: http://www.guthcad.com.au/freestuff.htm



_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: sacoracad din Dec 20, 2010, 01:34 PM

                  Atunci trebuie sa rezolve rapid problema si cu ocazia asta am aflat si de unde e programul.

_______________________________________
Noi te masuram cel mai bine


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: DanCad din Ian 26, 2011, 03:48 PM

                  Sunt de acord ca TOPOLT este o aplicatie complexa, dar nu au inventat ei Visual Lispul, asa ca oricine care se pricepe  poate sa creeze aplicatii asemanatoare.Mult respect pentru cei care posteaza aici rutine Visual Lisp.

Modificat de DanCad (26-01-2011 14:15:00)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: DanCad din Ian 26, 2011, 03:57 PM

                  Dragii mei, eu colaborez cu topografi.De nevoie am inceput sa invat Visual Lisp(nu sunt un programator experimentat) si am generat unele aplicatii Visual Lisp utile pentru intocmirea documentatilor .As fi interesat sa corespondez cu cineva care este pasionat de Autocad si Visual Lisp pentru a face schimb de idei.

Cu mult respect.

Modificat de DanCad (26-01-2011 14:23:02)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Ian 26, 2011, 07:12 PM

                  DanCad: deci cu scara de plotare te-ai lamurit.
Schimb de idei se poate face foarte bine aici pe forum - doar de aceea e creat, nu? Spune.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: DanCad din Ian 27, 2011, 11:25 AM

                  Salut pe toata lumea,

Cu plotarea la scara din spatiul model m-am lamurit.Multumesc mult pentru raspunsuri.Ma intereseaza daca cineva foloseste Layout-ul pentru plotare, cum determina scara in viewport.De asemenea daca trebuie sa desenam un profil la doua scari, scara lungimilor 1:1000 si scara inaltimilor 1:100, cum il obtinem?

Multumesc anticipat.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: bogdy din Ian 28, 2011, 08:46 PM

                  scara in spatiul model:
(cond    ((= scr "200" ) (setq z "5" ))
    ((= scr "500" ) (setq z "2" ))
    ((= scr "1000" ) (setq z "1" ))
    ((= scr "5000" ) (setq z "0.2" ))
    ((= scr "2000" ) (setq z "0.5" )))
(command "_.mspace"
                "._zoom" "e"
                "._zoom" (strcat z "xp" ))
(command "._pspace" )

cat despre profile le desenezi direct la scara.

Modificat de bogdy (28-01-2011 18:47:20)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: adrianmonea din Ian 28, 2011, 09:06 PM

                  am o problema cu creerea unor blocuri cu atribute in autocad, ma poate ajuta cineva?


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: bogdy din Ian 28, 2011, 10:56 PM

                  
adrianmonea a scris:

am o problema cu creerea unor blocuri cu atribute in autocad, ma poate ajuta cineva?

 pai spune si care e problema 



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Ian 29, 2011, 12:36 AM

                  bogdy: e putin rupt din context - treaca de la mine, am inteles ce vrei sa spui. Dar daca cineva da comenzile astea si nu merge... si te-njura...
Era mai simplu, cred eu, daca spuneai ca se poate folosi comanda ZOOM si optiunea "S" de la "Scale" , iar factorul de scara este [scara desenului] / [scara la care vrei sa-ti faca zoom-ul] , iar factorul de scara se pune legat cu un "p" dupa el.
Fiindca in principiu noi lucram in desene care au scara 1:1000, atunci impartim 1000 la scara la care vrem sa ne faca zoom si ala e factorul de scara.

Se pot afla mai multe si interesante daca luati pe rand toate optiunile lui ZOOM si vedeti ce se intampla. E chiar interesant, vorbesc serios.

Blocuri cu atribute: sunt blocuri care pot contine mai multe variabile, care pot avea diferite valori la fiecare bloc inserat, si ca sa poti insera un bloc din asta trebuie sa-i dai valori si la variabilele din el.
Uita-te la punctele raportate cu TopoLT de exemplu, sunt blocuri cu atribute. Sau gaseste alt bloc cu atribute, da comanda ATTEDIT si vezi cam ce se intampla. Pe urma, explodeaza un bloc cu atribute si vezi ce apare.
Pe urma, da comanda ATTDEF (sau DDATTDEF, depinde de versiune) si vezi ce poti face - ar trebui sa stii deja sa faci un bloc din asta. Dupa ce-l faci, si insereaza-l ca sa vezi cum se poarta.
Sau nu fa nimic si intreaba tot aici...



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: bogdy din Ian 29, 2011, 12:01 PM

                  eu am scris doar o parte din program. nu vad ce nu ar merge daca se mai adauga si restul programului propriu-zis. tu cand raportezi punctele le faci 1:1 dar cotele si denumirile de pe plan le scalezi la anumita scara. o zi buna


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Ian 29, 2011, 12:50 PM

                  bogdy: Nu sunt detinatorul adevarului absolut, nu tin sa am dreptate intotdeauna. Mi-am spus doar o parere si am oferit alternative complete. O zi buna si tie.


Scara in viewport o poti determina si altfel: selectezi chenarul viewportului, si in caseta de proprietati (Ctrl+1 daca nu ma insel) ai undeva "Custom scale" ; acolo scrii tu factorul tau de scara si iti face zoom-ul la scara respectiva. Metoda e utila la formularele pentru descrierea bornelor de exemplu, la planurile de incadrare in zona, etc.
Daca tot vorbim de zoom, mai sunt niste optiuni folositoare: se poate face zoom pe ultimul obiect din desen. Daca ati dat "Paste to original coordinates" la o parcela peste vreun plan cadastral mai mare si e mai greu de cautat unde a picat conturul, imediat dupa asta dati comanda ZOOM, alegeti optiunea "ob" (adica obiect), pe urma scrieti "L" fara ghilimele adica ultimul obiect, mai dati doi de enter si o sa faca zoom fix pe conturul vostru.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: DanCad din Ian 30, 2011, 04:13 PM

                  Va multumesc pentru raspunsurile date.

Cu mult respect,
Dan



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: raptor din Mar 10, 2011, 02:55 PM

                  Salut!
Am si eu o intrebare ,
Se poate "transforma" dintr-un fisier *.dwg in care am mai multe puncte si as vrea sa stiu daca pot genera un fisier text sau alt tip in care sa rezulte Nume punct, Distanta inclinata si/sau redusa, Unghiul Orizontal, Unghiul Vertical(planul e 3D sau am cotele punctelor pus intr-ul layer separat) ?

Va multumesc anticipat.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mar 10, 2011, 03:54 PM

                  Vezi tot aici, pe la pagina 6 e un exemplu de generare carnet de teren; nu e exact ce vrei tu, dar cu niste modificari minime ai rezolvat-o.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: raptor din Mar 10, 2011, 10:31 PM

                  da .. am vazut aia si am reusit cu mici modificari.
Dar ce ma intereseaza pe mine e sa calculez unghiul inclinat, pt ca asta tine de o realizare adevarata.
E bun caietul ala descris la pagina 6 , caiet furnizat de respectivilul domn John Doe.
Eu mai lucrez si cu un GPS Geomax ZPG800 si la acesta eu nu reusesc sa obtin fisierul tip "RINEX", aparatul e foare precis dar nu am suport la OCPI. si de aceia caut o solutie pentru a duce o fisa de masuratori clasice la Oficiu, iar daca il trimit fara unghi vertical se prind stia , ca na ... canva au fost si ei printre noi.
Daca stii cum sa modific acel lisp pentru a calcula si unghiul vertical ti-as ramane recunoscator.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mar 10, 2011, 11:37 PM

                  Scriptul acela e conceput pentru polilinii 2D - cele utilizate in mod curent, si dupa cum ai vazut extrage coordonatele vertexurilor, care coordonate sunt si ele tot 2D adica nu au Z.
E cam nasol de lucrat cu polilinii 3D, de aia as zice ca e mai bine sa te legi de alt tip de entitati: puncte (care pot fi 3D, daca le unesti ca de obicei cu polilinii 2D nu are nimic) sau blocuri cu atribute cum foloseste TopoLT.
Sa zicem ca lucram cu puncte care au Z. Atunci, la SSGET trebuie sa schimbi tipul entitatii din lista filtru din LWPOLYLINE in POINT, la fel parcurgi lista la fiecare entitate si cand ajungi la grupul cu codul 10 ai dat peste coordonate; numai ca acuma, din lista aia (din care faceam eu x=CADR si Y=CADDR), trebuie sa o setezi mai intai sa-ti dea lista fara primul element, cu functia CDR si o sa ramana o lista de 3 elemente (x y z) pe care le extragi cu CAR, CADR si CADDR.
Pe urma, unghiul vertical stii cum sa-l calculezi.
M-as bucura sa o rezolvi tu mai departe.
Spune-mi ce ai rezolvat sau nu, te astept.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mar 14, 2011, 07:20 PM

                  Stim ca daca vrem sa intabulam o parcela dintr-o tarla (extravilan, L18/1991) trebuie sa parcelam toata tarlaua daca exista planuri parcelare. Mai recent, am auzit ca ni se vor cere si fisierele CP de la toate parcelele din tarla - mai stie cineva ceva de asta? Fiindca am mai facut o aplicatie LISP care genereaza fisierele CP la greu, automat, in baza tabelului cu tarlaua primit de la OCPI si a parcelarului facut de noi, acum e in teste si as mai avea nevoie si de alte opinii.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: kod din Mar 14, 2011, 08:31 PM

                  ...alte opinii, eu zic sa nu le mai dai idei, la astia de de la ospicii, ca si asa au destule, oare nu e de ajuns ca noi facem totul ?! ce mai in scurt timp nu mai avem nevoie de receptioneri, inspectori, notari etc. ca 90% din munca lor e facuta pe spatele, timpul si nervii nostrii, din pacate procentul castigului e invers proportional, deci in concluzie OARE NU E DE AJUNS  ?

Modificat de kod (14-03-2011 20:40:21)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mar 14, 2011, 08:46 PM

                  Nu vreau sa dau asemenea idei nimanui. Asa am auzit ca se va cere, am rezolvat-o oarecum si voiam sa stiu daca se intampla deja prin alte parti si daca da, cam ce se cere.
In rest, de acord cu tine...



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: raptor din Mar 15, 2011, 02:24 PM

                  Salutare
Am si eu o intrebare, Ati mai lucrat vreunul dintre voi cu E-ON-ul mai recent?
Pentru ca mi-au trimis un model de plansa in care punctele de detalii sunt reprezentate prin Block Reference, au inclusa si cota in el si sunt situate 3D la cota textului cotei.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: adrianmonea din Mar 15, 2011, 10:30 PM

                  eu lucrez cu e-on-ul,fac de 2 ani lucrari pt ei de genul asta


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mar 15, 2011, 10:35 PM

                  Da, unii lucreaza in felul asta. Daca vrei sa extragi atributele blocurilor, cauta in AutoCAD in meniu "Attribute extraction" (in Tools, parca?) sau foloseste comanda EATTEXT.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: raptor din Mar 15, 2011, 10:35 PM

                  si pot sa te intreb cum raportezi pinctele ca sa iti dea punctul si cota block cu punctul de prindere in centrul punctului


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Mar 15, 2011, 10:37 PM

                  Nu inteleg ce vrei sa zici in ultimul post, mai zi o data...


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: raptor din Mar 15, 2011, 10:38 PM

                  da-mi o adresa me mess ca sa vb mei repede daca vrei( pe privat)


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: adrianmonea din Mar 15, 2011, 10:47 PM

                  incearca cu autocad 2009,eu asa am reusit, prima data creezi blocuri, apoi creezi aributele la blocuri, vezi sa fie in metri 


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Atopor din Iun 14, 2011, 02:09 PM

                  Poate cineva sa posteze un exemplu de cod pentru atribuirea coordonatelor xyz ale unui block selectat unor variabile x y z? Sau altfel spus vreau sa selectez un block si sa folosesc coordonatele punctului de insertie intr-un program.
Va multumesc!



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Iun 14, 2011, 05:19 PM

                  Probabil se poate, dar blocurile cu atribute sunt mai nashparlii si nu se manipuleaza chiar simplu in LISP, poate in alte limbaje dar nu sunt sigur.
Pana una-alta, cauta comanda "Attribute Extraction" in Tools, poate te ajuta; poti extrage in fisiere externe atributele care vrei tu si le poti folosi pe urma.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Oct 06, 2011, 08:47 PM

                  Am in calculator cateva programele in LISP, care imi sunt foarte des de folos si am ales sa le postez si aici:
http://www.fileshare.ro/30222586368
Unele sunt facute de mine, altele sunt luate dupa net. Pentru a putea folosi un program LISP, il incarcati in AutoCAD cu comanda _appload (sau ap). Daca nu stiti cu ce comanda ruleaza Lisp-ul respectiv, il deschideti in Notepad si va uitati unde scrie (defun c:y (), unde y este numele comenzii, iar in AutoCad tastati y ca sa rulati programul (asta e pentru incepatori).
Pentru cine e interesat, mai am niste LISP-uri facute de mine, pentru care este recomandat sa aveti TopoLT instalat. Unul din ele genereaza Anexa 11 automat, completand un bloc cu atribute, iar celalalt pune automat intr-o drumuire simbolul de statie sau borna si scrie coordonatele acestora automat (extragandu-le din blocul PUNCT al TopoLT-ului).



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: cristi_gav din Oct 06, 2011, 10:48 PM

                  Cred ca ar fi ok. Multumesc!


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 06, 2011, 11:06 PM

                  Sau la sfârsitul programului adaugati linia:

(alert "Programul ruleaza cu comanda XXX" )

, si o sa apara o caseta cu mesajul asta dupa ce il incarcati.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: raptor din Oct 06, 2011, 11:44 PM

                  am si eu o intrebare.
am de facut ceva planuri parcelare la cateva tarlale si as vrea sa stiu daca exista vreun lisp sau ceva de genu pentru a putea importa in CP mai multe contururi de imobile noi fara a fi necesar sa dau la fiecare next ->next ->next. daca stiti vreo modalitate ..... ipartasiti si cu mine



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 07, 2011, 01:10 AM

                  Tocmai am terminat un LISP care iti face fisierul CPXML pentru toate imobilele din tarla; mai vreau sa-l testez ca lumea si e gata. Probabil o sa revin cu o prezentare, dar aplicatia nu va fi gratis.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Oct 07, 2011, 01:51 PM

                  Am refacut 2 din programele lisp de mai sus, deoarece chiar daca functionau, nu functionau asa cum ar fi trebuit si imi cer scuze pentru aceasta inconvenienta.
Programele updatate:
http://www.fileshare.ro/30270276645
http://www.fileshare.ro/30270301250
Pt. cei interesati de modulele LISP aditionale:
-programul care genereaza Anexa11 trebuie sa ii mai optimizez codul sursa, deoarece e prea stufos si dezordonat (initial l-am facut strict pentru mine ) si in curand va genera si anexele si fisierul CP complet, nu doar PAD-ul. Insa mai dureaza putin (stau cam prost cu timpul liber) si va rog sa mai aveti putina rabdare. Modulul care face doar PAD-ul este gata deja, dar nu este adaptat la noile cerinte ale OCPI, asa ca trebuie putin modificat. Programul, in forma finala, il voi da gratis aici pe forum, dar sa nu aveti mari pretentii de la el. Eu nici macar nu sunt programator, fac asta ca un hobby.
-programul pentru schema drumuirii este gata deja, dar trebuie sa ii fac si documentatia (trebuie sa stim si cum functioneaza acesta corect, este?). Zilele astea ii voi da drumul.
Numai bine!



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: DanCad din Oct 07, 2011, 01:56 PM

                  Felicitari, ce program folosesti pentru a genera CP.Aplicatia care genereaza fisierul CP este scrisa in Visual Basic?


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 07, 2011, 02:14 PM

                  @DanCad: folosesc tot LISP, sub AutoCAD dar cred ca merge si sub altele care au interpretorul LISP. Fisierul CPXML este fapt un XML, adica un fel de HTML si merge foarte bine scris linie cu linie, ca text. Numai ca trebuie sa fii foarte atent.
Lucrezi cu planul parcelar deschis, dai o comanda si porneste cam asa:


581/489px  36.6KB



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 07, 2011, 02:14 PM

                  , pe urma te intreaba care sunt tabelele pentru proprietari si care pentru parcele:


507/308px  27.8KB



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 07, 2011, 02:15 PM

                  si pâna clipesti din ochi a facut fisierul:


582/412px  44.5KB



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 07, 2011, 02:19 PM

                  Daca treci in tabel si valoarea de impozitare la parcele, o trece si el in CPXML.
Daca sunt parcele care au acelasi numar, ti le selecteaza el dupa suprafata din acte trecuta în tabel. Daca ai doua cu acelasi numar si aceeasi suprafata e treaba ta...
Daca ai gresit vreo categorie de folosinta in tabel, inlocuieste el cu ARABIL dar iti zice la care parcela.
Daca ai in tabel parcele care nu sunt si in plan, nu le trece in CPXML. Daca ai in plan parcele care nu sunt in tabel, la fel (cele mov din desen, de exemplu).
Daca n-ai completat vreo caseta, iti zice si nu trece mai departe.
Tabelul contine si numerele de ordine ale parcelelor in tarla, care se scriu si in fisierul CPXML.
Adresa proprietarilor este scrisa ca fiind in judetul in care sunt parcelele, UAT-ul la fel iar la localitate se trece NEIDENTIFICATA (fara strada si numar) - valabil pentru toata tara. Datele personale ale proprietarilor nu se trec.

Mai lucrez la niste "daca" si va fi gata curând.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Oct 07, 2011, 03:05 PM

                  
DanCad a scris:

Felicitari, ce program folosesti pentru a genera CP.Aplicatia care genereaza fisierul CP este scrisa in Visual Basic?

Nu, il generez cu ajutorul unor functii ale Visual Lisp.
@John Doe, pare o aplicatie excelenta. As avea niste sugestii:
-vezi cum actioneaza programul tau  atunci cand userul in loc sa selecteze tabelul cu proprietari, il selecteaza pe cel cu parcele si invers
-vezi cum actioneaza programul tau atunci cand userul selecteaza un tabel incorect (de ex. tot un fisier csv, dar care contine coordonate, in loc de alte date). Plus, majoritatea folosesc fisiere de tip .xls pentru tabele, nu .csv (nu cred ca asta ar fi totusi o problema).
-ce faci pentru userii care au doar proiectul parcelar, dar nu au si tabele? Eu as face o functie care sa genereze CP-ul si astfel:
->userul sa treaca in interiorul parcelei nume proprietar, nume parcela, categorie de folosinta si act de proprietate (oricum functia mdetas din TopoLT face chestia asta partial) si sa generezi CP-ul direct de acolo, fara tabele.
-pentru parcelele dublate din tabel, as recomanda ca programul sa le introduca totusi in CP, dar sa avertizeze userul cu un mesaj
Oricum, felicitari si succes in finalizarea programului!



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 07, 2011, 04:13 PM

                  La chestia cu selectarea altor  tabele chiar nu m-am gandit... in mod normal, da eroare si se opreste dar poate fi prevenita din start. Se va rezolva.
Cine are numai proiectul parcelar, ce fisier CP vrea sa faca? Fisierul fara proprietari e incorect si n-are ce face cu el, deci oricum ii trebuie proprietarii si daca tot face rost de ei, sa-i scrie frumos in tabel si e o treaba ca lumea cap-coada. Oricum, in tabel se trec doar nume, initiala si prenume. Poate sa treaca si unul singur, din partea mea.
Datele text scrise in plan sunt cam greu de manipulat, si asa am destul de furca doar cu numerele parcelelor, nu vreau sa ma incurc degeaba singur. Aplicatia e pentru cei ce fac parcelari deci au si tabelele de parcelare.

Aplicatia primeste numai fisiere CSV, nu se poate selecta alt tip de fisier. Formatul CSV se poate obtine (de exemplu) din Excel cu "Save As..." foarte usor si e un format mai general, il recunosc mai multe aplicatii ; pentru LISP cred ca e cel mai potrivit pentru date de intrare complexe.

Parcelele care au acelasi numar se trec in fisierul CP, fiecare cu suprafata ei masurata. Ziceam ca daca sunt parcele cu acelasi numar si cu aceeasi suprafata masurata atunci poate fi o problema, in sensul ca vor avea si acelasi contur in CP, iar userul va trebui sa-si importe manual celalalt contur la una dintre ele. Insa e o situatie mai mult teoretica si destul de greu de rezolvat din soft, zic eu. Iar avertizarea o da programul "Generare CP", cand se deschide fisierul CP.
Fisierul CP accepta cate un exemplar din fiecare act, deci daca un TP contine mai multe parcele, actul o sa fie trecut in fisier o singura data - asta s-a rezolvat.

Mersi pentru sugestii. Dar sa fim bine intelesi: nici o aplicatie nu va face niciodata tot ceea ce  vrea toata lumea.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 07, 2011, 04:16 PM

                  Tabelul parcelelor arata asa:


, si daca nici datele astea nu le ai ce fisier CP vrei sa faci?


583/296px  38.4KB



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: DanCad din Oct 07, 2011, 04:20 PM

                  Am scris un program Autolisp care raporteaza puncte dintr-un fisier csv, il mai perfectionez putin, si daca sunteti interesati de el il postez gratuit.In acest moment studiez Visual Basic program in care se pot scrie programe mai profesional.
Felicitari John pentru programele realizate, esti cu adevarat un tip foarte inteligent.
Cu respect,
Dan.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 07, 2011, 04:25 PM

                  Mersi, dar nu cred ca sunt eu asa inteligent.... cred ca stiu doar atât cât sa-mi dau seama ce putine stiu de fapt... iar restul e pasiune.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Oct 07, 2011, 04:55 PM

                  John, eu mi-am dat cu parerea din ce am vazut in poze. Daca ma crezi, nu am facut niciodata CP multiplu, de fapt nu am mai facut vreun CP de cel putin jumatate de an (am alti colegi care se ocupa de asta ). Textele din desen nu cred ca ar fi chiar greu de manipulat, mai ales daca sunt create pe layere diferite si dupa niste reguli precise. M-ar bate gandul sa fac eu aplicatia asta, dar, deh, lenea-i mare...si oricum, nu prea am tangenta cu domeniul...
@DanCAD, vezi ca VB nu mai este suportat oficial de AutoCAD-urile mai recente de vers. 2009 parca, iar user-ul trebuie sa instaleze singur suportul pt. VB (asta daca vrei sa faci aplicatii comerciale).



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Oct 07, 2011, 05:03 PM

                  Si pt. cei care se pricep, as avea nevoie de o indrumare pentru un program:
-sa zicem ca am intr-un desen 2 borne care se numesc A1 si B1 si cate 3 repere pentru fiecare. Reperele au denumirea A1R1, A1R2, A1R3, B1R1, B1R2, B1R3. Eu vreau sa duc cate o linie din borna in fiecare reper care ii corespunde automat, adica sa am cate 3 linii pentru fiecare borna in parte. Eu am incercat ceva, dar problema este ca in aplicatia mea imi duce o linie din A1 in A1R1, dar sare peste celelalte 2 repere, apoi imi duce o linie din B1 in B1R1, dar sare peste celelalte 2 si tot asa.
Poate aveti o rezolvare sau o idee.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 07, 2011, 11:44 PM

                  @zamfy: da, inteleg si mersi pentru sfaturi. Insa culegerea informatiilor din textele din desen mi se pare cel putin inutil de greoaie si imprecisa, ca sa nu zic aiurea. In plus, constrangerea utilizatorilor pe anumite structuri fixe prestabilite ale desenului nu e nici ea o solutie buna, constrangerile trebuie sa fie minime si cat mai usor de indeplinit.
Dar, in fine, fiecare face cum vrea el ca de-aia e democratie, si vedem pe urma cum ar fi fost mai bine - n-are rost sa despicam firul in patru aici pe chestiuni care tin prea mult de impresiile personale. O sa revin cu o prezentare mai completa saptamana viitoare, ori aici ori la rubrica "Vanzari" si mai vedem.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Oct 08, 2011, 12:55 PM

                  
John Doe a scris:


Adresa proprietarilor este scrisa ca fiind in judetul in care sunt parcelele, UAT-ul la fel iar la localitate se trece NEIDENTIFICATA (fara strada si numar) - valabil pentru toata tara. Datele personale ale proprietarilor nu se trec.


John, pentru chestia asta hai sa-ti dau o idee: poti sa treci in CP orice localitate din Romania, nu trebuie sa o treci neidentificata! Daca ai TopoLT instalat, cauta fisierul Siruta.csv si acolo ai codurile Sirsup si Siruta pentru orice localitate din Romania. Daca nu il ai, ti-l trimit eu:
http://www.fileshare.ro/30392169203.5

Nu cred ca iti ia mai mult de 10 minute sa implementezi o rutina care genereaza codul Siruta si Sirsup in programul tau, pe baza fisierului de acolo. Succes!



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Oct 08, 2011, 01:01 PM

                  Am imbunatatit destul de mult programul care genereaza puncte pe contur, asa ca m-am decis sa il postez din nou:
http://www.fileshare.ro/30393993662.4



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 08, 2011, 01:04 PM

                  Mersi, am si eu fisierul ala dar problema e alta: proprietarii inscrisi in Titlurile de proprietate nu au si datele personale acolo, deci chiar nu se stie ce domiciliu au. Asa ca, oficial, se trece localitatea "neidentificata". Asa e trecut si in exemplul de fisier CPXML primit oficial de la un OCPI de care m-am folosit ca exemplu.
Codurile SIRUTA si SIRSUP le am si eu toate, chiar le folosesc in alta aplicatie care face dosare de intabulare la foc automat cu toate anexele si cu fisiere DXF si CPXML cu tot, si in aplicatia asta scriu chiar datele reale ale proprietarilor, fiindca le cunosc, avand in fata actele de intabulare ale parcelei respective. Deci rutina de care spui o am de mult. SI daca se va cere sa fie trecuta la localitatea de domiciliu a proprietarilor UAT-ul unde e parcela, sunt vreo trei linii de program in plus deci no problem.
Mersi din nou pentru sugestii.

Sa-ti zic si eu ceva: am postat mai demult pe-aici pe undeva o rutina care genereaza puncte pe un contur cu tabelul de coordonate langa, ai vazut-o? E open source. Poate iti foloseste. Am incercat sa pozitionez ceva mai bine textele de la numarul punctelor cu "BL" , "TL" si altele functie de distanta pana la punctul anterior si orientarea segmentului. Depinde si cum te-ai obisnuit, pentru mine e mult mai convenabil decat rutina din TopoLT, care am impresia ca face mai mult ce vrea ea si mai putin ce vreau eu.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Oct 08, 2011, 01:39 PM

                  Da, ai dreptate, am uitat ca CP-urile de tipul acesta se fac doar pentru extravilan . Dar poate ii va folosi cuiva fisierul respectiv.
Am aplicatia de care spui tu si chiar m-am inspirat din ea pentru alte programe pe care le-am facut. Cred ca o sa iau din ea portiunea de cod care genereaza inventarul de coordonate .
Pe aceasta iti multumesc si tie si tuturor celor care au pus coduri sursa aici, sunt de 1 milion de ori mai bune decat orice carte de lisp. Iar in viitor, daca voi crea programe mai bune, le voi posta cu siguranta aici.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 08, 2011, 09:23 PM

                  Codurile alea au si putin suflet in ele... asa au fos scrise, asa au fost postate. Oricum ar fi, eu si ceilalti autori iti multumim pentru apreciere.
O sa revin si eu, cred ca ar mai fi ceva interesant de postat in materie de aplicatii utile.  Dar repet si aici ce am spus cuiva pe privat: niciodata nu voi mai munci ca sa fac gratis munca altuia. Deci aplicatia cu generare de CPXML am s-o fac cat de buna pot, dar nu va fi gratis.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Oct 08, 2011, 10:34 PM

                  
John Doe a scris:

...Dar repet si aici ce am spus cuiva pe privat: niciodata nu voi mai munci ca sa fac gratis munca altuia....


Generozitatea inseamna sa dai mai mult decat poti si mandria inseamna sa iei mai putin decat ai nevoie. (Khalil Gibran)
  



Modificat de advex (08-10-2011 19:35:36)


_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 08, 2011, 11:12 PM

                  Sigur va fi mai putin decat am eu nevoie...


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: diagodose2009 din Oct 10, 2011, 01:10 PM

                  Salut JohnDoe, am convertit in programul tau PunePuncte_pe_contur, conversie automata din LISP in LISPmatemtatic/C+.

Modificat de diagodose2009 (20-02-2012 11:46:22)


_______________________________________
http://we.tl/D8HOKFyTJ7


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 10, 2011, 02:35 PM

                  Bun... tu imi spui ce sa fac... iar eu te intreb: de ce crezi ca as face asta?
Si... dezactiveaza-ti smilies cand mai postezi coduri. Sau scrie [ code ] si [ / code ] la inceput si sfarsit (fara spatii).



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 15, 2011, 11:38 AM

                  @diagodose2009: nu e chiar programul meu, tin minte ce-am scris in el. Ce as avea de spus:
Aplicatia numeroteaza punctele unui contur. Nu am verificat, probabil ca merge dar punctele par sa fie puse doar la un offset, unele se vor suprapune cu conturul iar daca sunt mai dese se vor suprapune unele cu altele.
Nu am observat sa puna nici distantele dintre puncte, oare nu ar fi bine? Si nici tabelul de coordonate nu-l scoate, nu ar fi misto sa-l puna in desen ca tabel sau intr-un fisier extern, de exemplu CSV ca sa te poti juca cu el in Excel ?
Si ar mai fi ceva: presupun ca conturul este o polilinie. Functie de o variabila (PLINEGEN, cred - nu mai stiu sigur), primul si ultimul punct al unei polilinii pot sa se repete chiar daca polilinia este inchisa, ai tratat aspectul asta?
Oricum, e ceva; si asa, cate putin, se poate construi un set de aplicatii utile usor de implementat in mediul CAD.

In alta ordine de idei: am reusit sa termin aplicatia pentru generarea fisierului CPXML unic pe tarla. Deci se poate. Gasiti un PDF cu mai multe despre la http://dl.transfer.ro/transfer_ro-14oct ... eda8a6.zip



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: raptor din Oct 15, 2011, 10:39 PM

                  @John Doe : am vizualizat pdf-ul tau si as vrea sa iti adresez o intrebare
Cat ar costa lisp-ul tau?, sau care ar fi conditiile in cara s-ar putea intra in posesia lui?



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 15, 2011, 11:17 PM

                  Ti-am trimis mesaj pe privat despre pret si conditii.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: bogdan.cadastru din Feb 18, 2012, 04:43 PM

                  caut un lisp care sa-mi faca suma unor numere in autocad...
similar excelului cand selectezi mai multe casute iti afiseaza undeva in dreapta jos

are cineva asa ceva?
stiu ca face TopoLT dar nu imi merge pe AutoCAD 2012 si  sa nu ma mai chinui pt asta sa deschid win virtuas si sa intru in AutoCAD 2009....



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: bogdan.cadastru din Feb 18, 2012, 06:02 PM

                  intre timp am reusit sa gasesc unul care face exact ce vroiam eu
chiar mai mult
aduna valorile selectate (suprafetele unui releveu) si nu numai ca afiseaza valoarea dar o si scrie ca text in autocad


---------------------------------------------------

(defun C:STX (/ cpent elist en ip newtxt pt ss sum sumtxt txt)
(princ "\n\t\t>>> Select text to get summ >>>"
(if
;;select texts/mtexts on screen :
(setq ss (ssget '((0 . "*TEXT")))
;; if selected then :
(progn
;; store the first text entity for using 'em further :
(setq cpent (ssname ss 0))
;; set initial sum to zero :
(setq sum 0.)
;; loop trough selected texts/mtexts :
(while
;; get the first text in selection :
(setq en (ssname ss 0))
;; get entity list of them :
(setq elist (entget en))
;; get the textstring by key 1 from entity list :
(setq txt (cdr (assoc 1 elist)))
;; create output string :
(setq sumtxt
;; concatenate strings :
(strcat
;; convert digits to string :
(rtos
;; add to summ the digital value of text :
(setq sum (+ (atof txt) sum))
;; 2 is for metric units (3 for engineering) :
2
;; set precision by current :
(getvar "dimdec"))
)
;; delete entity from selection set :
(ssdel en ss)
)
;; display message in the command line:
(princ (strcat "\nSumm=" sumtxt))
(setq pt (getpoint "\nSpecify the new text location: ")
;; get the insertion point of stored entity :
(setq ip (cdr (assoc 10 (entget cpent))))
;; copy text entity to the new destination point :
(command "_copy" cpent "" ip pt)
;; get the last created entity :
(setq newtxt (entlast))
;; get entity list of them :
(setq elist (entget newtxt))
;; modify entity list with new text string :
(entmod (subst (cons 1 sumtxt)(assoc 1 elist) elist))
;; update changes :
(entupd newtxt)
)
)
(princ)
)
(princ "\nStart command with STX..."
(princ)

---------------------------------------------------



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Feb 19, 2012, 05:30 PM

                  
bogdan.cadastru a scris:

caut un lisp care sa-mi faca suma unor numere in autocad...


Daca o sa apelezi la prietenul Google sunt convins ca o sa gasesti o multime de aplicatii care pot sa te ajute.

La http://www.theswamp.org/index.php?topic=32984.msg384478 (autor Alan J. Thompson) este disponibil un lisp care rezolva toata gama de operatii aritmetice.



Code:

;;; ------------------------------------------------------------------------
;;;    CombineValues.lsp v1.2
;;;
;;;    Copyright© 04.09.10
;;;    Alan J. Thompson (alanjt)
;;;
;;;    Contact: alanjt @ TheSwamp.org, CADTutor.net
;;;
;;;    Permission to use, copy, modify, and distribute this software
;;;    for any purpose and without fee is hereby granted, provided
;;;    that the above copyright notice appears in all copies and
;;;    that both that copyright notice and the limited warranty and
;;;    restricted rights notice below appear in all supporting
;;;    documentation.
;;;
;;;    The following program(s) are provided "as is" and with all faults.
;;;    Alan J. Thompson DOES NOT warrant that the operation of the program(s)
;;;    will be uninterrupted and/or error free.
;;;
;;;    Allows user to combine extracted numerical values of selected Attribute,
;;;    Civil 3D Point, Land Desktop Point, MText, MultiLeader, Text or typed value.
;;;
;;;    Combine options include: Add, Divide, Multiply, Subtract (can be changed at any time).
;;;    If user only adds values, an option to average is available.
;;;    Upon completion, user is prompted to specify placement point MText with final value.
;;;
;;;    Revision History:
;;;
;;;    v1.1 (04.11.10) 1. Updated subroutine: AT:ExtractNumbers
;;;
;;;    v1.2 (04.13.10) 1. Reworked AT:ExtractNumbers subroutine.
;;;            2. Added subroutine AT:ListSelect to select numbers when multiple exist in string.
;;;            3. If multiple numbers exist in string, user is prompted with list box
;;;               to select each desired number. If multiple numbers are selected, they are
;;;               combined and added to display.
;;;            4. Added CV:StripFormat subroutine, as taken from StripMText 5.0b,
;;;               Copyright© Steve Doman and Joe Burke 2010 (with permission), to avoid any
;;;               issues with extracting numbers out text formatting. (Thank you Joe & Steve)
;;;
;;; ------------------------------------------------------------------------

(defun c:AV (/) (c:CombineValues))
(defun c:CombineValues (/ *error* AT:ExtractNumbers AT:Str2Lst AT:MText AT:Entsel AT:ListSelect
                        CV:StripFormat _sel dZin f i obj num nStr final pt
                       )
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SUBROUTINES ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;



;;; error handler
  (defun *error* (msg)
    (and dZin (setvar 'dimzin dZin))
    (and msg
         (not (wcmatch (strcase msg) "*BREAK*,*CANCEL*,*QUIT*"))
         (princ (strcat "\nError: " msg))
    )
  )



;;; Extract numbers from string
;;; #String - String to extract numbers from
;;; Required Subroutines: AT:Str2Lst
;;; Alan J. Thompson, 11.13.09 / 04.08.10
  (defun AT:ExtractNumbers (Str / i l)
    (setq i -1)
    (mapcar
      (function atof)
      (AT:Str2Lst
        (vl-list->string
          (mapcar
            (function (lambda (x)
                        (setq i (1+ i))
                        (cond ;; number
                              ((< 47 x 58) x)
                              ;; - and number following
                              ((and (eq x 45) (< 47 (nth (1+ i) l) 58)) x)
                              ;; . and follows a number
                              ((and (eq x 46) (not (minusp (1- i))) (< 47 (nth (1- i) l) 58)) x)
                              (t 32)
                        )
                      )
            )
            (setq l (vl-string->list (vl-princ-to-string Str)))
          )
        )
        " "
      )
    )
  )




;;; Convert string to list, based on separator
;;; #Str - String to convert
;;; #Sep - Separator to break string into items
;;; Ex. - (AT:Str2Lst "1,2,3" ",") -> '("1" "2" "3")
;;; Alan J. Thompson, 11.11.09
  (defun AT:Str2Lst (#Str #Sep / #Inc #List #Str)
    (while (setq #Inc (vl-string-search #Sep #Str))
      (setq #List (cons (substr #Str 1 #Inc) #List))
      (setq #Str (substr #Str (+ 2 #Inc)))
    ) ;_ while
    (vl-remove "" (append (reverse #List) (list #Str)))
  ) ;_ defun




;;; Add MText to drawing
;;; Pt - MText insertion point
;;; Str - String to place in created MText object
;;; Wd - Width of MText object (if nil, will be 0 width)
;;; Lay - Layer to place Mtext object on (nil for current)
;;; Jus - Justification # for Mtext object
;;;       1 or nil= TopLeft
;;;       2= TopCenter
;;;       3= TopRight
;;;       4= MiddleLeft
;;;       5= MiddleCenter
;;;       6= MiddleRight
;;;       7= BottomLeft
;;;       8= BottomCenter
;;;       9= BottomRight
;;; Alan J. Thompson, 05.23.09 / 04.09.10
  (defun AT:MText (Pt Str Wd Lay Jus / Wd s o)
    (or Wd (setq Wd 0.))
    (or *AcadDoc* (setq *AcadDoc* (vla-get-activedocument (vlax-get-acad-object))))
    (setq s  (if (or (eq acmodelspace (vla-get-activespace *AcadDoc*))
                     (eq :vlax-true (vla-get-mspace *AcadDoc*))
                 )
               (vla-get-modelspace *AcadDoc*)
               (vla-get-paperspace *AcadDoc*)
             )
          Pt (cond ((vl-consp Pt) (vlax-3d-point Pt))
                   ((eq (type Pt) 'variant) Pt)
             )
    )
    (vla-put-lock (vlax-ename->vla-object (tblobjname "layer" (getvar 'clayer))) :vlax-false)
    (setq o (vla-addMText s Pt Wd (vl-princ-to-string Str)))
    (and Lay (tblsearch "layer" Lay) (vla-put-layer o Lay))
    (cond ((vl-position Jus '(1 2 3 4 5 6 7 8 9))
           (vla-put-AttachmentPoint o Jus)
           (vla-put-InsertionPoint o Pt)
          )
    )
    o
  )




;;; Entsel or NEntsel with options
;;; #Nested - Entsel or Nentsel (T for Nentsel, nil for Entsel)
;;; #Message - Selection message (if nil, "\nSelect object: " is used)
;;; #FilterList - DXF ssget style filtering (nil if not required)
;;;               "V" as first item in list to convert object to VLA-OBJECT (must be in list if no DXF filtering)
;;;               "L" as first item in list to ignore locked layers (must be in list if no DXF filtering)
;;; #Keywords - Keywords to match instead of object selection (nil if not required)
;;; Example: (AT:Entsel nil "\nSelect MText not on 0 layer [Settings]: " '("LV" (0 . "MTEXT")(8 . "~0")) "Settings")
;;; Example: (AT:Entsel T "\nSelect object [Settings]: " '("LV") "Settings")
;;; Alan J. Thompson, 04.16.09
;;; Updated: Alan J. Thompson, 06.04.09 (changed filter coding to work as ssget style dxf filtering)
;;; Updated: Alan J. Thompson, 09.07.09 (added option to ignore locked layers and convert object to VLA-OBJECT
;;; Updated: Alan J. Thompson, 09.18.09 (fixed 'missed pick' alert)
  (defun AT:Entsel (#Nested #Message #FilterList #Keywords / #Count #Message #Choice #Ent
                    #VLA&Locked #FilterList
                   )
    (vl-load-com)
    (setvar "errno" 0)
    (setq #Count 0)
    ;; fix message
    (or #Message (setq #Message "\nSelect object: "))
    ;; set entsel/nentsel
    (if #Nested
      (setq #Choice nentsel)
      (setq #Choice entsel)
    ) ;_ if
    ;; check if option to convert to vla-object or ignore locked layers in #FilterList variable
    (and (vl-consp #FilterList)
         (eq (type (car #FilterList)) 'STR)
         (setq #VLA&Locked (car #FilterList)
               #FilterList (cdr #FilterList)
         ) ;_ setq
    ) ;_ and
    ;; select object
    (while (and (not #Ent) (/= (getvar "errno") 52))
      ;; if keywords
      (and #Keywords (initget #Keywords))
      (cond
        ((setq #Ent (#Choice #Message))
         ;; if ignore locked layers
         (and
           #VLA&Locked
           (vl-consp #Ent)
           (wcmatch (strcase #VLA&Locked) "*L*")
           (not (zerop (cdr (assoc 70
                                   (entget (tblobjname "layer" (cdr (assoc 8 (entget (car #Ent))))) ;_ tblobjname
                                   ) ;_ entget
                            ) ;_ assoc
                       ) ;_ cdr
                ) ;_ zerop
           ) ;_ not
           (setq #Ent nil
                 #Flag T
           ) ;_ setq
         ) ;_ and
         ;; #FilterList check
         (if (and #FilterList (vl-consp #Ent))
           ;; process filtering from #FilterList
           (or
             (not
               (member
                 nil
                 (mapcar '(lambda (x)
                            (wcmatch
                              (strcase (vl-princ-to-string (cdr (assoc (car x) (entget (car #Ent))))) ;_ vl-princ-to-string
                              ) ;_ strcase
                              (strcase (vl-princ-to-string (cdr x)))
                            ) ;_ wcmatch
                          ) ;_ lambda
                         #FilterList
                 ) ;_ mapcar
               ) ;_ member
             ) ;_ not
             (setq #Ent nil
                   #Flag T
             ) ;_ setq
           ) ;_ or
         ) ;_ if
        )
      ) ;_ cond
      (and (or (= (getvar "errno") 7) #Flag)
           (/= (getvar "errno") 52)
           (not #Ent)
           (setq #Count (1+ #Count))
           (prompt (strcat "\nNope, keep trying!  " (itoa #Count) " missed pick(s).") ;_ strcat
           ) ;_ prompt
      ) ;_ and
    ) ;_ while
    (if (and (vl-consp #Ent) #VLA&Locked (wcmatch (strcase #VLA&Locked) "*V*")) ;_ and
      (vlax-ename->vla-object (car #Ent))
      #Ent
    ) ;_ if
  ) ;_ defun



 ;list select dialog
 ;create a temp DCL multi-select list dialog from provided list
 ;value is returned in list form, DCL file is deleted when finished
 ;example: (setq the_list (AT:listselect "This is my list title" "Select items to make a list" "25" "30" "true" (list "object 1" "object 2" "object 3"))
 ;if mytitle is longer than defined width, the width will be ignored and it will fit to title string
 ;if mylabel is longer than defined width, mylabel will be truncated
 ;myheight and mywidth must be strings, not numbers
 ;mymultiselect must either be "true" or "false" (true for multi, false for single)
 ;created by: alan thompson, 9.23.08
 ;some coding borrowed from http://www.jefferypsanders.com (thanks for the DCL examples)

  (defun AT:ListSelect (mytitle ;title for dialog box
                        mylabel ;label right above list box
                        myheight ;height of dialog box !!*MUST BE STRING*!!
                        mywidth ;width of dialog box !!*MUST BE STRING*!!
                        mymultiselect ;"true" for multiselect, "false" for single select
                        mylist ;list to display in list box
                        / retlist readlist count item savevars fn fo valuestr dcl_id
                       )
    (defun saveVars (/ readlist count item)
      (setq retList (list))
      (setq readlist (get_tile "mylist"))
      (setq count 1)
      (while (setq item (read readlist))
        (setq retlist (append retList (list (nth item myList))))
        (while
          (and
            (/= " " (substr readlist count 1))
            (/= "" (substr readlist count 1))
          )
           (setq count (1+ count))
        )
        (setq readlist (substr readlist count))
      )
    ) ;defun
    (setq fn (vl-filename-mktemp "" "" ".dcl"))
    (setq fo (open fn "w"))
    (setq valuestr (strcat "value = \"" mytitle "\";"))
    (write-line (strcat "list_select : dialog {
            label = \"" mytitle "\";") fo)
    (write-line
      (strcat
        "          : column {
            : row {
              : boxed_column {
               : list_box {
                  label =\"" mylabel
        "\";
                  key = \"mylist\";
                  allow_accept = true;
                  height = " myheight ";
                  width = " mywidth ";
                  multiple_select = " mymultiselect
        ";
                  fixed_width_font = false;
                  value = \"0\";
                }
              }
            }
            : row {
              : boxed_row {
                : button {
                  key = \"accept\";
                  label = \" Okay \";
                  is_default = true;
                }
                : button {
                  key = \"cancel\";
                  label = \" Cancel \";
                  is_default = false;
                  is_cancel = true;
                }
              }
            }
          }
}"     )
      fo
    )
    (close fo)
    (setq dcl_id (load_dialog fn))
    (new_dialog "list_select" dcl_id)
    (start_list "mylist" 3)
    (mapcar 'add_list myList)
    (end_list)
    (action_tile "cancel" "(setq ddiag 1)(done_dialog)")
    (action_tile "accept" "(setq ddiag 2)(saveVars)(done_dialog)")
    (start_dialog)
    (if (= ddiag 1)
      (setq retlist nil)
    )
    (unload_dialog dcl_id)
    (vl-file-delete fn)
    retlist
  ) ;defun





  ;;  StripFormat as taken (with permission) from the following:
  ;;  StripMtext Version 5.0b for AutoCAD 2000 and above
  ;;  Copyright© Steve Doman and Joe Burke 2010
  ;; Location: http://www.theswamp.org/index.php?topic=31584.0
  ;; Arguments:
  ;; str - an mtext string.
  ;; formats - a list of format code strings or a string.
  ;; Format code arguments are not case sensitive.
  ;; Examples:
  ;; Remove Font, Overline and Underline formatting.
  ;; (StripFormat <mtext string> (list "f" "O" "U"))
  ;; Or a quoted list:
  ;; (StripFormat <mtext string> '("f" "O" "U"))
  ;; Or a string:
  ;; (StripFormat <mtext string> "fOU")
  ;; Remove all formatting except Overline and Underline.
  ;; (StripFormat <mtext string> (list "*" "^O" "^U"))
  ;; Or a quoted list:
  ;; (StripFormat <mtext string> '("*" "^O" "^U"))
  ;; Or a string:
  ;; (StripFormat <mtext string> "*^O^U")
  ;; Available codes:
  ;; A (^A) - Alignment
  ;; B (^B) - taBs
  ;; C (^C) - Color
  ;; F (^F) - Font
  ;; H (^H) - Height
  ;; L (^L) - Linefeed (newline, line break, carriage return)
  ;; O (^O) - Overline
  ;; Q (^Q) - obliQuing
  ;; P (^P) - Paragraph (embedded justification, line spacing and indents)
  ;; S (^S) - Stacking
  ;; T (^T) - Tracking
  ;; U (^U) - Underline
  ;; W (^W) - Width
  ;; ~ (^~) - non-breaking space
  ;; * - all formats
  (defun CV:StripFormat (str formats / FormatsToList text slashflag lbrace rbrace RE:Replace
                         RE:Execute Alignment Tab Color Font Height Linefeed Overline Paragraph
                         Oblique Stacking Tracking Underline Width Braces HardSpace
                        )
    ;; Argument: either a list of strings or a string.
    ;; Given a list, ensure formats are uppercase.
    ;; Given a formats string, convert it to a list of uppercase strings.
    ;; Examples: (FormatsToList "fOU") > ("F" "O" "U")
    ;;           (FormatsToList "f^OU") > ("F" "^O" "U")
    (defun FormatsToList (arg / lst)
      (cond ((= (type arg) 'LIST) (mapcar 'strcase arg))
            ((= (type arg) 'STR)
             (while (not (eq "" (substr arg 1)))
               (if (eq "^" (substr arg 1 1))
                 (setq lst (cons (strcat "^" (substr arg 2 1)) lst)
                       arg (substr arg 3)
                 )
                 (setq lst (cons (substr arg 1 1) lst)
                       arg (substr arg 2)
                 )
               )
             )
             (mapcar 'strcase (reverse lst))
            )
      )
    ) ; end FormatsToList  
    (setq formats (FormatsToList formats))
    ;; Access the RegExp object from the blackboard.
    ;; Thanks to Steve for this idea.
    (or (vl-bb-ref '*REX*) (vl-bb-set '*REX* (vlax-create-object "VBScript.RegExp")))
    (defun RE:Replace (newstr pat string)
      (vlax-put (vl-bb-ref '*REX*) 'Pattern pat)
      (vlax-put (vl-bb-ref '*REX*) 'Global actrue)
      (vlax-put (vl-bb-ref '*REX*) 'IgnoreCase acfalse)
      (vlax-invoke (vl-bb-ref '*REX*) 'Replace string newstr)
    ) ;end
    (defun RE:Execute (pat string / result match idx lst)
      (vlax-put (vl-bb-ref '*REX*) 'Pattern pat)
      (vlax-put (vl-bb-ref '*REX*) 'Global actrue)
      (vlax-put (vl-bb-ref '*REX*) 'IgnoreCase acfalse)
      (setq result (vlax-invoke (vl-bb-ref '*REX*) 'Execute string))
      (vlax-for x result
        (setq match (vlax-get x 'Value)
              idx   (vlax-get x 'FirstIndex)
              ;; position within string - zero based - first position is zero
              lst   (cons (list match idx) lst)
        )
      )
      lst
    ) ;end
    ;; Replace linefeeds using this format "\n" with the AutoCAD
    ;; standard format "\P". The "\n" format occurs when text is
    ;; copied to ACAD from some other application.
    (setq str (RE:Replace "\\P" "\\n" str))
;;;;; Start remove formatting sub-functions ;;;;;
    ;; A format
    (defun Alignment (str) (RE:Replace "" "\\\\A[012];" str))
    ;; B format (tabs)
    (defun Tab (str / lst origstr tempstr)
      (setq lst (RE:Execute "\\\\P\\t|[0-9]+;\\t" str))
      (foreach x lst
        (setq origstr (car x)
              tempstr (RE:Replace "" "\\t" origstr)
              str     (vl-string-subst tempstr origstr str)
        )
      )
      (RE:Replace " " "\\t" str)
    )
    ;; C format
    (defun Color (str)
      ;; True color and color book integers are preceded
      ;; by a lower case "c". Standard colors use upper case "C".
      (RE:Replace "" "\\\\[Cc][0-9]?[.]?[0-9]+;" str)
    )
    ;; F format
    (defun Font (str) (RE:Replace "" "\\\\[Ff].*?;" str))
    ;; H format
    (defun Height (str)
      (RE:Replace "" "\\\\H[0-9]?[.]?[0-9]+x;" str)
      ;; This also works, but it's not as clear as the above.
      ;; (RE:Replace "" "\\\\H\\d\\.?\\d*x;" str)
    )
    ;; L format
    ;; Leading linefeeds are not converted to spaces.
    (defun Linefeed (str / teststr)
      ;; Remove formatting from test string other than linefeeds.
      ;; Seems there's no need to check for stacking
      ;; because a linefeed will always come before stack formatting.
      (setq teststr (Alignment str)
            teststr (Color teststr)
            teststr (Font teststr)
            teststr (Height teststr)
            teststr (Overline teststr)
            teststr (Paragraph teststr)
            teststr (Oblique teststr)
            teststr (Tracking teststr)
            teststr (Underline teststr)
            teststr (Width teststr)
            teststr (Braces teststr)
      )
      ;; Remove leading linefeeds.
      (while (eq "\\P" (substr teststr 1 2))
        (setq teststr (substr teststr 3)
              str     (vl-string-subst "" "\\P" str)
        )
      )
      (RE:Replace " " " \\\\P|\\\\P |\\\\P" str)
    )
    ;; O format
    (defun Overline (str) (RE:Replace "" "\\\\[Oo]" str))
    ;; This option is effectively the same as the Remove Formatting >
    ;; Remove Paragraph Formatting option avaiable in the 2008 Mtext editor.
    (defun Paragraph (str) (RE:Replace "" "\\\\p.*?;" str))
    ;; Q format - numeric value may be negative.
    (defun Oblique (str)
      ;; Any real number including negative values.
      (RE:Replace "" "\\\\Q[-]?[0-9]*?[.]?[0-9]+;" str)
    )
    ;; S format
    (defun Stacking (str / lst tempstr pos origstr teststr testpos numcheck)
      (setq lst (RE:Execute "\\\\S(.*?)(\\;)" str))
      (foreach x lst
        (setq tempstr (car x)
              pos     (cadr x)
              origstr tempstr
        )
        ;; Remove formatting from test string other than stacking.
        (setq teststr (Alignment str)
              teststr (Color teststr)
              teststr (Font teststr)
              teststr (Height teststr)
              teststr (Linefeed teststr)
              teststr (Overline teststr)
              teststr (Paragraph teststr)
              teststr (Oblique teststr)
              teststr (Tracking teststr)
              teststr (Underline teststr)
              teststr (Width teststr)
              teststr (Braces teststr)
        )
        ;; Remove all "{" characters if present. Added JB 2/1/2010.
        (setq teststr (RE:Replace "" "[{]" teststr))
        ;; Get the stacked position within test string.
        (setq testpos (cadar (RE:Execute "\\\\S(.*?)(\\;)" teststr)))
        ;; Avoid an error with substr if testpos is zero.
        ;; A space should not be added given a stacked
        ;; fraction string which is simply like this 1/2" anyway.
        (if (/= 0 testpos)
          (setq numcheck (substr teststr testpos 1))
        )
        ;; Check whether the character before a stacked string/fraction
        ;; is a number. Add a space if it is.
        (if (and numcheck (<= 48 (ascii numcheck) 57))
          (setq tempstr (RE:Replace " " "\\\\S" tempstr))
          (setq tempstr (RE:Replace "" "\\\\S" tempstr))
        )
        (setq tempstr (RE:Replace "/" "
  • " tempstr)
             tempstr (RE:Replace "" "[;]" tempstr)
              tempstr (RE:Replace "" "\\\\A(.*?)[;]" tempstr)
              tempstr (RE:Replace "" "\\^" tempstr)
              str     (vl-string-subst tempstr origstr str pos)
        )
      )
      str
    )
    ;; T format
    (defun Tracking (str) (RE:Replace "" "\\\\T[0-9]?[.]?[0-9]+;" str))
    ;; U format
    (defun Underline (str) (RE:Replace "" "\\\\[Ll]" str))
    ;; W format
    (defun Width (str) (RE:Replace "" "\\\\W[0-9]?[.]?[0-9]+;" str))
    ;; ~ format
    ;; In 2008 a hard space includes font formatting.
    ;; In 2004 it does not, simply this \\~.
    (defun HardSpace (str) (RE:Replace " " "{\\\\[Ff](.*?)\\\\~}|\\\\~" str))
    ;; Remove curly braces. Called after other formatting is removed.
    (defun Braces (str / lst origstr tempstr len teststr)
      (setq lst (RE:Execute "{[^\\\\]+}" str))
      (foreach x lst
        (setq origstr (car x)
              tempstr (RE:Replace "" "[{}]" origstr)
              str     (vl-string-subst tempstr origstr str)
        )
      )
      ;; Added JB 12/20/2009
      ;; Last ditch attempt at remove braces from start and end of string.
      (setq len (strlen str))
      (if (and (= 123 (ascii (substr str 1 1)))
               (= 125 (ascii (substr str len 1)))
               (setq teststr (substr str 2))
               (setq teststr (substr teststr 1 (1- (strlen teststr))))
               (not (vl-string-search "{" teststr))
               (not (vl-string-search "}" teststr))
          )
        (setq str teststr)
      )
      str
    )
;;;;; End remove formatting sub-functions ;;;;;
;;;;; Start primary function ;;;;;
    ;; Temporarily replace literal backslashes with a unique string.
    ;; Literal backslashes are restored at end of function. By Steve Doman.
    (setq slashflag (strcat "<" (substr (rtos (getvar "CDATE") 2 8) 14) ">"))
    (setq text (RE:Replace slashflag "\\\\\\\\" str))
    ;; Temporarily replace literal left curly brace.
    (setq lbrace (strcat "<L" (substr (rtos (getvar "CDATE") 2 8) 14) ">"))
    (setq text (RE:Replace lbrace "\\\\{" text))
    ;; Temporarily replace literal right curly brace.
    (setq rbrace (strcat "<" (substr (rtos (getvar "CDATE") 2 8) 14) "R>"))
    (setq text (RE:Replace rbrace "\\\\}" text))
    (if (or (vl-position "A" formats)
            (and (vl-position "*" formats) (not (vl-position "^A" formats)))
        )
      (setq text (Alignment text))
    )
    (if (or (vl-position "B" formats)
            (and (vl-position "*" formats) (not (vl-position "^B" formats)))
        )
      (setq text (Tab text))
    )
    (if (or (vl-position "C" formats)
            (and (vl-position "*" formats) (not (vl-position "^C" formats)))
        )
      (setq text (Color text))
    )
    (if (or (vl-position "F" formats)
            (and (vl-position "*" formats) (not (vl-position "^F" formats)))
        )
      (setq text (Font text))
    )
    (if (or (vl-position "H" formats)
            (and (vl-position "*" formats) (not (vl-position "^H" formats)))
        )
      (setq text (Height text))
    )
    (if (or (vl-position "L" formats)
            (and (vl-position "*" formats) (not (vl-position "^L" formats)))
        )
      (setq text (Linefeed text))
    )
    (if (or (vl-position "O" formats)
            (and (vl-position "*" formats) (not (vl-position "^O" formats)))
        )
      (setq text (Overline text))
    )
    (if (or (vl-position "P" formats)
            (and (vl-position "*" formats) (not (vl-position "^P" formats)))
        )
      (setq text (Paragraph text))
    )
    (if (or (vl-position "Q" formats)
            (and (vl-position "*" formats) (not (vl-position "^Q" formats)))
        )
      (setq text (Oblique text))
    )
    (if (or (vl-position "S" formats)
            (and (vl-position "*" formats) (not (vl-position "^S" formats)))
        )
      (setq text (Stacking text))
    )
    (if (or (vl-position "T" formats)
            (and (vl-position "*" formats) (not (vl-position "^T" formats)))
        )
      (setq text (Tracking text))
    )
    (if (or (vl-position "U" formats)
            (and (vl-position "*" formats) (not (vl-position "^U" formats)))
        )
      (setq text (Underline text))
    )
    (if (or (vl-position "W" formats)
            (and (vl-position "*" formats) (not (vl-position "^W" formats)))
        )
      (setq text (Width text))
    )
    (if (or (vl-position "~" formats)
            (and (vl-position "*" formats) (not (vl-position "^~" formats)))
        )
      (setq text (HardSpace text))
    )
    (setq text (Braces (RE:Replace "\\\\" slashflag text))
          text (RE:Replace "\\{" lbrace text)
          text (RE:Replace "\\}" rbrace text)
    )
    text
  ) ; end StripFormat




  (defun _sel (/ o)
    (if (setq o
               (AT:Entsel t
                          (strcat "\nSelect text object to "
                                  *AV:Fnc*
                                  " or "
                                  (if final
                                    "[Add/Divide/Multiply/Subtract/Type]: "
                                    "[Type]: "
                                  )
                          )
                          '("V" (0 . "AECC_COGO_POINT,AECC_POINT,ATTDEF,ATTRIB,MULTILEADER,MTEXT,TEXT"))
                          (if final
                            "Add Divide Multiply Subtract Type"
                            "Type"
                          )
               )
        )
      (cond ((eq o "Add") (setq f "+") (setq *AV:Fnc* "Add") (_sel))
            ((eq o "Divide") (setq f "/") (setq *AV:Fnc* "Divide") (_sel))
            ((eq o "Multiply") (setq f "*") (setq *AV:Fnc* "Multiply") (_sel))
            ((eq o "Subtract") (setq f "-") (setq *AV:Fnc* "Subtract") (_sel))
            ((eq o "Type") (initget 6) (setq o (getreal (strcat "\nNumber to " *AV:Fnc* ": "))))
            (T o)
      )
    )
  )




;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;; MAIN ROUTINE ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  (vl-load-com)


  (or *AV:Fnc* (setq *AV:Fnc* "Add"))
  (and (setq dZin (getvar 'dimzin)) (setvar 'dimzin 0))

  (initget 0 "Add Divide Multiply Subtract")
  (setq
    *AV:Fnc* (cond ((getkword
                      (strcat "\nChoose function [Add/Divide/Multiply/Subtract] <" *AV:Fnc* ">: ")
                    )
                   )
                   (*AV:Fnc*)
             )
  )
  (setq f (cond ((eq *AV:Fnc* "Add") "+")
                ((eq *AV:Fnc* "Divide") "/")
                ((eq *AV:Fnc* "Multiply") "*")
                ((eq *AV:Fnc* "Subtract") "-")
          )
        i 0.
  )
  (while (setq obj (_sel))
    (if
      (cond
        ;; real value
        ((eq (type obj) 'REAL) (setq num obj))
        ;; LDD point
        ((and (eq (vla-get-objectname obj) "AeccDbPoint")
              (not (vl-catch-all-error-p
                     (setq num (vl-catch-all-apply
                                 (function
                                   (lambda () (cadddr (assoc 11 (entget (vlax-vla-object->ename obj)))))
                                 )
                               )
                     )
                   )
              )
         )
         num
        )
        ;; C3D point
        ((and
           (eq (vla-get-objectname obj) "AeccDbCogoPoint")
           (not (vl-catch-all-error-p
                  (setq num (vl-catch-all-apply (function vlax-get-property) (list obj 'Elevation)))
                )
           )
         )
         (setq num (car (AT:ExtractNumbers num)))
        )
        ;; attribute, multileader, mtext, text
        (T
         ;;(T (setq num (apply (function (eval (read f))) (AT:ExtractNumbers (vla-get-textstring obj)))))
         ;;(T (setq num (car (AT:ExtractNumbers (vla-get-textstring obj)))))
         ;|
         (setq num ((lambda (n)
                      (foreach x (AT:ExtractNumbers (StripFormat (vla-get-textstring obj) "*"))
                        (setq n ((eval (read f)) x n))
                      )
                    )
                     0.
                   )
         )
         |;

         (if
           (> (length (setq num (AT:ExtractNumbers (CV:StripFormat (vla-get-textstring obj) "*"))))
              1
           )
            (if (setq num (AT:ListSelect
                            (strcat "Multiple numbers to: " *AV:Fnc*)
                            "Choose numbers:"
                            "10"
                            "5"
                            "true"
                            (mapcar (function vl-princ-to-string) num)
                          )
                )
              (setq i   (+ i (1- (length num)))
                    num ((lambda (n)
                           (foreach x (mapcar (function atof) num)
                             (setq n ((eval (read f)) x n))
                           )
                         )
                          0.
                        )
              )
            )
            (setq num (car num))
         )

        )
      )
       (if final
         (progn (setq final ((eval (read f)) final num)
                      nStr  (strcat nStr " " f " " (vl-princ-to-string num))
                      i     (1+ i)
                )
                (princ (strcat nStr " = " (vl-princ-to-string final)))
         )
         (progn (setq final num
                      nStr  (strcat "\n" (vl-princ-to-string num))
                      i     (1+ i)
                )
                (princ (strcat nStr " " f))
         )
       )
       (princ "\nValue does not contain number!")
    )
  )
  (and nStr
       (> i 1)
       (if (and (eq *AV:Fnc* "Add") (not (wcmatch nStr "*/*,*`**,*-*")))
         (setq pt (initget 0 "Average")
               pt (getpoint (strcat nStr
                                    " = "
                                    (vl-princ-to-string final)
                                    "\nSpecify text placement or [Average]: "
                            )
                  )
         )
         (setq
           pt (getpoint (strcat nStr " = " (vl-princ-to-string final) "\nSpecify text placement: "))
         )
       )
       (if (vl-consp pt)
         (AT:MText (trans pt 1 0) (rtos final) nil nil 5)
         (if (setq pt (getpoint (strcat nStr
                                        " = "
                                        (vl-princ-to-string final)
                                        " / "
                                        (vl-princ-to-string (fix i))
                                        " = "
                                        (vl-princ-to-string (/ final i))
                                        "\nSpecify text placement point: "
                                )
                      )
             )
           (AT:MText (trans pt 1 0) (rtos (/ final i)) nil nil 5)
         )
       )
  )
  (*error* nil)
  (princ)
)



_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Feb 20, 2012, 03:55 PM

                  
John Doe a scris:

@diagodose2009: nu e chiar programul meu, tin minte ce-am scris in el. Ce as avea de spus:
Aplicatia numeroteaza punctele unui contur. Nu am verificat, probabil ca merge dar punctele par sa fie puse doar la un offset, unele se vor suprapune cu conturul iar daca sunt mai dese se vor suprapune unele cu altele.
Nu am observat sa puna nici distantele dintre puncte, oare nu ar fi bine? Si nici tabelul de coordonate nu-l scoate, nu ar fi misto sa-l puna in desen ca tabel sau intr-un fisier extern, de exemplu CSV ca sa te poti juca cu el in Excel ?
Si ar mai fi ceva: presupun ca conturul este o polilinie. Functie de o variabila (PLINEGEN, cred - nu mai stiu sigur), primul si ultimul punct al unei polilinii pot sa se repete chiar daca polilinia este inchisa, ai tratat aspectul asta?
Oricum, e ceva; si asa, cate putin, se poate construi un set de aplicatii utile usor de implementat in mediul CAD.


De fapt, era un programel scris de mine, nu de John Doe.
Am luat criticile lui John Doe ca sugestii si intre timp l-am mai modificat, iar acum pune si distantele dintre puncte (cotarile) si scoate si inventarul de coordonate. L-am modificat sa lucreze doar cu polilinii inchise, ca sa nu ia de 2 ori vertecsii extremi. Mai am putin de lucru la ea (cum ar fi numerotarea corecta a conturului, chiar daca a fost desenat in sensul invers al acelor de ceasornic) si mai da erori la polilinii cu foarte multi vertecsi (peste 100), dar in 99% din cazuri functioneaza corect. Oricine se pricepe la LISP poate sa mai imbuntateasca programul.
Ceea ce am vrut de la acest program a fost sa inlocuiesc cu succes cele 3 comenzi din TopoLT: autopct, dimpl si arr2 si am reusit intr-o oarecare masura.
Am vazut ca programul anterior a fost descarcat de un numar destul de mare de oameni (peste 60), asa ca link-ul de download pentru cel nou este:
http://www.fileshare.ro/47184568329.7

Modificat de zamfy (20-02-2012 13:57:40)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: bianca.cad din Feb 20, 2012, 06:54 PM

                  Mersi.

_______________________________________
www.facebook.com/dMine.poezii/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Feb 20, 2012, 08:58 PM

                  @zamfy: felicitari. Limbajul DCL te intereseaza?


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Feb 21, 2012, 10:43 AM

                  Pentru cei care au probleme cu link-ul de pe fileshare, acesta este un link de pe rapidshare:
https://rapidshare.com/files/2749746465 ... contur.lsp.
@John Doe, sigur ca ma intereseaza limbajul DCL, dar deocamdata am vrut sa stiu limbajul LISP la un nivel cat de cat mediu si apoi o sa invat si DCL-ul. Oricum, pentru ferestre de dialog este foarte bun si OpenDCL (cu toate ca mai are unele bug-uri).
Oricum, ca interfata, mie imi place foarte mult linia de comanda, mi se pare mai usor sa apas o tasta decat sa caut cu mouse-ul butoane.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Feb 21, 2012, 06:32 PM

                  Pentru scripturi micute, cu putine date de intrare e mult mai comod cum spui tu, dar daca ajungi la aplicatii mai complexe casetele te ajuta enorm, vezi cu ochii tai ce ai introdus sau nu.
Cauta pe Google "AfraLISP" , o sa gasesti printre altele si un manual DCL - numai in lb. engleza, dar e foarte explicit. Sau daca vrei doar manualul asta ti-l trimit eu pe mail.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Apr 08, 2012, 02:25 AM

                  As vrea sa stiu daca ar fi utila cuiva (in afara de mine) o aplicatie (tot in LISP...) care face fisierul CPXML pentru avizarea planurilor parcelare cf. ordinului 415, in baza planului si tabelului parcelar.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: raptor din Apr 08, 2012, 02:32 AM

                  Poi este utila doar ca nu toata lumea care face planuri parcelare foloseste tabel in X-cel cum ai tu definit ( de exemplu stiu pe cineva care a lucrat in word, sau in OpenOffice).
    Este o aplicatie utila , cel putin asa mi se pare mie din ce ai prezentat, dar util in momentul in care ai de lucrat mult cu planuri parcelare, si ai tarlale c multi proprietari.
    In orice caz , ai un LIKE de la mine 



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Apr 08, 2012, 01:09 PM

                  @raptor: Tabelul de unde isi ia datele aplicatia este exact anexa care se depune la OCPI, salvata in format CSV din Excel sau Open Office.

Ideea este ca nu toata lumea face neaparat planuri parcelare, dar cine totusi a facut a observat ca stai cateva ore ca sa faci un CPXML cu o suta de parcele cu "GenerareCP". Daca totusi sunt topografi interesati, o sa revin cu amanunte.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Atopor din Apr 09, 2012, 07:04 PM

                  John, eu ma folosesc de un tabel excell pentru a-mi genera anexele automat in Word, dar nu si CP-ul. Ma ajuti sa-l generez si pe acesta? Sau, daca fac CP-ul cum pot face baza de date in Excell, pentru ca apoi sa-mi generez anexele? Multumesc.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Apr 09, 2012, 11:37 PM

                  Si eu lucrez de multe ori cu Excel+Word, dar ca sa poti scrie un fisier CPXML valid ai nevoie de coordonatele punctelor parcelelor, si asta e cam complicat sa ti le generezi in Excel - mai repede faci CP-ul manual.
Eu am un program scris in LISP sub AutoCAD care isi ia datele dintr-ul Excel (Anexa 2 - adica tabelul care se preda la OCPI odata cu planul parcelar), gaseste fiecare parcela in plan si extrage coordonatele, scrie restul corpului de CP si gata fisierul. Sunt o gramada de algoritmi la care e mai usor sa gasesti solutia decat sa explici ce ai facut, nu stiu cum te-as putea ajuta.
Iti dau totusi o idee: deschide un fisier CPXML cu Notepad ca sa vezi ce structura are. Si daca nu te descurci, iti vând programul meu...  glumesc, depinde ce vrei tu sa faci: esti un pasionat dus cu pluta ca mine sau chiar ai mult de lucru si nu mai razbesti... ambele cazuri au solutia lor.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Mit din Apr 10, 2012, 01:12 AM

                  John, eu chiar nu te-nteleg de ce nu-ti vinzi softul.
Eu unul, cand aud de extravilan, ma ia cu mancarimi. Dar poate ca sunt colegi carora le place asta... Pune pretul. Spor la afaceri... "colaterale".



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Apr 10, 2012, 01:20 AM

                  Ba îl vând... e gata de ceva timp, mai dureaza putin testele si îi dau drumul. Pot spune de pe acum ca am facut cam 30 de planuri parcelare trimise la avizat si au fost bune toate CP-urile. Si dureaza vreo 5 minute pâna il faci... de curios, am incercat sa fac un CP manual, si mi-a luat vreo patru ore.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Iun 05, 2012, 09:08 PM

                  Revin cu un program pe care l-am postat mai demult, dar care, dupa ce l-am testat intens, mi-am dat seama ca nu functioneaza cum mi-as dori, asa ca l-am modificat de vreo 13 ori, pana ce l-am adus la functionalitatea pe care mi-am dorit-o.
Aici este programul:
http://www.fileshare.ro/65846426802
Acest program numeroteaza un contur inchis cu comanda OT si genereaza si inventarul de coordonate cu comanda INV. Detalii despre modificarile aduse programului le gasiti in comentariile din fisierul lisp.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Iun 05, 2012, 10:52 PM

                  Faina aplicatia. Am observat insa ca daca punctele sunt prea apropiate, textele se cam suprapun; iti dau o idee: calculeaza lungimea segmentelor de polilinie dintre punctele consecutive, si daca sunt prea mici scrie cate un punct in interior si unul in exteriorul conturului, succesiv. Va iesi mai bine.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Iun 12, 2012, 12:49 PM

                  Mai este loc de imbunatatiri. In viitorul apropiat, o sa il fac sa puna cotarile perpendicular pe contur acolo unde este distanta prea mica intre puncte si deja lucrez la functia de optimizare a pozitiei textelor (nu am implementat-o pana acum, deoarece comanda GT_UnClutter din GeoTools merge neasteptat de bine). Pana atunci, mai postez cateva utilitare pe care eu personal le folosesc zilnic sau le-am folosit la un moment dat mai jos.
Toate programele le copiati in editorul de text preferat si le salvati cu extensia .lsp.

Modificat de zamfy (12-06-2012 15:17:00)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Iun 12, 2012, 03:19 PM

                  Multumim, dar vezi ca primul script are zero bytes.

Primul dintre cele din postarea nemodificata.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Iun 12, 2012, 04:39 PM

                  Pune ax intre 2 polilinii deschise:

Code:

(defun c:ax (/ ent1 ent2 i len pt p1 ptlst)
 (vl-load-com)

 (if (and (setq ent1 (car (entsel "\nSelecteaza prima polilinie: ")))
 (wcmatch (cdr (assoc 0 (entget ent1))) "*POLYLINE"))
 (if (and (setq ent2 (car (entsel "\nSelecteaza a doua polilinie: ")))
 (wcmatch (cdr (assoc 0 (entget ent2))) "*POLYLINE"))
 (progn
 (command "area" "o" ent1)
  (setq l1 (getvar "perimeter"))
(setq div (/ (* l1 10) 100))
 (setq i -1 len (/ (vla-get-Length
 (vlax-ename->vla-object ent1)) div))
 (while (setq pt (vlax-curve-getPointatDist ent1 (* (setq i (1+ i)) len)))
 (setq p1 (vlax-curve-getClosestPointto ent2 pt t)
 ptlst (cons (polar pt (angle pt p1) (/ (distance pt p1) 2.)) ptlst)))
 (setq ptlst (apply 'append
 (mapcar
 (function
 (lambda (x)
 (list (car x) (cadr x)))) ptlst)))
 (vla-AddLightWeightPolyline
 (vla-get-ModelSpace
 (vla-get-ActiveDocument
 (vlax-get-acad-object)))
 (vlax-make-variant
 (vlax-safearray-fill
 (vlax-make-safearray
 vlax-VBDouble (cons 0 (1- (length ptlst)))) ptlst))))))

 (princ))

Ruleaza cu comanda ax.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Atopor din Iun 12, 2012, 05:04 PM

                  toate fisierele au 0 bytes. incearca pe alt site.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Iun 12, 2012, 06:06 PM

                  Acest program inchide rapid layere, selectand obiecte. Ruleaza cu comanda cl .

Code:

(defun c:cl ()
(setvar "CMDECHO" 0)
(if (not(setq startset(cadr(ssgetfirst))))    
        (setq startset(ssget)))
        (setq i -1
                filterlist nil)         ;need?
    (repeat(sslength startset)
        (setq i(1+ i))
        (setq ent(entget(ssname startset i)))
(setq lyr (cdr(assoc 8 ent)))
(setq clyr (getvar "CLAYER"))
(if (= lyr clyr)
(progn
(command "LAYER" "MAKE" "xtcnv" "C" "140" "" "")
(setvar "CLAYER" "xtcnv")
(command "layer" "off" (strcat lyr) "")
(setvar "CLAYER" lyr)
(command "laydel" "n" "xtcnv" "" "y")
)
)
(command "layer" "off" (strcat lyr) "")
)
(princ)
)




               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Iun 12, 2012, 06:08 PM

                  Acest program insereaza vertecsi intr-o polilinie (asemanatoare cu insvx din TopoLT, numai ca se repeta la infinit). Ruleaza cu comanda iv .

Code:

;---------------------------------------------------------------------------
; Modified by GLStephens to eliminate "Undo" "mark"! which should not be
; implemented within programs - user function only - use "Undo" "begin/end"
; and to modify the error routine so that it is local rather than over-
; writing the global routine.  Oct 2003
;---------------------------------------------------------------------------
;                 Modified by David Garrigues
;                          of the
;                         CADapult
;                http://home1.gte.net/davidgus
;                       E-mail
;                        Version ?.?
;                      October 19, 1997

;Objective - to add verticies to all polylines/splines except 3D polylines

;Summary of additions
;can do spline or fitted polylines
;can do splines
;keeps pline at original elevation

;Function and reasoning -
;To make it work with R14 and light weight polylines and the new variable PLINETYPE.  
;I also had to take into account what the plinetype setting was so that
;I also could change lines into polylines or lwpolylines.  I also added
;the capability to add verticies in plines where they are splined or fitted
;without turning them into 50,000 segments while still maintaining the
;spline or fit option. Works in 14 on all Polylines, LWPolylines, Splines, and Lines.
;Due the nature of the FIT option on a polyline I decided to ask the user if the wish to RE-FIT
;after the insertion of a new vertex.  While testing this I found areas and instances
;where I thought this might be benificial to the user. The original program performed a loop
;while that is nice I decided I liked it better if did not (just hit enter with your mouse
;button). I added error handlers that will set back the line the way it was after aproaching the
;error.  Last but not least I made sure that this will maintain all elevations as they are
;just for us CIVILized people


;***************************************************************************
;Original header
;  ADVERT.LSP    Add a Vertex   (c)1995, Steve Houghton
;revised 3/23/95 to ensure new vertex is at crosshairs
;thanks to Patrick Wheatley

;Inserts a vertex in a polyline.  If a line is selected, it offers to convert
;it to a polyline and then insert the vertex.
;Will report: At least one break point must be on polyline. if the end of
;a polyline is chosen
;***************************************************************************

(defun C:iv ( / *Error* POLYLINE POLYNAME PICKPOINT POLYDXF ENTTYPE FTSP ZPT
                    LASTENT NEWVERT OLDERR ANSWER)
                    (while


 (defun *Error* (msg)
  (while (> (getvar "CmdActive") 0) (command)) ; if command not ended, then end it

    ; now restore environment
    (setvar "blipmode" adv:blip)
    (setvar "cmdecho" adv:cmd)
    (setvar "menuecho" adv:echo)
    (setvar "orthomode" adv:ortho)
    (setvar "highlight" adv:highlt)
    (setvar "texteval" adv:txeval)
    (setvar "osmode" adv:snap)

  (princ msg)
  (princ)
 ) ; end defun error



;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
;
;  This section remmed out by GLS - reworked as local *Error*
;
;  
;
;  (setq OLDERR *error*) ;current error handling subroutine
;  (defun *error* (errmes)
;    (princ (strcat "\nExecution of ADVERT.LSP halted by the following error: " ERRMES))
;    (command "undo" "b");if this program fails or you cancel out of the program this will
;                        ;put the entity back to its original condition
;
;    (setvar "blipmode" blipmode)
;    (setvar "cmdecho" cmdecho)
;    (setvar "menuecho" menuecho)
;    (setvar "orthomode" orthomode)
;    (setvar "highlight" highlight)
;    (setvar "texteval" texteval)
;    (setvar "osmode" oldsnap)
;    
;    (setq *error* OLDERR)
;    (prin1) ;exit quitley
;  )
;XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX

; Initial section of Main code follows


  ; set ex sysvars to variables to later restore
  (setq adv:blip (getvar "blipmode"))
  (setq adv:cmd (getvar "cmdecho"))
  (setq adv:echo (getvar "menuecho"))
  (setq adv:ortho (getvar "orthomode"))
  (setq adv:highlt (getvar "highlight"))
  (setq adv:txeval (getvar "texteval"))
  (setq adv:snap (getvar "osmode"))

   ; set sysvars to values for this routine
   (setvar "OSMODE" 0)   ;osmode to avoid conflicts with the osnap
   (setvar "BLIPMODE" 0) ;so no nasty blips hanging around
   (setvar "HIGHLIGHT" 0);so it runs faster on BIG polylines
   (setvar "CMDECHO" 0)  ;so you don't see the baggage

 (command "._Undo" "_End") ; end any previously active group
 (command "._Undo" "_Begin") ; starts new undo group for this command - Advert

; begin main program

   (princ "\nAlege o polilinie, linie sau spline ca sa adaugi vertexul: ")

(setq POLYLINE  (entsel)                     ;asks you to select the entity
      POLYNAME  (car POLYLINE)               ;gets the handle name
      PICKPOINT (osnap (cadr POLYLINE) "nea");using the osnap we get a point on the entity
      POLYDXF   (entget POLYNAME)            ;get association list
      ENTTYPE   (cdr (assoc 0 POLYDXF))      ;finding out what kind of entity it is
      FTSP      (cdr (assoc '70 polydxf))    ;is it fitted or splined
      ZPT       (CADDR PICKPOINT)            ;elevation point "Z" only
 )  
(cond
  ((or (= ftsp 2)(= ftsp 4))
    (fitit)
  )
  ((= enttype "LWPOLYLINE")
     ;vertex insert routine for lwpolylines
      (command "break" POLYNAME PICKPOINT PICKPOINT)
      ;lwplolylines do not change handle names so there is no need to entmake
      (command "PEDIT" polyname "join" (entlast) "" "x")
      ;moving the  vertex is easy on a line taht has not been splined or fitted
      ;because you can always depend on the point not moving.  When we are dealing
      ;with a spine or a fit the vertex could move slightly. This slight movement forces
      ;me helpless to try and find that point then aid the user in trying to stretch it.
      ;I could write more code and find the point but all I would be doing is the same as
      ;you just picking on the entity and using your grips to place the new vertex where
      ;you want it to go.
      (setvar "osmode" adv:snap)
      (princ "\nMutam vertexul: ")
      (setq NEWVERT (osnap pickpoint "int,near"))
      (COMMAND "STRETCH" "C" NEWVERT NEWVERT "" PICKPOINT pause)
  )
  ((= enttype "POLYLINE")
      (entmake (list '(0 . "POINT") (cons 10 (getvar "VSMIN"))))
      (setq LASTENT (entlast))
      ;*breaks polyline at pickpoint
      (command "break" POLYNAME PICKPOINT PICKPOINT)
      ;*(entnext lastent) will be the next polyline created after lastent
      ;*(entlast) will be the other polyline created
      ;*so now join the two and we have a polyline with the new vertex
      ;*inserted
         (setq last1 (entnext lastent))
     (command "PEDIT" last1 "join" (entlast) last1 "" x)
      ;*get rid of temporary point
      (entdel LASTENT)
      (princ "\nMove new vertex: ")
      (setq NEWVERT (osnap pickpoint "int,near"))
      (COMMAND "STRETCH" "C" NEWVERT NEWVERT "" PICKPOINT pause)
      (if (= (getvar "plinetype") 0);on these the polyline will be set back to
         (progn                     ;0 so I have to move them back to their original
                                    ;elevation.
           (setq topt (LIST 0.0 0.0 ZPT));create a list and still allow it to be evaluated
                                         ;thank you Tony Tanzillio
           (command "move" "p" "" "0,0,0" topt)
          )
      )
  )
  ((= enttype "SPLINE")
     (itsaspl)
  )
  ((= enttype "LINE")
     (itsaline)
  )
);end cond
;end main program

    ; now restore environment
    (setvar "blipmode" adv:blip)
    (setvar "cmdecho" adv:cmd)
    (setvar "menuecho" adv:echo)
    (setvar "orthomode" adv:ortho)
    (setvar "highlight" adv:highlt)
    (setvar "texteval" adv:txeval)
    (setvar "osmode" adv:snap)

  (command "._Undo" "_End") ; to end undo group for this routine - Advert

  (prin1);exiting quietly
);end advert.lsp

  ;*vertext insert routine for old polylines
     

   ;insertvert
;begin special functions*****************************************************
(defun fitit ()
  (command "pedit" polyname "decurve" "x" )
  (if (>= (getvar "plinetype") 1)              ;if1
     (progn                                    ;bprog1
       (command "break" POLYNAME PICKPOINT PICKPOINT)
       (command "PEDIT" polyname "join" (entlast) "" "x")
       (if (= ftsp 2)                          ;bif2
         (progn                                ;bprog2
           (initget "Yes No");allows the user to typ in y ye yes n or no for an answer
           (setq ANSWER (getkword "\nDo you wish to RE-FIT after ddinserting vertex <Y>? "))
           (if (or(= ANSWER nil)(= ANSWER "Yes"))   ;bif3
             (command "pedit" polyname "fit" "x")
           )                                        ;eif3
         )                                     ;eprog2
         (command "PEDIT" polyname "spline" "x")
       )                                       ;eif2
     )                                         ;eprogn1

     (progn                                    ;then part of if1 bprog4
      (entmake (list '(0 . "POINT") (cons 10 (getvar "VSMIN"))))
      (setq LASTENT (entlast))
      (command "break" POLYNAME PICKPOINT PICKPOINT)
      (command "PEDIT" (entnext lastent) "join" (entlast) "" x)
      (entdel LASTENT)
      (if (= ftsp 2)                           ;bif4
        (progn                                 ;bprog5
           (initget "Yes No")
           (setq ANSWER (getkword "\nDo you wish to REFIT after inserting a vertex <Y>? "))
           (if (or (= ANSWER nil)(= ANSWER "Yes"))     ;bif5
             (command "pedit" (entlast) "fit" "x")
            )                                          ;eif5
        )                                       ;eprog5
        (command "PEDIT" (entlast) "spline" "x")
       )                                        ;eif4
      )                                         ;eprog4
  )                                             ;eif1
)                                               ;defun


   
   

 

  (defun itsaspl ();we need to add vertexes to splines to ya know
     (command "splinedit" polyname "r" "add" pickpoint "" "" "")
  )

  (defun itsaline ();hey lets give the user a chance to make a line into a pline
      (initget "Yes No")
      (setq ANSWER (getkword "\nDo you wish to turn this line to a polyline <Y>? "))
      (if (or (= ANSWER nil)(= ANSWER "Yes"))
        (progn
          ;*turn current line into a polyline
          (command "pedit" POLYNAME "y" "")
          (if (=(getvar "plinetype")0)
            (insertvert)               ;if the plinetype is 0 then lets do it this way
            (progn                     otehrwise do it this way because
              (setq polyname (entlast));the handle name did change to
                (vertlw)               ;accomodate for LWplines
            );progn
          );if
        );progn
      );if
  );defun

;two routines that everyone should have so you can do what I did at the begining of this routine
; Saves the SETVARs specified in the mode list into the global MLST.
(defun MODES (a)
   (setq MLST '())
   (repeat (length a)
      (setq MLST (append MLST (list (list (car a) (getvar (car a))))))
      (setq a (cdr a)))
)
;
; Restores the SETVARs specified in the global MLST.
(defun MODER ()
   (repeat (length MLST)
      (setvar (caar MLST) (cadar MLST))
      (setq MLST (cdr MLST))
   )
 (princ "\nDone.                                                    ")
 (princ)
)
)
(Defun C:AdV () (C:advert))

;end special functions********************************************************

(prin1);makes the loading look clean




               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Iun 12, 2012, 06:09 PM

                  Acest program uneste 2 polilinii deschise, Este asemanator cu comanda "join", numai ca nu este necesar ca poliliniile sa aiba un punct comun, ci pot sa fie si la distanta una fata de cealalta. Utila atunci cand faci limita unui model 3D. Ruleaza cu comanda jl .

Code:

(defun c:jl (/ l1 l2 fz)
(setvar "CMDECHO" 0)
  (setvar "PEDITACCEPT" 1)
   (if
    (and
      (setq l1(entsel "\nSelecteaza prima polilinie: "))
      (setq l2(entsel "\nSelecteaza cea de-a doua polilinie: "))
      (setq fz(distance(cadr l1)(cadr l2)))
      (vl-cmdf "_.pedit" "_m" (car l1)(car l2) "" "_j" "_j" "_b" fz "")
    ); end and
    (c:jl)
    ); end if
  (princ)
  ); end c:jl




               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Iun 12, 2012, 06:11 PM

                  Acest program schimba rotatia unui text, alegand unghiul dintre 2 puncte. Ruleaza cu comanda at .

Code:

(defun c:at()
(setvar "CMDECHO" 0)
(setq string (car (entsel "\nSelecteaza textul pe care doriti sa il modificati: ")))
(setq en (entget string))
(command "osnap" "endpoint")
(setq p1 (getpoint "\nAlegeti primul punct: "))
(setq p2 (getpoint "\nAlegeti cel de-al doilea punct:"))
(setq unghi (angle p1 p2))
(setq en (subst (cons 50 unghi) (assoc 50 en) en))
(entmod en)
(prin1)
)




               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Iun 12, 2012, 06:12 PM

                  Acest program schimba punctul de start al unei polilinii. Ruleaza cu comanda sv .

Code:

(defun c:sv (/ pt pl pobj plst)
(setvar "CMDECHO" 0)
(vl-load-com)
(setq pt (getpoint "\nAlege punctul de start:"))
;;scanam poliliniile din desen
(setq pl (car (nentselp pt)))
 (setq pobj (vlax-ename->vla-object pl))
;;verificam sensul poliliniei
(vla-GetBoundingBox pobj 'MinP 'MaxP)
  (setq
      minp (vlax-safearray->list minp)
      MaxP (vlax-safearray->list MaxP)
      lst
        (mapcar
          (function
          (lambda (x)
          (vlax-curve-getParamAtPoint
          pobj
          (vlax-curve-getClosestPointTo pobj x)
          ) ;_ vlax-curve-getParamAtPoint
          ) ;_ lambda
          ) ;_ function
          (list minp
               (list (car minp) (cadr MaxP))
                MaxP
               (list (car MaxP) (cadr minp))
                ) ;_ list
          ) ;_ mapcar
      ) ;_ setq
  (if
    (or
      (> (car lst) (cadr lst) (caddr lst) (cadddr lst))
      (> (cadr lst) (caddr lst) (cadddr lst) (car lst))
      (> (caddr lst) (cadddr lst) (car lst) (cadr lst))
      (> (cadddr lst) (car lst) (cadr lst) (caddr lst))
      )
(progn      
(alert "Polilinia este in sens antiorar!")
(defun do_light (pl / hdr tail list_new list_of_vert)
   (foreach item (reverse (entget pl))
      (cond
         ((and (not hdr)(= (car item) 10))
            (setq hdr item)
         )
         ((member (car item) '(10 40 41))
            (setq list_of_vert (cons item list_of_vert))
         )
         ((= (car item) 42)
            (setq list_of_vert (cons (cons 42 (- (cdr item))) list_of_vert))
         )
         ((= (car item) 210)
            (setq tail item)
         )
         (T (setq list_new (cons item list_new)))
      )
   )
   (if (entmod (append list_new (list hdr)(reverse list_of_vert)(list tail)))
      (progn
         (prompt " OK")
         (entupd pl)
      )
      (prompt " failed!")
   )
)
(do_light pl)
)
)

;;acum schimbam vertexul de inceput al poliliniei
(setq plst (vlax-get pobj 'Coordinates)
 norm (vlax-get pobj 'Normal)
 pt (trans pt 1 0)
 pa (vlax-curve-getParamAtPoint pobj pt)
 nb (/ (length plst) 2)
 n nb
 )
 (repeat n
 (setq blst (cons (vla-getBulge pobj (setq n (1- n))) blst))
 )
 (if (= pa (fix pa))
 (setq n (fix pa)
 plst (append (sublist plst (* 2 n) nil)
 (sublist plst 0 (* 2 n))
 )
 blst (append (sublist blst n nil) (sublist blst 0 n))
 )
 (setq n (1+ (fix pa))
 d3 (vlax-curve-getDistAtParam pobj n)
 d2 (- d3 (vlax-curve-getDistAtPoint pobj pt))
 d3 (- d3 (vlax-curve-getDistAtParam pobj (1- n)))
 d1 (- d3 d2)
 pt (trans pt 0 (vlax-get pobj 'Normal))
 plst (append (list (car pt) (cadr pt))
 (sublist plst (* 2 n) nil)
 (sublist plst 0 (* 2 n))
 )
 )
 )
 (vlax-put pobj 'coordinates plst)
 (princ)
 )

(defun sublist (lst start leng / n r)
 (if (or (not leng) (< (- (length lst) start) leng))
 (setq leng (- (length lst) start))
 )
 (setq n (+ start leng))
 (repeat leng
 (setq r (cons (nth (setq n (1- n)) lst) r))
 )
 )
 
 (defun k*bulge (b k / a)
 (setq a (atan b))
 (/ (sin (* k a)) (cos (* k a)))
 )

I-am facut o modificare, deoarece dadea o eroare, chiar daca functiona corect.

Modificat de zamfy (13-06-2012 08:24:14)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Iun 12, 2012, 06:15 PM

                  Acest program "taie" obiectele fata de o margine. Ruleaza cu comanda ts . Este programul extrim din Express Tools, numai ca nu multa lume stie de comanda aceasta:

Code:

(defun c:ts ( / na e1 p1 redraw_it lst n )
 
(acet-error-init (list
                   (list   "cmdecho" 0
                         "highlight" 0
                         "regenmode" 1
                            "osmode" 0
                           "ucsicon" 0
                        "offsetdist" 0
                            "attreq" 0
                          "plinewid" 0
                         "plinetype" 1
                          "gridmode" 0
                           "celtype" "CONTINUOUS"
                         "ucsfollow" 0
                          "limcheck" 0
                   )
                   T     ;flag. True means use undo for error clean up.
                   '(if redraw_it (redraw na 4))
                  );list
);acet-error-init
 
 
(princ "\nAlege o Polilinie, Linie, Cerc, Arc, Elipsa, Imagine sau Text pentru marginea de taiere...")
(setq na (acet-ui-single-select '((-4 . "<OR")
                           (0 . "CIRCLE")
                           (0 . "ARC")
                           (0 . "LINE")
                           (0 . "ELLIPSE")
                           (0 . "ATTDEF")
                           (0 . "TEXT")
                           (0 . "MTEXT")
                           (0 . "IMAGE")
                           (0 . "SPLINE")
                           (0 . "INSERT")
                           (0 . "SOLID")
                           (0 . "3DFACE")
                           (0 . "TRACE")
                           (0 . "LWPOLYLINE")
                           (-4 . "<AND")
                            (0 . "POLYLINE")
                            (-4 . "<NOT")
                              (-4 . "&")
                              (70 . 112)
                            (-4 . "NOT>")
                           (-4 . "AND>")
                          (-4 . "OR>")
                         )
                         T
         );acet-ui-single-select
);setq
(if na
    (progn
     (setq e1 (entget na));;setq
     (if (or (equal "TEXT"   (cdr (assoc 0 e1)))
             (equal "MTEXT"  (cdr (assoc 0 e1)))
             (equal "ATTDEF" (cdr (assoc 0 e1)))
             (equal "IMAGE"  (cdr (assoc 0 e1)))
             (equal "INSERT" (cdr (assoc 0 e1)))
             (equal "SOLID"  (cdr (assoc 0 e1)))
             (equal "3DFACE" (cdr (assoc 0 e1)))
             (equal "TRACE"  (cdr (assoc 0 e1)))
         );or
         (progn
          (setq lst (acet-geom-object-point-list na nil))
          (setq n 0)
          (command "_.pline")
          (repeat (length lst)
          (command (nth n lst))
          (setq n (+ n 1));setq
          );repeat
          (if (not (equal (car lst) (last lst) 0.0000001))
              (command "_cl")
              (command "")
          );if
          (setq na (entlast)
                e1 na
          );setq
         );progn then draw a temp pline to be the cutting edge.
         (setq e1 nil)
     );if
     (redraw na 3)
     (setq redraw_it T)
 
     (setq p1 (getpoint "\nSpecifica partea unde se taie:"));setq
     (redraw na 4)
     (setq redraw_it nil)
     (if p1 (etrim na p1));if
     (if e1
         (progn
          (if (setq p1 (acet-layer-locked (getvar "clayer")))
              (command "_.layer" "_un" (getvar "clayer") "")
          );if
          (entdel e1)
          (if p1
              (command "_.layer" "_lock" (getvar "clayer") "")
          );if
         );progn then
     );if
    );progn
);if
 
(acet-error-restore)
(princ)
);defun c:extrim
 
;!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
;Entity-TRIM function
;takes: na - entity name
;  a - a point, the side to trim on
;NOTE: This function does not allow for the possible miss of
;      non-continuous linetypes.
;
(defun etrim ( na a / la b d e1 lst lst2 n j k m ss na2 na3 na4
                      x y z flag flag2 flag3 zlst vpna vplocked
             )
 
 
(setq e1 (entget na));setq
(if (or (setq flag (equal (acet-dxf 0 e1) "POLYLINE"))
        (setq flag (equal (acet-dxf 0 e1) "LWPOLYLINE"))
        (equal (acet-dxf 0 e1) "LINE")
        (equal (acet-dxf 0 e1) "CIRCLE")
        (equal (acet-dxf 0 e1) "ARC")
        (equal (acet-dxf 0 e1) "ELLIPSE")
        (equal (acet-dxf 0 e1) "TEXT")
        (equal (acet-dxf 0 e1) "ATTDEF")
        (equal (acet-dxf 0 e1) "MTEXT")
        (equal (acet-dxf 0 e1) "SPLINE")
    );or
    (progn
     (if (and flag
              (equal 8 (logand 8 (acet-dxf 70 e1)))
         );and
         (setq flag nil)
     );if
     (setq     a (trans a 1 0)
            vpna (acet-currentviewport-ename)
     );setq
     (acet-ucs-cmd (list "_View"))
 
     (setq   lst (acet-geom-object-point-list na nil)  ;;;find extents of selected cutting edge object
             lst (acet-geom-list-extents lst)
               x (- (car (cadr lst)) (car (car lst)))
               y (- (cadr (cadr lst)) (cadr (car lst)))
               x (* 0.075 x)
               y (* 0.075 y)
               z (list x y)
               x (list (+ (car (cadr lst)) (car z))
                       (+ (cadr (cadr lst)) (cadr z))
                 );list
               y (list (- (car (car lst)) (car z))
                       (- (cadr (car lst)) (cadr z))
                 );list
            zlst (zoom_2_object (list x y))
     );setq
     (if vpna
         (setq vplocked (acet-viewport-lock-set vpna nil)) ;unlock cur viewport if needed.
     );if
     (command "_.zoom" "_w" (car zlst) (cadr zlst))
 
     (entupd na)                  ;;;update the ent. so it's curves display smoothly
 
     (setq lst (acet-geom-object-point-list na
                       (/ (acet-geom-pixel-unit) 2.0)
               )
     );setq
     (if (or (not flag)
             (not (acet-geom-self-intersect lst nil))
         );or
         (progn             ;then the object is valid and not a self intersecting polyline.
          (if (and flag
                   (equal (car lst) (last lst) 0.0001)
              );and
              (setq flag3 T);then the polyline could potentialy need a second offset
          );if
          (if (setq la (acet-layer-locked (getvar "clayer")))
              (command "_.layer" "_unl" (getvar "clayer") "")
          );if
 
          (command "_.pline")
          (setq b nil)
          (setq n 0);setq
          (repeat (length lst)
           (setq d (nth n lst))
           (if (not (equal d b 0.0001))
              (progn
               (command d)
               (setq lst2 (append lst2 (list d)));setq
               (setq b d);setq
              );progn
           );if
           (setq n (+ n 1))
          );repeat
          (command "")
          (setq  na2 (entlast)
                  ss (ssadd)
                  ss (ssadd na2 ss)
                 lst nil
          );setq
          (acet-ss-visible ss 1)
          (setq lst2 (get_fence_points na2 a lst2 flag3 flag));setq
 
          (if la
              (command "_.layer" "_lock" (getvar "clayer") "")
          );if
          (acet-ucs-cmd (list "_p"))
          ;Move the ents to force a display update of the ents to avoid viewres problems.
          (setvar "highlight" 0)
          (if (setq ss (ssget "_f" (last lst2)))
              (command "_.move" ss "" "0,0,0" "0,0,0")
          );if
          (if flag
              (progn
               (if (setq la (acet-layer-locked (acet-dxf 8 e1)))
                   (command "_.layer" "_unl" (acet-dxf 8 e1) "")
               );if
               (acet-ucs-set-z (acet-dxf 210 e1))
               (command "_.copy" na "" "0,0,0" "0,0,0")
               ;(entdel na)
               (acet-ss-visible (ssadd na (ssadd)) 1);make it invisible for a while.
                                                    ;rk 12:01 PM 3/10/98
               (setq na3 na
                      na (entlast)
               );setq
               (command "_.pedit" na "_w" "0.0" "_x")
               (acet-ucs-cmd (list "_p"))
               (if la (command "_.layer" "_lock" (acet-dxf 8 e1) ""));if
              );progn
          );if
          (command "_.trim" na "")
          (setq m (- (length lst2) 1));setq
          (setq k 0)
          (repeat (length lst2)
           (setq lst (nth k lst2))
           (setq a (trans (car lst) 0 1))
           (setq n 1)
           (repeat (- (length lst) 1) ;repeat each fence list
            (setq b (trans (nth n lst) 0 1))
            (if (equal a b 0.0001)
                (setq flag2 T)
                (setq flag2 nil)
            );if
            (setq na4 nil);setq
            (setq j 0);setq
            (while (not flag2)       ;repeat each segment of the fence until no new ents are created.
             (setq na4 (entlast));setq
             (command "_F" a b "")
             (if (and (equal na4 (entlast))
                      (or (not (equal k m))
                          (> j 0)
                      );or
                 );and
                 (setq flag2 T)
             );if
             (setq j (+ j 1));setq
            );while
            (setq a b);setq
            (setq n (+ n 1));setq
           );repeat
 
           (setq k (+ k 1))
          );repeat
          (command "")
 
          (if flag
              (progn
               (if (setq la (acet-layer-locked (acet-dxf 8 e1)))
                   (command "_.layer" "_unl" (acet-dxf 8 e1) "")
               );if
               (entdel na) ;get rid of the copy
 
               ;(entdel na3);bring back the original
               (acet-ss-visible (ssadd na3 (ssadd)) 0) ;bring back the original
                                                      ;rk 12:01 PM 3/10/98
               (if la (command "_.layer" "_lock" (acet-dxf 8 e1) ""));if
              );progn
          );if
         );progn
         (progn
          (acet-ucs-cmd (list "_p"))
          (princ "\nSelf intersecting edges are not acceptable.")
         );progn else invalid self intersecting polyline
     );if
     (command "_.zoom" "_p")
     (if vplocked
         (acet-viewport-lock-set vpna T) ;then re-lock the viewport
     );if
    );progn then it's a most likely a valid entity.
);if
);defun etrim
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun another_offset ( pl1 pl2 a1 a2 b na2 lst2 a lst3 lst4 / na ss lst da1 da2)
 
(setq da1 (abs (- a2 a1)));setq
(setq da2 (- (* b (max pl2 pl1))
             (/ (* b (abs (- pl2 pl1)))
                 2.0
             )
          )
);setq
(if (> (abs (- da2 da1))
       (* 0.01 (max a1 a2))
    )
    (progn
 
     (acet-pline-make (list lst2))
     (setq  na (entlast)
           na2 (entlast)
            ss (ssadd)
            ss (ssadd na ss)
     );setq
     (acet-ss-visible ss 1)
     (command "_.offset" b na2 a "")
     (if (and (not (equal na (entlast)))
              (setq lst3 (acet-geom-vertex-list (entlast)))
              (setq lst3 (intersect_check lst2 lst3 lst4))
         );and
         (progn
          (acet-ss-visible (ssadd (entlast) (ssadd)) 1)
          (command "_.area" "_ob" (entlast))
          (setq pl2 (getvar "perimeter")
                 a2 (getvar "area")
          );setq
          (setq lst (list (acet-geom-vertex-list (list (entlast) 0))));setq
          (entdel (entlast));then offset was a success so delete the ent after getting it's info
         );progn then
         (if (not (equal na (entlast))) (entdel (entlast)));if else
     );if
     (entdel na2)
    );progn then let's do that second offset
);if
 
lst
);defun another_offset
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun get_fence_points ( na2 a lst2 flag plflag / a1 a2 pl1 pl2 b c d n
                                                   lst lst2 lst3 lst4 na
                        )
 
(if flag
    (progn
     (setq lst2 (cdr lst2));setq
     (repeat (fix (/ (length lst2) 2))
      (setq lst2 (append (cdr lst2) (list (car lst2)));append
      );setq
     );repeat
     (setq lst2 (append lst2 (list (car lst2))));setq
     (command "_.area" "_ob" na2)
     (setq pl1 (getvar "perimeter")
            a1 (getvar "area")
     );setq
    );progn
);if
 
(setq    a (trans a 0 1)
         b (* (getvar "viewsize") 0.05);initial offset distance
         n 3.0                         ;number of offsets
         d (/ b (- n 1))               ;delta offset
         c (acet-geom-pixel-unit)
      lst4 (acet-geom-view-points)
);setq
 
(while (> b c)
(setq na (entlast))
(command "_.offset" b na2 a "")
(if (and (not (equal na (entlast)))
         (setq lst3 (acet-geom-vertex-list (entlast)))
         (or (not plflag)
             (setq lst3 (intersect_check lst2 lst3 lst4))
         );or
    );and
    (progn
     (setq lst3 (acet-geom-m-trans lst3 1 0))
     (acet-ss-visible (ssadd (entlast) (ssadd)) 1)
     (if flag
         (progn
          (command "_.area" "_ob" (entlast))
          (setq pl2 (getvar "perimeter")
                 a2 (getvar "area")
          );setq
         );progn
     );if
     (setq lst (append lst (list lst3)));setq
     (entdel (entlast))  ;delete the ent after getting it's vertex info
     (if flag
         (setq lst (append lst
                           (another_offset pl1 pl2 a1 a2 b na2 lst2 a lst3 lst4)
                   );append
         );setq
     );if
    );progn then offset was a success
    (if (not (equal na (entlast))) (entdel (entlast)));if else
);if
(setq b (- b d));setq
);while
(setq na (entlast))
(command "_.offset" c na2 a "")
(if (and (not (equal na (entlast)))
         (setq lst3 (acet-geom-vertex-list (entlast)))
         (or (not plflag)
             (setq lst3 (intersect_check lst2 lst3 lst4))
         );or
    );and
    (progn
     (setq lst3 (acet-geom-m-trans lst3 1 0))
     (acet-ss-visible (ssadd (entlast) (ssadd)) 1)
     (if flag
         (progn
          (command "_.area" "_ob" (entlast))
          (setq pl2 (getvar "perimeter")
                 a2 (getvar "area")
          );setq
         );progn
     );if
     (setq lst (append lst (list lst3)));setq
     (entdel (entlast));then offset was a success so delete the ent after getting it's info
     (if flag
         (setq lst (append lst
                           (another_offset pl1 pl2 a1 a2 c na2 lst2 a lst3 lst4)
                   );append
         );setq
     );if
    );progn then
    (if (not (equal na (entlast))) (entdel (entlast)));if else
);if
(entdel na2)
 
lst
);defun get_fence_points
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;returns a list of points on screen if the first two lists do not
;contain segments that intersect each other.
;
(defun intersect_check ( lst lst2 lst3 / x x2 y y2 lst4 flag len len2
                                         a aa b bb c d n j)
 
(setq  len (length lst)
      len2 (length lst2)
         x (car (car lst3))
        x2 (car (cadr lst3))
         y (cadr (car lst3))
        y2 (cadr (cadr lst3))
);setq
 
(setq n 0);setq
(while (and (not flag)
            (< (+ n 1) len2)
       );and
(setq   aa (nth n lst2)
        bb (nth (+ n 1) lst2)
         a (bns_truncate_2_view aa bb x y x2 y2)
         b (bns_truncate_2_view bb aa x y x2 y2)
      lst4 (append lst4 (list a))
);setq
(if (or (not (equal a aa))
        (not (equal b bb))
    );or
    (setq lst4 (append lst4 (list b)))
);if
(setq j 0);setq
 (while (and (not flag)
             (< (+ j 1) len)
        );and
 (setq    c (nth j lst)
          d (nth (+ j 1) lst)
       flag (inters a b c d)
 );setq
 
 (setq j (+ j 1));setq
 );while
 
(setq n (+ n 1));setq
);while
(if (not (equal b (last lst4)))
    (setq lst4 (append lst4 (list b)));setq
);if
(if (not flag)
    (setq flag lst4)
    (setq flag nil)
);if
flag
);defun intersect_check
 
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
(defun zoom_2_object ( lst / p1 p2 p3 p4 p5 p6 mp dx dy dx2 dy2
                             r1 r2 na e1 x w h dv1 dv2 x
                     )
 
 (setq  lst (acet-geom-m-trans lst 1 2)
         p1 (acet-geom-m-trans (acet-geom-view-points) 1 2)    ;p1 and p2 are the viewpnts
         p2 (cadr p1)
         p1 (car p1)
         p1 (list (car p1) (cadr p1))
         p2 (list (car p2) (cadr p2))
 );setq
 (if lst
     (progn
      (setq   p5 (acet-geom-list-extents lst)              ;p5 and p6 are the geometry points
              p6 (cadr p5)
              p5 (car p5)
              p5 (list (car p5) (cadr p5))
              p6 (list (car p6) (cadr p6))
              mp (acet-geom-midpoint p5 p6)           ;prepare to resize the geometry rectang to
              dx (- (car p2) (car p1))    ;have the same dy/dx ratio as p1 p2.
              dy (- (cadr p2) (cadr p1))
             dx2 (- (car p6) (car p5))
             dy2 (- (cadr p6) (cadr p5))
      );setq
      (if (equal dx 0.0)  (setq dx 0.000001))  ;just in case div by zero
      (if (equal dx2 0.0) (setq dx2 0.000001))
      (setq   r1 (/ dy dx)
              r2 (/ dy2 dx2)
      );setq
      (if (< r2 r1)
          (setq dy2 (* r1 dx2));then scale dy2 up
          (progn
           (if (equal r1 0.0)  (setq r1 0.000001))  ;just in case div by zero
           (setq dx2 (* dy2 (/ 1.0 r1)));else scale dx2 up
          );progn
      );if
      (setq p5 (list (- (car mp) (/ dx2 1.98))   ;1.98 is used instead of 2.0 to expand
                     (- (cadr mp) (/ dy2 1.98))  ;the rectangle slightly
               );list
            p6 (list (+ (car mp) (/ dx2 1.98))
                     (+ (cadr mp) (/ dy2 1.98))
               );list
      );setq
     );progn then lst
 );if
 (if (and lst
          (equal 0 (getvar "tilemode"))
          (not (equal 1 (getvar "cvport")))
          (setq na (acet-currentviewport-ename))
     );and
     (progn
      (setq  e1 (entget na)
              x (cdr (assoc 10 e1))
              w (cdr (assoc 40 e1))
              h (cdr (assoc 41 e1))
             p3 (list (- (car x) (/ w 2.0))
                      (- (cadr x) (/ h 2.0))
                );list
             p4 (list (+ (car x) (/ w 2.0))
                      (+ (cadr x) (/ h 2.0))
                );list
             p3 (trans p3 3 2)      ;p3 and p4 are the viewport points
             p4 (trans p4 3 2)
            dv1 (acet-geom-delta-vector p1 p3)
            dv2 (acet-geom-delta-vector p2 p4)
              x (distance p1 p2)
      );setq
      (if (equal 0 x) (setq x 0.000001));just in case
      (setq   x (/ (distance p5 p6)
                   x
                )
            dv1 (acet-geom-vector-scale dv1 x)
            dv2 (acet-geom-vector-scale dv2 x)
             p5 (acet-geom-vector-add p5 dv1)
             p6 (acet-geom-vector-add p6 dv2)
       );setq
     );progn then
 );if
 (setq p1 (list (car p1) (cadr p1) 0.0)
       p2 (list (car p2) (cadr p2) 0.0)
       p5 (list (car p5) (cadr p5) 0.0)
       p6 (list (car p6) (cadr p6) 0.0)
 );setq
 (if lst
     (setq lst (list (trans p5 2 1)
                     (trans p6 2 1)
               );list
     );setq
     (setq lst nil)
 );if
 
 lst
);defun zoom_2_object


(princ)




               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Iun 13, 2012, 01:36 AM

                  Inca unul, de conceptie proprie:

Code:

;;;utilitar pentru mutare rapida entitati


(defun C:QM ()
(setq ob (entsel))
(setq cord (assoc 10 (entget (car ob))))
(setq x (cadr cord))
(setq y (caddr cord))

(command "move" (car ob) "" (list x y) pause)

    )

(princ "Lansare cu comanda QM")

Il folosesc dupa ce am numerotat si facut tabel cu inventarul de coordonate la un contur, si trebuie mutate putin din loc numerele punctelor, ca nu se vad bine. Lucrez cu ENTER=repeat last command, si merge destul de repede. "QM" m-am gândit eu ca ar da bine ca vine de la Quick Move.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: poescuTOPO din Iul 10, 2012, 07:29 PM

                  De curand am finalizat o aplicati in lsp care genereaza lucrarea de cadastru + anexele OCPI automat. Tot ce trebui facut este fisierul cpxml dupa care se incarca in aplicatie si si cu citeva klicuri gata lucrarea.

Aplicatie este limitata la 20 de utilizari. Pentru cine vrea sa o foloseasca in continuare percep un tarif de 200lei cred ca suma respectiva este modica la ce poate sa faca.


Pentru cei interesati interesati o puteti descarca de la


http://www.fileshare.ro/72672540661.1


400/436px  27.7KB



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: oak din Iul 10, 2012, 07:43 PM

                  
poescuTOPO a scris:

De curand am finalizat o aplicati in lsp care genereaza lucrarea de cadastru + anexele OCPI automat. Tot ce trebui facut este fisierul cpxml dupa care se incarca in aplicatie si si cu citeva klicuri gata lucrarea.

Aplicatie este limitata la 20 de utilizari. Pentru cine vrea sa o foloseasca in continuare percep un tarif de 200lei cred ca suma respectiva este modica la ce poate sa faca.


Pentru cei interesati interesati o puteti descarca de la


http://www.fileshare.ro/72672540661.1



Da multa minte mai ai. Cind iti mai fata mintea idei din astea trimite si noua cate un pui se le inmultim

Modificat de oak (10-07-2012 16:44:36)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Iul 10, 2012, 08:33 PM

                  Nu incarcati in AutoCAD, este o gluma proasta.

@popescuTOPO: astept niste explicatii de la tine, daca vrei sa mai vizitezi forumul.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: poescuTOPO din Iul 10, 2012, 08:58 PM

                  Scuze de gluma.
   aici e varianta buna   http://www.fileshare.ro/72696065165.1



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: cadian din Iul 10, 2012, 09:10 PM

                  Pe bune??? Te-a deranjat cineva cu ceva?


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Iul 10, 2012, 10:33 PM

                  Bravo, Poescu_topo! Esti un geniu. Daca tot esti asa de "talentos" in LISP, ce-ar fi sa faci si ceva util, ca la "glume" ne pricepem si noi. L-ai facut de 1.3 MB ca sa para mai profesional, nu? Dar compilarea VLX lasa de dorit, ma dezamagesti. Un fisier TEAPA.fas, care arata cam asa:

Code:

(defun teapa ()
(alert "Se lanseaza cu comanda CP")
(alert "Mai aveti 20 de utilizari")
(alert "Mai aveti 19 utilizari")
(alert "Mai aveti 18 utilizari")
(alert "Mai aveti 17 utilizari")
(alert "Mai aveti 16 utilizari")
(alert "Mai aveti 15 utilizari")
(alert "Mai aveti 14 utilizari")
(alert "Mai aveti 13 utilizari")
(alert "Mai aveti 12 utilizari")
(alert "Mai aveti 11 utilizari")
(alert "Mai aveti 10 utilizari")
(alert "Mai aveti 9 utilizari")
(alert "Mai aveti 8 utilizari")
(alert "Mai aveti 7 utilizari")
(alert "Mai aveti 6 utilizari")
(alert "Mai aveti 5 utilizari")
(alert "Mai aveti 4 utilizari")
(alert "Mai aveti 3 utilizari")
(alert "Mai aveti 2 utilizari")
(alert "Mai aveti 1 utilizari")
(alert "Mai aveti 0 utilizari")
(alert "?????????????????????")
(alert "Inca nu s-a lansat?")
(alert "Nasol")
(alert "Acum sigur se va lansa")
(alert "Nu s-a lansat?")
(alert "Se pare ca nu")
(alert "Va rugam incercati din nou")
(alert "Merge?")
(alert "Se pare ca nu, e nasol!")
(alert "Gata cu gluma!")
(alert "Trecem la munca!")
(alert "Dar esti sigur ca ai chef de munca?")
(alert "Ajunge cu munca, fa o pauza")
(alert "Daca nu, te ajut eu")
(alert "Teapa, in programul respectiv se afla un virus")
(alert "Mai ai 10 secunde pana la busirea calculatorului")
(alert "10")
(alert "9")
(alert "8")
(alert "7")
(alert "6")
(alert "5")
(alert "4")
(alert "3")
(alert "2")
(alert "1")
(alert "0")
(alert "AHAAAAAAA!")
(alert "10")
(alert "9")
(alert "8")
(alert "7")
(alert "6")
(alert "5")
(alert "4")
(alert "3")
(alert "2")
(alert "1")
(alert "0")
;;chestia asta se repeta de vreo 200 de ori
)
(teapa)

Iar la faza cu virusul, aproape era sa fac infarct, noroc ca am avut o sticla cu apa langa mine. Sau ai profitat de faptul ca un virus in LISP chiar exista? (a se vedea aici: http://topograf.3xforum.ro/post/4187/1/ ... _Autolisp/).
Totusi, ca sa lasam gluma la o parte, postez mai jos 3 utilitare:



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Iul 10, 2012, 10:36 PM

                  

Code:

(defun c:dfd ()
 (command "start" (strcat "explorer " (getvar "dwgprefix")))
 (princ)
 )

Acest utilitar deschide in windows explorer folderul dwg-ului in care lucrati. Comanda este ->dfd.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Iul 10, 2012, 10:39 PM

                  Deoarece layer managerul din AutoCAD 2007 nu prea fucntioneaza cum trebuie in Windows 7, acest utilitar creeaza rapid layere, fara a mai folosi managerul:

Code:

(defun c:nl ()
 (setq numelayer (getstring T "\nSpecifica numele noului layer: "))
 (prompt "\nAlege culoarea layerului: ")
 (princ)
 (command "-layer" "make" (strcat numelayer) "C" (acad_colordlg 1) "" "")
 (princ)
 )

Ruleaza cu comanda -> nl. Comanda intr-un lisp o gasiti intotdeauna dupa sintagma "defun c:nume_comanda (argumente)".
P.S.: Mi-a fost lene sa scriu (princ "\n Se lanseaza cu comanda nl") la final.

Modificat de zamfy (10-07-2012 19:40:09)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Iul 10, 2012, 10:42 PM

                  Si inca o comanda care combina paste to original coordinates cu zoom->object-> last. Colegii mei au devenit dependenti de ea.

Code:

(defun c:xx ()
(command "pasteorig")
(command "_zoom" "o" "l" "")
(prin1)
)

Se lanseaza cu comanda-> xx.
Mai revin maine cu cateva scripturi mici, dar foarte utile.

@PoescuTOPO, poate pana la urma ne arati si noua programul real, ca avem nevoie de concurenta.
Am si eu un program asemanator, care face anexele, CP-ul si ce mai trebuie (am facut vreo 10 lucrari pana acum cu el si au trecut toate), dar deocamdata e doar pentru prima inscriere si doar pentru persoane fizice.
E facut doar in Lisp, fara DCl, nu are handling de erori, nu este profesional, PAD-urile pe care le genereaza sunt putin diferite fata de modelul din ordin (la OCPI le accepta), nu are ferestre de dialog, ci foloseste un bloc cu atribute pentru a completa datele, nu face CP multiplu (nu am facut niciodata unul, nici nu stiu sa-l fac), iar datele completate trebuie sa respecte un anumit format, pentru ca programul sa recunoasca corect adresele, numele proprietarilor, actele, tipul constructiilor etc.
In schimb, merge atat la intravilan, cat si la extravilan, suporta 2 proprietari, pana la 5 parcele, pana la 5 constructii, detecteaza automat scara planului, detecteaza automat codurile SIRSUP si SIRUTA (daca adresa este completata corect). Este separat in 3 module:
-cel care face doar PAD-ul;
-cel care genereaza anexele
-cel care face fisierul CP. Acestea se pot folosi individual sau laolalta, deoarece folosesc acelasi set de variabile.Pentru un incepator ca mine, eu zic ca a iesit destul de bine, am muncit destul de mult la el (are aproape 5000 de linii de cod.).
Daca vrea cineva, o sa fac un filmulet in care voi arata cum functioneaza. Dupa ce il mai finisez putin (deja e la versiunea 2.9.1), o sa il pun aici si va fi gratis (asta ca sa nu fiu tras la raspundere ca nu merge, e naspa, o porcarie etc.).

Modificat de zamfy (10-07-2012 20:04:13)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Iul 10, 2012, 11:40 PM

                  @zamfy: daca imi spui ce anume nu ti-a iesit la PAD sau de ce nu seamana cu cel standard, poate am vreo idee care te ajuta. Pacat ca nu folosesti si DCL, e o interfata usor de construit si foarte prietenoasa.

@popescuTOPO: linkul cu varianta corecta a programului duce la un fisier care nu exista. E alta gluma?



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: diagodose2009 din Iul 12, 2012, 11:09 PM

                  Draga zamfy,programele tale sunt jucarii pe langa sursele de autolisp incluse deja
in programul VlaxCompiler.
======>>>>>>>>>>Deci te rog , tu nu mai posta  scripturile milimetrice
De exemplu :  programul lisp contine o  librarie cu  1200de functii  care  in total
pe disk sursele au dimensiunea de 1MB surse LISP..
Aceasta librarie de surse LISP  este ousa gratuit pentru toti utilizatori..programului vlaxcompiler
Daca vrei surse de programe LISP puternic modularizate pe functii de dimensiuni mari
http://lisp2arx.3xforum.ro/userlist.php
Deci  tu iti poti construi propriile programe LISP pe baza acestei librarii
Mai jos vezi lista functiilor  in autolisp:
http://www.puiubrat.3x.ro/lisp2arx/ccpp ... oglist.txt
Ruleaza cu comanda -> nl. Comanda intr-un lisp o gasiti intotdeauna dupa sintagma "defun c:nume_comanda (argumente)".

Modificat de diagodose2009 (13-07-2012 14:48:41)


_______________________________________
http://we.tl/D8HOKFyTJ7


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Atopor din Iul 13, 2012, 01:04 PM

                  Poate ne spui si noua ce e cu pomelnicul acela!


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: advex din Iul 13, 2012, 01:19 PM

                  
diagodose2009 a scris:


Daca vrei surse de programe LISP puternic modularizate pe functii de dimensiuni mari
http://lisp2arx.3xforum.ro/userlist.php


La ce serveste lista de useri de la adresa indicata?
De la lansarea din 02.02.2011 s-a ajuns astazi la performanta: 44 useri inregistrati, 23 subiecte si 38 mesaje
Ceva nu functioneaza: sunt multi nepriceputi in lucrul cu programe autolisp sau tu nu transmiti corect informatiile...
Lasa agresivitatea si remarcile ironice privind programele milimetrice si lanseaza teme de discutie serioase, provocari pentru userii de pe acest forum!


_______________________________________
http://info-topograf.blogspot.ro/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: diagodose2009 din Iul 13, 2012, 05:44 PM

                  Q: Ce  nu intelege zamfy?
A: zamfy  nu intelege  ca scriptuirile  (similare cu cea de mai mai jos)  sunt bataie de joc la adresa forumului topograf.3x.forum.ro

Code:

(defun c:nl ()
 (setq numelayer (getstring T "\nSpecifica numele noului layer: "))
 (prompt "\nAlege culoarea layerului: ")
 (princ)
 (command "-layer" "make" (strcat numelayer) "C" (acad_colordlg 1) "" "")
 (princ)
 )



_______________________________________
http://we.tl/D8HOKFyTJ7


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Aug 01, 2012, 11:35 AM

                  
diagodose2009 a scris:

Q: Ce  nu intelege zamfy?
A: zamfy  nu intelege  ca scriptuirile  (similare cu cea de mai mai jos)  sunt bataie de joc la adresa forumului topograf.3x.forum.ro

Code:

(defun c:nl ()
 (setq numelayer (getstring T "\nSpecifica numele noului layer: "))
 (prompt "\nAlege culoarea layerului: ")
 (princ)
 (command "-layer" "make" (strcat numelayer) "C" (acad_colordlg 1) "" "")
 (princ)
 )



Stimate domn, cu ajutorul acestor scripturi "milimetrice" am invatat si eu AutoLISP tot de pe acest forum. Nu cred ca daca ii dai unui incepator un program care are sute de linii de cod, va intelege ceva din el. Scriptul de mai sus poate ca pentru unii utilizatori este util, nu toti topografii se pricep la programare. Si daca dvs. credeti ca acest script este o bataie de joc, atunci programul de la aceasta adresa http://topograf.3xforum.ro/post/4228/1/ ... stru_2012/ ce mai este? E mai bun pentru ca nu are 10 linii de cod, are 5000, dar nu face nimic?
Eu cred ca aici conteaza calitatea si nu cantitatea. Orice programator incearca pe cat posibil sa isi optimizeze codul sursa si sa scrie cat mai putine linii de cod. Daca acest forum nu va satisface, puteti sa vizitati http://www.theswamp.org/ si va asigur ca acolo veti gasi oameni care chiar se pricep la LISP si care cred ca se ridica la nivelul standardelor dvs.
Parerea mea este ca din utilizatorii acestui forum vreo 10% stiu programare cu adevarat, iar atat eu cat si multi altii nu facem parte din acestia.
Ati spus in multe randuri ca limbajul LISP este un limbaj fara viitor. Totusi, de la AutoCAD 2010 incoace, vad ca LISP sta bine mersi, dar VBA sau VB.net unde este? Spuneti ca ObjectARX sau C++ este viitorul. Insa ce merge pe AutoCAD 2010 nu merge pe 2011, ce merge pe AutoCAD 2012 nu merge pe 2013 s.a.m.d. In schimb, multe din scripturile LISP merg pe orice versiune de Autocad. Iar Lisp este un limbaj mult mai usor de invatat decat multe altele.
Si pe aceasta cale le multumesc unor utilizatori ca John Doe, TOPDAVLAD, advex s.a. care au avut "nesimtirea" de a posta "in bataie de joc" unele scripturi, din care m-am inspirat si fara de care nici in ziua de azi nu stiam LISP.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Aug 01, 2012, 03:32 PM

                  Constat inca o data ca userul diagodose2009 nu a inteles spiritul in care se discuta aici, pe forum. Nu dau sfaturi, nu motivez constatarea, doar afirm ca daca toti sunt nemultumiti de unul singur sau unul de toti ceilalti, exista solutii pentru ambele chestiuni.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Anton Pann din Aug 01, 2012, 03:48 PM

                  Da, aici nu se apeleaza la  CCR .


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Aug 01, 2012, 04:41 PM

                  
John Doe a scris:

@zamfy: daca imi spui ce anume nu ti-a iesit la PAD sau de ce nu seamana cu cel standard, poate am vreo idee care te ajuta. Pacat ca nu folosesti si DCL, e o interfata usor de construit si foarte prietenoasa.

Tipurile de PAD pe care le folosesc in mod curent arata cam asa:
http://www.fileshare.ro/77129305454.6
Motivul pentru care nu folosesc modelul standard dat de ANCPI este ca in zonele montane loturile au o forma mult mai neregulata decat cele in zona de campie, iar in modelul standard ba nu venea caroiajul calumea, ba nu incapea inventarul de coordonate, asa ca am facut acest model, unde pot sa asez elementele cum imi vine mai bine. Iar OCPI-ul cu care lucrez de vreo 3 ani si jumatate accepta acest format, care in esenta are toate elementele modelului standard, numai ca asezate un pic altfel.
Ti-am ascultat sfatul si m-am pus un pic cu burta pe carte  si mi-am modificat aplicatia astfel incat sa lucreze si cu ferestre de dialog. Iata ceea ce a iesit pana acum:


504/581px  51.5KB

Modificat de zamfy (01-08-2012 13:43:59)



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Aug 01, 2012, 09:26 PM

                  Foarte bine pentru inceput, bravo. Pe masura ce lucrezi, ai sa fii tu insuti nemultumit de unele chestiuni, o sa-ti mai vina idei si ai sa-ti modifici aplicatia.
Cateva sugestii, asa la prima vedere:
1. La rubrica pentru acte, n-ar fi mai bine sa faci o lista derulanta cu tipul actelor exact din fisierul CP? si mai scrii data, numarul si autoritatea emitenta.
2. Nu e chiar totuna daca e BI sau CI; ar merge si aici o lista derulanta, de unde sa se aleaga ce trebuie.
3. La CNP exista un algoritm de verificare, l-ai implementat? Se poate verifica automat, si eventual care ar trebui sa fie cifra de control ca sa iasa bine. Ca se mai greseste, iar fisierul CP nu-ti spune daca e gresit CNP-ul când dai "validare" , doar daca deschizi exact fereastra cu numarul, si poti introduce linistit CNP-uri gresite fara sa stii. Algoritmul l-am gasit cu Google, daca crezi ca te ajuta pot incerca sa-ti dau codul scris in LISP.
4. La adresa, eu am liste derulante care se completeaza singure, partial; alegi judetul si se formeaza lista cu UAT-urile, alegi UAT-ul si se formeaza lista cu localitatile din UAT-ul respectiv, si asa nu mai pot gresi daca scriu aiurea vreun nume de localitate sa nu-mi gaseasca codurile SIRUES pe urma.

Si per total, poate ar fi mai bine sa fie pentru un numar nedefinit de proprietari, nu neaparat numai pentru unul sau doi. Eu am caseta pentru un singur proprietar, dar si un buton "adauga" care memoreaza ce am scris in caseta, sterge tot si asteapta alte date pentru urmatorul.

PAD-urile tale difera putin de cele standard dar contin toate informatiile necesare. Si eu lucrez pe formate mai mari, dar tot cam asa le fac - sa aiba toate informatiile.

Nu vorbesc ca sa ma aflu in treaba. Si mie mi-au facut observatii (pertinente sau nu) alti utilizatori si mi-au fost de folos. Sper sa-ti fie si tie.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: zamfy din Aug 02, 2012, 02:55 PM

                  Multumesc pentru sugestii. Acesta este doar inceputul si mai am destul de mult de lucru pana o finalizez cum trebuie. Mai am de lucru la modulul care incarca fotografiile, deoarece mai da rateuri uneori. Din intamplare, am mai descoperit la modulul care genereaza CP-ul ca daca o localitate nu are in componenta sa un sat cu acelasi nume, fisierul CP nu este generat corect, asa ca trebuie sa schimb iarasi algoritmul.
1.Programul detecteaza automat data si nr. actului din stringul respectiv, iar autoritatea emitenta era generata in functie de tipul actului. Totusi, "forteaza" utilizatorul sa introduca datele intr-un anumit format, ceea ce nici eu nu imi doresc prea tare. Cred ca voi lua in considerare varianta propusa de tine, ceea ce va duce la o standardizare mult mai puternica a programului.
2.La mine in program, utilizatorul, printr-un prompt, alegea daca e BI sau CI. Totusi, e mai bine sa setezi de la inceput chestia asta.
3.Am vazut mai demult chestia cu CNP-ul intr-un filmulet facut de tine si mi-a placut. Nu am implementat un algoritm de verificare. M-ar ajuta enorm daca mi-ai putea trimite acest algoritm scris in LISP. Adresa de e-mail este aceeasi. Daca nu o mai gasesti, iti trimit eu un mail.
4.Este o idee foarte buna sa "constrangi" utilizatorul sa nu bage aiurea vreun nume de localitate, dar sa "bagi" vreo 2500 de UAT-uri e o munca migaloasa, insa realizabila.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Aug 02, 2012, 03:32 PM

                  Nu e deloc migalos, poti genera automat lista su UAT-urile dintr-un judet. Pur si simplu le selectezi pe cele care au acelasi SIRUTA (sau SIRSP, nu mai retin acuma din cap), iar cel mai mic o sa fie al resedintei de comuna. Pun pariu ca nu stiai; ai fi observat si tu pana la urma, dar cine stie dupa cat timp. Acuma stii de la inceput.

Algoritmul s-ar putea sa il mai am listat pe o foaie; as prefera sa ti-l faci tu pe al tau exact asa cum vrei. Daca nu mai gasesc foaia, iti trimit codul sursa dar e scris cam imbricat, trebuie sa-l raschirez putin ca sa fie mai usor de inteles. Nu ca esti tu tare de cap, dar am observat ca algoritmii scrisi de altii se pricep mai greu.

O sa folosesc adresa de mail declarata de tine pe forum. Daca cumva folsesti alta, trimite-o pe privat dar cumva sa nu o recunoasca site-ul, ca o transforma si nu pot pune atasamente.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Atopor din Aug 03, 2012, 11:09 AM

                  Mai, oameni buni, nu puteti folosi alt site de sharing, pentru ca pe asta sunt virusi si nu pot descarca nimic. Si as vrea sa vad si eu ce faceti voi si, de ce nu, sa va ajut, daca pot.
Va multumesc.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: ciprian333 din Sep 29, 2012, 02:36 PM

                  Ma scuzati ca poate repet ceea ce sa mai scris pe forum, dar am nevoie rapid de un lisp care sa imi deseneze 3D in autocad punctele din ridicarea topo. Mentionez ca punctele sunt in fisier text pe care il atasaz mesajului.Daca se poate punctele sa fie si numerotate.  Multumesc anticipat.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: ciprian333 din Sep 29, 2012, 02:37 PM

                  Ma scuzati ca poate repet ceea ce sa mai scris pe forum, dar am nevoie rapid de un lisp care sa imi deseneze 3D in autocad punctele din ridicarea topo. Mentionez ca punctele sunt in fisier text pe care il atasaz mesajului.Daca se poate punctele sa fie si numerotate.  Multumesc anticipat. fisierul are extensia jpg trebuie schimbata txt deoarece nu pot ulpoad-a fisier text


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: ciprian333 din Sep 29, 2012, 02:39 PM

                  Ma scuzati ca poate repet ceea ce sa mai scris pe forum, dar am nevoie rapid de un lisp care sa imi deseneze 3D in autocad punctele din ridicarea topo. Mentionez ca punctele sunt in fisier text in formatul de mai jos.Daca se poate punctele sa fie si numerotate.  Multumesc anticipat.

1,716694.9346,367035.1215,152.5281,1687811.1303,3934389.9862,4712197.0190,47.560824846095,23.130772899802,LIM,CEP:0.053,SEP:0.085,STATUS:FIXED,SATS:11,PDOP:2.627,HDOP:1.334,VDOP:2.263,DATE:09-28-2011,TIME:17:45:45
2,716710.6582,367035.1554,153.3037,1687806.4374,3934379.8670,4712208.1257,47.560875737362,23.130771341525,CC,CEP:0.062,SEP:0.089,STATUS:FIXED,SATS:8,PDOP:2.355,HDOP:1.327,VDOP:1.946,DATE:09-28-2011,TIME:17:49:01
3,716692.0329,367047.1204,151.7333,1687822.7732,3934386.5351,4712194.6682,47.560816337188,23.130831006688,LIM,CEP:0.017,SEP:0.042,STATUS:FIXED,SATS:13,PDOP:1.521,HDOP:0.917,VDOP:1.213,DATE:09-28-2011,TIME:17:50:08
4,716697.4999,367047.7086,151.7783,1687821.6077,3934382.6423,4712198.3719,47.560834074005,23.130833240682,SAP,CEP:0.015,SEP:0.033,STATUS:FIXED,SATS:13,PDOP:1.808,HDOP:1.062,VDOP:1.464,DATE:09-28-2011,TIME:17:50:56
5,716716.7013,367068.0191,151.7647,1687834.1088,3934361.3913,4712211.5303,47.560897711994,23.130928958466,LIM,CEP:0.016,SEP:0.042,STATUS:FIXED,SATS:12,PDOP:1.576,HDOP:1.001,VDOP:1.218,DATE:09-28-2011,TIME:17:53:43
6,716715.5570,367074.4061,152.1100,1687840.3836,3934359.7580,4712211.1175,47.560894478267,23.130959844440,LIM,CEP:0.016,SEP:0.045,STATUS:FIXED,SATS:11,PDOP:2.102,HDOP:1.153,VDOP:1.757,DATE:09-28-2011,TIME:17:54:24



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Sep 30, 2012, 02:32 PM

                  Pune punctele intr-un fisier cu extensia CSV, deschide-le cu Excel, filtreaza-le ca sa iese ca un fisier de coordonate si le poti raporta cu orice program obisnuit de raportare, de exemplu TopoLT.
Daca Excel nu-ti separa textul pe coloane dupa virgulele in fisierul CSV, inseamna ca nu-ti recunoaste virgula ca "list sepaator" - setarea asta o rezolvi din Control Panel. Si gata, nu ai nevoie de nici un LISP.
Sau, daca ti se pare prea complicat trimite-mi mie fisierul tau si in 5 minute iti raportez punctele si iti trimit inapoi desenul. Te costa o bere cand treci prin Sibiu.
Si... bun venit pe forum !



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: Atopor din Oct 02, 2012, 10:28 AM

                  Sau in word converteste textul in tabel cu delimitator virgula si elimina coloanele ce nu trebuiesc, iar apoi transforma tabelul in text cu ce delimitator vrei. Pentru raportare gasesti si pe forum mai multe exemple. Unul e topolt.


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: raptor din Noi 10, 2012, 10:55 PM

                  ciprian333 din ce vad ei modelul de fisier care l-ai prezentat se aseamana cu caietul de teren scos din padul unui aparat GPS SOUTH - daca e corect ai in pad la meniul import / export obtiunea de a exporta un fisier text in care sunt prezentate pe coloane numele punctului - coordonata X - coordonata Y - cota punctului - Z si descrierea punctului (cod ) -

asta e varianta cea mai scurta ca timp - daca nu  ar trebui sa urmezi sfatul lui John Doe care te va costa cateva minute  in plus la fiecare job separat 

 



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: bianca.cad din Oct 14, 2013, 11:28 PM

                  Buna.
are cineva lispuri care ruleaza in Progecad?


_______________________________________
www.facebook.com/dMine.poezii/


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Oct 15, 2013, 12:42 PM

                  Sunt niste aplicatii postate aici in format LSP, poti sa vezi daca functioneaza, asa ca idee; cele simple ar trebui sa functioneze.
Pentru ProgeCAD trebuie scrise cam de la inceput, daca vrei ceva anume se poate rezolva dar nu va fi gratis daca ti le scriu eu.



               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: mcozmoiu din Aug 22, 2017, 11:40 PM

                  ma poate ajuta cineva cu un program care fabrica carnetul de teren introducand coordonatele punctelor?


               
Titlu: Re: Scripturi in LISP AutoLISP
Scris de: John Doe din Aug 23, 2017, 01:18 AM

                  Ce vrei sa contina carnetul de teren? Cred ca am postat undeva un utilitar "Carnet.lsp" care iti cere sa selectezi polilinia in cauza, punctul de statie si cel de orientare si face un carnet de teren. E facut pentru incadrarile in tarla.