De Nae BITOAICA
Ca sa pastram tonul acestui numar, vom prezenta si în zona de practica o aplicatie din domeniu si anume un program de trasare a unui contur (incinta, perimetru de cladire etc.) cu inserarea automata în desen a licentei punctului, a numelui întreprinderii si a numelui incintei. Toate aceste date sunt citite dintr-un fisier extern de date, în format ascii, usor de creat si de întretinut. La încheierea desenarii, valoarea ariei incintei este scrisa automat în fisierul de date. De fapt 80% din munca de trasare a incintei (vom folosi acest termen în continuare) o constituie crearea fisierului de date. Programul functioneaza ca aplicatie AutoCAD R12 pe ambele platforme, Dos si Windows. Vom insista mai mult pe modul de lucru cu programul si mai putin pe descrierea programului.
Se copiaza fisierul "map.lsp’’ în directorul C:\LSP care trebuie sa existe în variabila ACAD (despre care am vorbit în numarul 1 al revistei - pag.53)
1. Crearea fisierului de date
Cu un editor de text (ascii) se creaza fisierul "nume.DAT", unde "nume" este numele incintei ce se deseneaza.
Structura fisierului este (obligatoriu):
nume intreprindere nume incinta licenta,coordonata_X,coordonata_YATENTIE: Numele întreprinderii si numele incintei se scriu indentat cu un blanc.
Coordonatele vor avea doua zecimale, separatorul zecimal fiind "punct", cele trei câmpuri (licenta si cele doua coordonate) fiind separate prin virgula. Fisierul nu trebuie sa contina rânduri goale la sfârsit.
Exemplu de fisier .dat pregatit pentru lucru:
SC AVICOLA SA Gospodarie de apa 899,13285.76,11400.03 900,13281.39,11419.14 889,13281.53,11428.82 888,13276.01,11430.45 890,13268.39,11419.32
2. se salveaza fisierul si se paraseste editorul.
3. din acelasi subdirector în care s-a creat fisierul de date se lanseaza AutoCAD-ul (de DOS); pentru lucru cu versiunea de Windows, se seteaza variabila "Working directory" (din "Properties") cu calea unde se afla fisierul de date, dupa care se porneste AutoCAD-ul.
4. se începe un desen nou: din menu-ul "File/New", dând acelasi nume cu al fisierului de date, fara extensie (Exemplu: i2).
5. se încarca programul map cu comanda:
Command: (load "map")
6. odata intrat in "Editorul grafic" dati comanda "map" pe prompterul "Command:", care porneste programul. Dialogul de trasare a incintei începe prin indicarea fisierului de date:
La "Fisierul de date:" se raspunde cu <OK> daca sunteti de acord cu numele propus implicit, (cel al desenului curent), sau se indica un alt nume de fisier (fara extensie)
Dialogul continua cu:
Ordinea coordonatelor pe desen (X,Y sau Y,X) <Y,X>: unde se indica ordinea lor (implicit Y,X) separate prin virgula
Punem licentele ? <Y/N><Y>:
De aici programul se bifurca pentru doua tipuri de activitati:
A. trasarea incintelor separate (format A4) (daca raspunsul la întrebare este Y):
B. Trasarea planului de situatie a întregii întreprinderi, (daca raspunsul la întrebare este N):
Continuam cu varianta A (cu licente):
Schimbati inaltimea licentei ? <Y/N><N>:
Când înaltimea licentei este prea mare, aceasta se poate modifica (fata de ce se propune ca înaltime curenta);
Urmeaza trasarea conturului, apoi "plantarea" licentelor
10. se "planteaza" prima licenta, indicând punctul de inserare al textului, astfel:
Alta marire (magnification) ? <Y/N><N>: se raspunde cu "Y", daca se doreste schimbarea doar a încadrarii desenului pe ecran (si NU schimbarea înaltimii textului), indicându-se o valoare mai mare decât cea afisata (în zona de dialog) la "Valoarea curenta:". Daca nu, NU.
Se continua "plantarea" tuturor licentelor în mod "Text" sau "Leader" (stare afisata în zona de dialog), dupa cum este cazul (si dorinta).
La "Punct inserare arie (right): " se indica locul unde va fi scrisa aria incintei.
La "Punct inserare titlu (center): " se indica locul unde se va scrie titlul (ATENTIE: textul este selectat pe optiunea "Center"; daca doriti altfel trebuie sa modificati sursa map.lsp).
La "Scriem aria in fisierul .DAT ? <Y/N><Y>: ", se da raspunsul dorit.
Se fac eventualele corecturi asupra desenului (pozitii ale entitatilor).
Se da comanda "PLOT" pentru listare, cu optiunea "Extents". Idea este de a crea un desen A4, scalat astfel încât sa umple formatul, desen ce intra în mapa de documente scrise ale unui proiect; desenul DWG obtinut este însa la scara 1:1 si poate fi apoi plotat la orice scara.
Se paraseste "Editorul de desenare" (cu "QUIT" sau "END" dupa caz).
NOTE:
copy *.plt /b lpt1
B. Trasarea planului de situatie a întregii întreprinderi
Dialogul este urmatorul:
Punem licentele ? <Y/N><Y>: n
Cod culoare: 1 - se indica o culoare (Exemplu: 1 -> rosu)
Area = 363.00, Perimeter = 95.86
Numar pozitie incinta: - se indica (eventual) acelasi numar cu numarul obiectului, sau un numar oarecare de identificare.
Punct inserare Text... - se indica locul unde se scrie numarul obiectului.
Punct inserare arie (right): @ - se indica (eventual) acelasi punct cu cel precedent (se da @); textul ariei este scris pe desen în layer-ul "Aria", care este apoi înghetat automat)
Scriem aria in fisierul .DAT ? <Y/N><N>: - se indica dupa dorinta (da, în cazul în care nu se mai fac desenele individuale - vezi varianta A - si nu în celelalte cazuri).
Se continua procedura de inserare (pe acelasi desen) a tuturor incintelor ce compun ansamblul desenului. Se salveaza si se ploteaza desenul.
Sursa completa a programului o gasiti în BBS (vezi pag. 8). Vom discuta acum, cât spatiul ne-o va permite, câteva detalii despre program.
Subrutina de depistare a separatorului search$ permite folosirea în fisierul de date a oricarui separator, nu numai virgula cum am dat exemplu la începutul articolului. Functia are ca parametrii de intrare linia citita din fisierul de date lin (care se atribuie lui st:1) si tipul separatorului st:2. Subrutina returneaza o lista cu n+1 elemente, de tip sir (string), unde n este numarul de separatori depistati. Daca aveti fisiere cu alt tip de separator, schimbati în linia de apelare a subrutinei (search$ lin ",") virgula cu separatorul propriu.
Subrutina de inversare a coordonatelor r=lst. Aceasta ofera posibilitatea lucrului cu doua sisteme de coordonate: Stereo33, sau Stereo70. Indiferent de sistemul de coordonate folosit la culegerea datelor din teren, în fisierul de date se trec valorile reale pentru X si Y.
Subrutina de înscriere a licentelor reciteste liniile din fisierul de date, (setq lin (read-line fr)), le sare pe acelea care încep cu blanc (titluri), verifica ordinea coordonatelor (variabila a:sw), dupa care deseneza un punct (command "point" p:ct), rosu (setq "color" 1) în fiecare vertex al poliliniei unde urmeaza sa se puna o licenta de tip LEADER (implicit), sau TEXT când se apasa butonul din dreapta al mouse-ului, actiune depistata de (if (= (type p:ctmp) nil)).