Scripturi in LISP AutoLISP

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

« precedentul - următorul »

toporas


                  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!



               

John Doe


                  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



               

John Doe


                  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



               

toporas


                  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?


               

John Doe


                  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.



               

toporas


                  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.



               

diagodose2009


                  S-a mutat


334/580px  18.1KB

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


_______________________________________
http://we.tl/D8HOKFyTJ7" target="_blank">http://we.tl/D8HOKFyTJ7


               

79


                  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.

 http://www.3xforum.ro/img/smilies/hi.png">



               

John Doe


                  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...



               

John Doe


                  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.



               

advex


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

http://www.imagehost.ro/pict/050949254b6bcd85a6b52.gif" alt="" border="0" align="top">


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


_______________________________________
http://info-topograf.blogspot.ro/" target="_blank">http://info-topograf.blogspot.ro/


               

John Doe


                  Misto chestia.


               

John Doe


                  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" )



               

John Doe


                  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



               

adrianmonea


                  
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?