Lisp preluare date din AECC POINT

Creat de capu', Ian 20, 2015, 11:49 PM

« precedentul - următorul »

capu'

Salut

Urmaresc cu interes postarile tuturor, am citit cam ce scrie si ce a reusit fiecare. Personal nu ma laud cu mari performante. Am reusit realizarea unui program lisp care stie sa faca PAD-ul, scrie coordonatele punctelor de contur dand click pe colturile poligonului, calculeaza suprafata, etc.. Nu am reusit sa preiau coordonatele din baza de date a Autocadului Land, sau mai nou din Civil 3D. Ma poate ajuta cineva ori cu o secventa de cod in acest sens sau cu niste link-uri utile ?

Multumesc anticipat pentru orice informatie.

Modificat de capu' (20-01-2015 21:50:06)

John Doe

Nu inteleg, detaliaza putin si vedem. Despre ce baza de date vorbim si care AutoCAD Land?

capu'

Autocad Land 2004 de exemplu. Autocad Land face raportari de puncte din diverse fisiere text, ascii, etc., iar punctele raportate se prezinta in fisierul .dwg sub forma unor entitati care cuprind mai multe date. aceste sunt printre altele: semnul convențional pentru punct (cerculeț, cruce, etc.), numărul punctului, cota punctului, codul punctului, etc.. Aceste atribute pot fi activate si dezactivate dintr-un meniu separat asemănător layer-elor. Acum, aceste puncte sunt stacate intro bază de date externă. Eu vreau sa fac o rutină care să citească aceste date (coordonate, spre exemplu) din baza de date a Autocadului și apoi să creeze calculul suprafeței.  Bineinteles, trebuie să citească datele doar la punctele selectate și în ordinea în care au fost selectate, pentru că o parcelă poate avea ca și colțuri punctele 1, 7, 215 și 53 de exemplu.
În Autocad Civil 3D 2014, această bază de date cred că este inclusă direct în fișierul .dwg. Punctele raportate cu Civil 3D au mult mai multe atribute; pe mine mă interesează doar coordonatele. Sper că m-am făcut înțeles.

Mulțumesc.

John Doe

Nu cunosc AutoCAD Land dar inteleg ce vrei sa spui. Daca vrei doar coordonatele, de ce le vrei fix pe alea extrase din baza de date, nu sunt aceleasi cu cele grafice? iar pe astea ar trebui sa le poti determina destul de usor.

capu'

Păi îți explic de ce. Un punct de acest fel, ori de câte ori este copiat în desen, el va avea de fapt aceleași coordonate cu care a fost raportat în desen inițial. Ceea ce zici tu (să preiau coordonatele grafice) am reușit deja, dar este "peste mână". În codul sursă al programului folosesc preluarea coordonatelor punctului unde se dă click cu mouse-ul, adică un fel de ID. Am ataşat un fişier cu astfel de puncte. Numai că tu nu vei putea da listarea tuturor punctelor întrun tabel sau in excel decât dacă dai recover de puncte în Autocad Land şi atunci se recreează baza de date cu puncte. Vreau să fac acest program pentru a genera mult mai rapid calculul suprafeţelor şi mai exact, întrucât cand dai click cu mouse-ul poţi să dai pe lângă punct şi iese altceva. Dacă le selectezi şi creează lispul tabelul e altceva. O altă problemă pe care o am este folosirea comenzii COPY în lisp, în sensul că nu reuşesc să copiez decăt un singur obiect. Tu cu ce program lucrezi ?
http://www.fileshare.ro/e31236811" target="_blank">http://www.fileshare.ro/e31236811

John Doe

N-as putea sa-mi sustin mai departe punctul de vedere, n-am lucrat cu AutoCAD Land deci ma abtin. S-ar putea sa fie cum zici tu, nu stiu.

Nu toate comenzile raspund la fel in LISP si la linia de comanda, de exemplu trebuie sa scrii spatiu intre doua elemente in LISP, iar sistemul ti-l ia ca ENTER si termina comanda.
Incearca sa folosesti multimi de selectie, adica:
(setq msel (ssadd)) - creezi o multime de selectie nula
(setq msel (ssadd msel (select "Selectati un obiect:" )) - adaugi un obiect, cu selectie manuala sau prin alta metoda, de exemplu ENTLAST.

Sper sa nu fi gresit sintaxa ca am scris din cap, verifica si tu in surse autorizate...

Mai poti incerca ceva:
(entget (car (entsel))) si ENTER, selectezi o polilinie , apesi F2 si vezi ce-ti da. Eu asa lucrez.

Pentru sursele LSP lucrez cu Notepad++, pentru compilare Visual Lisp de sub AutoCAD 2007.

capu'

Şi eu la fel. Ma refeream în loc de Autocad Land cu ce program lucrezi ?

John Doe

Pentru GIS folosesc AutoCAD Map 3D 2012, iar pentru LISP AutoCAD 2007.