Scripturi in LISP AutoLISP

Creat de Admin, Iun 19, 2006, 12:16 AM

« precedentul - următorul »

Atopor


                  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!



               

John Doe


                  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.



               

zamfy


                  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" target="_blank">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).



               

cristi_gav


                  Cred ca ar fi ok. Multumesc!


               

John Doe


                  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.



               

raptor


                  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 http://www.3xforum.ro/img/smilies/smile.png">



               

John Doe


                  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.


               

zamfy


                  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" target="_blank">http://www.fileshare.ro/30270276645
http://www.fileshare.ro/30270301250" target="_blank">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 http://www.3xforum.ro/img/smilies/smile.png"> ) 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!



               

DanCad


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


               

John Doe


                  @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



               

John Doe


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


507/308px  27.8KB



               

John Doe


                  si pâna clipesti din ochi a facut fisierul:


582/412px  44.5KB



               

John Doe


                  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.



               

zamfy


                  
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!



               

John Doe


                  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.