Scripturi in LISP AutoLISP

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

« precedentul - următorul »

kod


                  jos palaria, no comment ! http://www.3xforum.ro/img/smilies/nod.png">


               

kod


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

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



               

John Doe


                  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?



               

kod


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

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



               

John Doe


                  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.



               

Marian


                  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)



               

kod


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

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

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

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



               

John Doe


                  @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 !



               

Marian


                  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.


               

John Doe


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


               

Marian


                  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.


               

John Doe


                  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 ?



               

Marian


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


               

sharkymatei


                  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)



               

kod


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