Actualizarea datelor de atribut din fișierele csv

Utilizarea comenzii de export a datelor AutoCAD. care se află în meniul Instrumente, puteți extrage datele de atribut într-un fișier de calcul tabelar Excel sau într-o tabelă situată în desen. Utilizând această funcție, mulți vor găsi o idee bună să editați atributul direct în foaia de calcul, dar că atributele modificate sunt afișate în desen, trebuie să renunțați la export.

Acest articol descrie un exemplu de astfel de subrutină. Se compune din două fișiere (ATTRIBUTE-TABLE-UPDATE.LSP și ATTRIBUTE-TABLE-UPDATE.DCL). și vă permite să exportați anumite blocuri (în cazul nostru senzori de alarmă de incendiu) împreună cu atributele lor și coordonatele x-y unui fișier în format CSV (un fișier text cu date separate prin virgule), care este convenabil pentru deschiderea în Excel. De asemenea, programul vă permite să modificați atributele și să ștergeți obiectele inserate în desen, dacă acestea nu sunt prezente în fișierul CSV.

Fig. 1. Selectarea opțiunii Export / Import.

Descărcați subrutina de aici. Dezarhivați și salvați fișierul în dosarul Suport din directorul în care este instalat AutoCAD. Folosind comanda Load Application din meniul Tools, selectați fișierul ATTRIBUTE-TABLE-UPDATE.LSP și încărcați-l.

Pentru a porni o subrutină, tastați ATU pe linia de comandă și apoi veți vedea un meniu contextual cu opțiunea de a selecta o opțiune. Există două opțiuni - Export (implicit) și Import (Figura 1).

Dacă selectați Export. va fi afișată caseta de dialog Fișier de rezultate. Veți fi întrebat numărul de cameră în care senzorii de alarmă vă interesează (a se vedea figura 2). Specificați numele fișierului.

Actualizarea datelor de atribut din fișierele csv

Fig. 2. Caseta de dialog File de rezultate

Fișierul cu rezultate de export va avea o extensie CSV și poate fi deschis în Notepad sau Excel. Figura 3 arată un fișier deschis într-o foaie de calcul Excel. Puteți efectua modificări în coloana ADDRESS1 și puteți șterge unul sau mai multe rânduri, dacă este necesar, dacă modificările corespunzătoare vor fi efectuate în desen.

Fig. 3. foaia de calcul EXCEL.

După ce faceți toate modificările și salvați fișierul în format CSV, puteți rula din nou subrutina noastră din AutoCAD. tastând ATU pe linia de comandă, doar selectați acum opțiunea Import din cererea inițială a programului. Apare caseta de dialog Import fișier, unde trebuie să selectați fișierul CSV care conține modificările pe care doriți să le faceți în desen.

Actualizarea datelor de atribut din fișierele csv

Fig. 4. Caseta de dialog Import fișier.

După selectarea fișierului pentru import, se vor efectua modificări în desen și se va afișa caseta de dialog Modificări adresă (Figura 5). Faceți clic pe OK pentru a șterge caseta de dialog și a verifica desenul, dacă toate modificările sunt corecte. Rețineți că puteți afișa caseta de dialog Modificări adresă oricând în sesiunea de desen curent, introducând linia de comandă (Afișați modificările).

Actualizarea datelor de atribut din fișierele csv

Fig. 5. Caseta de dialog Modificări adresă.


Descrierea codului subrutinei

După ce a început caracteristicile mele standard de tratare a erorilor și a variabilelor de sistem de control, programul activează funcția ATT-DATA-OUT, care determină opțiunea de export și de import, și determină caracteristica GETBLKS, PRINT-OUT, și DO-IMPORT, în funcție de ce Selectați - exportați sau importați un fișier CSV.

GETBLKS creează o listă a tuturor obiectelor introduse de comanda INSERT care trebuie procesate. În exemplul nostru am hardcoded numele blocului „FA_DEVICE_INIT“ (alarmă de incendiu). O puteți schimba numele blocului la care doriți să lucreze în două din declarația IF în cod, care este prezentat mai jos:

(dacă (și (= ((vla-get-HasAttributes blkobj): vlax-true)
(> (strlen bobjname) 13)
(= (substr bobjname 1 14) "FA_DEVICE_INIT")
), sfârșitul și
(progn
(setq inspt (vla-get-InsertionPoint blkobj))
(setq ipt (vlax-safearray-> lista (vlax-varianta-valoare inspt)))
(setq attribs (vla-getAttributes blkobj))
(setq sarr (vlax-varianta-valoare attribs))
(setq num (vlax-safearray-get-u-legat sarr 1))
(dacă (și (> num 0)
(<(car ipt) 3000.0)
)

În exemplul nostru, a doua și a treia linie au stabilit parametrii pentru includerea blocurilor inserate. Conform logicii programului, acest lucru se întâmplă dacă numele blocului este mai mare de 13 caractere, iar primele 14 caractere sunt FA_DEVICE_INIT. Puteți schimba acest lucru pentru ca programul să proceseze blocurile dvs. În penultima linie de cod arătat că indică faptul că trebuie să ia în considerare numai unitatea de inserție, în cazul în care punctul de inserare este mai mică de 3.000 „, în direcția axei X. Puteți schimba, de asemenea, în funcție de criteriile dumneavoastră.

Următoarea funcție, PRINT-OUT, se referă la mai multe atribute specifice - Adresa1 și DEVICE_LOCATION - le puteți schimba la blocul atributele în codul funcției de segment PRINT-OUT, care este prezentat mai jos:

(linia de scriere "ADDRESS1, Name, Device_Location, floor, X, Y" f1)
(repetare (lungime blklst)
(setql (nth (setq i (1 + i)) blkstst))
(Setq str (strcat (cadr (Assoc "Adresa1" (nth 1 LST)))
""
(mașină lst)
""
(cadr (asoc "DEVICE_LOCATION" (n. 1 lst)))
""
(podea itoa)
""
(rtos (mașină (ultima lst)))
""
(rtos (cadr (ultima lst)))
); sfarsitul lui strcat
); _ sfârșitul setq
(linia de scriere str f1)
); - sfârșitul repetării

Funcția DO-IMPORT deschide destinat să importe CSV fișier și determină sistemul funcției DO-ADRESA pentru a prelua fișierul, returnează o listă de puncte de unități de inserare și o listă de modificări care urmează să fie afișate în caseta de dialog Address modificări. Dacă doriți să configurați această parte a codului pentru nevoile dvs., trebuie să aderați la structura de fișier CSV așa cum se arată în Fig. 3, ținând seama de următoarele criterii:

Primul câmp este valoarea atributului care poate fi modificată (ADDRESS1 în acest program).
Al doilea câmp este numele blocului care trebuie inserat.
Al treilea câmp este valoarea celui de-al doilea atribut, echivalent cu DEVICE_LOCATION.
Al patrulea câmp este numărul camerei.
Ultimele două câmpuri sunt coordonatele X și Y ale punctului de inserare al blocului.

Numele de atribute menționate mai sus sunt prezente și în ultimele două funcții descrise și trebuie modificate dacă este necesar.

Link-uri conexe