Se încarcă coordonatele în AutoCAD din txt. Importarea coordonatelor dintr-un fișier text într-un desen nanoCAD utilizând API-ul clasic .NET. Crearea și implementarea unui proiect de lucru

Una dintre cele mai populare întrebări despre programarea pentru nanoCAD este „Cum pot importa puncte dintr-un fișier text?” Aceasta nu este o sarcină dificilă, dar un designer profesionist nu trebuie să fie un programator profesionist, așa că am scris acest articol într-un stil „pentru începători”.

Puteți importa coordonatele într-un desen folosind oricare dintre tipurile de API existente în nanoCAD. Am decis să alegem .NET și să comparăm două API-uri similare: clasicul .NET API și platforma cross-CAD MultiCAD.NET API. Sub tăietură se află prima parte - importarea punctelor folosind API-ul .NET clasic.

Dat: fișier text cu coordonatele X, Y, Z ale punctelor, un punct pe linie. Coordonatele sunt separate printr-un spațiu, separatorul fracțional este un punct.

Necesar: scrieți o aplicație care, folosind comanda IMPORTCOORDS, solicită un nume de fișier și importă coordonatele găsite în spațiul de desen curent sub forma obiectelor DatabaseServices.DBPoint. Coordonatele obiectului trebuie importate în sistemul de coordonate utilizator (UCS) curent al desenului.

Crearea și implementarea unui proiect de lucru
Pentru a crea aplicația vom avea nevoie de următoarele instrumente:
  • nanoCAD (versiunea nu mai mică de 3.5)
  • Microsoft Visual Studio 2008 (nanoCAD 3.5 - nanoCAD 5.0 ​​acceptă încărcarea aplicațiilor .NET construite pe .NET Framework 3.5).
Și, desigur, se presupune că știi măcar puțină programare în C#. Dacă nu, bine ați venit la biblioteca MSDN.

Creați un nou proiect în Visual Studio cu următoarele setări:

  • Tip proiect: Visual C#
  • Șablon: Biblioteca de clasă
Astfel, aplicația noastră este un ansamblu obișnuit .NET (DLL), care va fi ulterior încărcat în nanoCAD.
În fila Referințe conectăm următoarele biblioteci incluse în kitul nanoCAD:
  • hostdbmgd.dll
  • hostmgd.dll
Acum puteți trece în siguranță la scrierea programului în sine.
Structura programului
Implementarea poate fi împărțită în următorii pași:
  1. Înregistrați comanda IMPORTCOORDS.
  2. Obțineți baza de date actuală a desenelor și editorul de linie de comandă.
  3. Solicitați numele fișierului cu coordonatele.
  4. Deschideți fișierul, citiți liniile cu coordonatele.
  5. Creați obiecte DBPoint cu coordonate individuale. Convertiți coordonatele lor în sistemul de coordonate curent al utilizatorului.
  6. Adăugați obiectele create în spațiul de desen curent (Spațiu model sau Spațiu hârtie).
Pentru a înregistra o comandă care va apela aplicația noastră în nanoCAD, înainte de a defini metoda care va fi apelată de această comandă, trebuie să declarăm un atribut și să specificăm numele comenzii. Vă rugăm să rețineți că metoda trebuie să aibă modificatorul public:

Public void importCoords() ( ... )
Înainte de a continua, aș dori să mă opresc și să vă spun pe scurt ce este o „bază de date de desene”. Un fișier .dwg este o bază de date care are o structură strictă, ale cărei elemente principale sunt tabele (Symbol Tables), care conțin toate obiectele desenului. Acestea nu sunt doar obiectele grafice pe care le vedem în desen (linii drepte, arce, puncte etc.), ci și multe alte obiecte care determină conținutul și setările desenului. De exemplu, Tabelul de straturi conține toate straturile care se află în desen, Tabelul Tip Linie stochează toate stilurile de linii definite în desen, Tabelul UCS stochează toate sistemele de coordonate create de utilizator pentru un desen dat etc. Astfel, creând un un nou obiect de desen înseamnă crearea unui obiect de bază de date corespunzător.

Deci hai sa continuam. În primul rând, trebuie să-l selectăm pe cel curent din toate documentele deschise și să-i deschidem baza de date. Pentru a face acest lucru, obținem un manager de obiecte al tuturor documentelor deschise și apoi, cu ajutorul acestuia, o bază de date cu care vom continua să lucrăm.

DocumentCollection dm = Application.DocumentManager; Baza de date db = dm.MdiActiveDocument.Database;
Pentru ca aplicația noastră să solicite un nume de fișier, trebuie să obținem un obiect Editor și să apelăm o metodă care solicită intrarea utilizatorului de un anumit tip (în cazul nostru, numele fișierului):

// Obțineți editorul de linie de comandă Editor ed = dm.MdiActiveDocument.Editor; // Obiect pentru primirea rezultatului cererii PromptFileNameResult sourceFileName; // Afișează cererea în linia de comandă și obține rezultatul sourceFileName = ed.GetFileNameForOpen("\nIntroduceți numele fișierului de coordonate de importat:"); if (sourceFileName.Status == PromptStatus.OK) ( ... )
Obținerea coordonatelor dintr-un fișier este destul de simplă, folosind funcționalitatea C# pentru citirea fișierelor text și lucrul cu tipuri de date șir:

// Citiți fișierul, obțineți conținutul ca o matrice de șiruri de caractere string lines = File.ReadAllLines(sourceFileName.StringResult); // Pentru fiecare linie, scrieți o matrice de subșiruri separate printr-un spațiu (deoarece, conform problemei, caracterul spațiu acționează ca un separator de coordonate). // Astfel obținem o matrice de coordonate, doar sub formă de text, apoi le convertim în numere duble. coordonata șir; foreach (șir s în linii) ( coord = s.Split(new char ( " " )); double coordX = Convert.ToDouble(coord); double coordY = Convert.ToDouble(coord); double coordZ = Convert.ToDouble(coord); )
Să trecem la crearea de primitive grafice (Entities). După cum sa menționat mai sus, pentru a crea orice obiect (nu doar grafic) care va fi stocat într-un desen, acesta trebuie adăugat la baza de date a desenelor, și anume la obiectul container corespunzător. Deci, de exemplu, toate straturile sunt stocate ca intrări în tabelul de straturi, care în acest caz este un obiect container pentru ele. Structura generală a bazei de date este următoarea:

Primitivele grafice sunt stocate în baza de date nu direct, ci în structura blocurilor individuale, care la rândul lor sunt intrări în tabelul de blocuri. Acest lucru este foarte convenabil deoarece acest mecanism vă permite să grupați cu ușurință obiectele în blocuri numite și să le gestionați ca un întreg. Apropo, spațiul model și spațiul foii din baza de date sunt reprezentate și de blocuri separate. Astfel, pentru o primitivă grafică, containerul va fi un bloc separat, care, la rândul său, va aparține obiectului părinte - tabelul de blocuri.

Deoarece lucrăm cu o bază de date, este necesar să asigurăm integritatea și protecția acesteia în cazul în care apare vreo eroare în timpul execuției programului. În acest scop este utilizat un mecanism de tranzacție. Tranzacțiile combină o serie de operațiuni care sunt efectuate în ansamblu: dacă ceva nu merge bine, tranzacția este anulată, iar obiectele create ca parte a acestei tranzacții nu vor fi adăugate în document. Dacă toate operațiunile sunt finalizate cu succes, atunci tranzacția este confirmată și obiectele sunt adăugate în baza de date.

Înarmați cu aceste cunoștințe, putem adăuga în siguranță primitive „punct” în spațiul de desen curent în funcție de coordonatele pe care le citim din fișier.

Folosind (Transaction tr = db.TransactionManager.StartTransaction()) ( // Puteți face fără tabelul bloc și obțineți blocul spațiului de desen curent direct din obiectul care reprezintă baza de date BlockTableRecord btr = (BlockTableRecord)tr.GetObject(db .CurrentSpaceId, OpenMode string lines = File.ReadAllLines(sourceFileName.StringResult); string coord; ToDouble(coord); Dispune(); tr.Commit();
Problema este practic rezolvată. Mai rămâne de îndeplinit o singură condiție: primitivele punctului trebuie create în coordonatele sistemului de coordonate utilizator (UCS). Trebuie remarcat faptul că primitivele sunt stocate în baza de date a desenelor în Sistemul de coordonate mondial (WCS). Prin urmare, la crearea primitivelor, este necesar să se efectueze transformarea: UCS->WCS. Acest lucru se face folosind o matrice personalizată a sistemului de coordonate:

Matrix3d ​​​​ucsMatrix = ed.CurrentUserCoordinateSystem;
Să adăugăm o transformare:

( ... punct.TransformBy(ucsMatrix.Inverse()); ... )
Deci, programul este complet scris. Ce urmeaza?

Încărcarea aplicației în nanoCAD
Cea mai plăcută parte rămâne - descărcați programul în nanoCAD și admirați rezultatele muncii dvs. După cum vă amintiți, am creat proiectul de lucru ca o bibliotecă de clasă, astfel încât după compilarea cu succes, va fi construit un ansamblu cu numele proiectului dumneavoastră. Deschideți nanoCAD, scrieți comanda NETLOAD pe linia de comandă, selectați biblioteca construită din listă și încărcați-o. Pentru a rula programul, introduceți pur și simplu numele comenzii IMPORTCOORDS la promptul de comandă.
Importați coordonatele. Versiunea 2.0
Vom îmbunătăți prima versiune a aplicației prin adăugarea mai multor funcții utile și elemente de interfață cu utilizatorul.

Dacă prima versiune a aplicației „înțelegea” un fișier text în care coordonatele erau separate doar prin spații și era folosit un punct ca separator zecimal, acum aplicația va putea „recunoaște” coordonatele separate printr-o tabulatură, spațiu sau punct și virgulă . În ceea ce privește separatorul zecimal, acesta poate fi acum fie un punct, fie o virgulă. Comanda IMPORTCOORDS va deschide acum un dialog de importare a coordonatelor modale, în care utilizatorul poate selecta un fișier și poate specifica setările de import de coordonate dorite.

Mecanismul general de importare a coordonatelor și de creare a primitivelor rămâne practic neschimbat, dar acum acest lucru se va întâmpla în cadrul clasei de formulare, iar sarcina metodei de gestionare a comenzilor IMPORTCOORDS se reduce acum doar la crearea unui obiect formular și afișarea formularului pe ecran în forma unui dialog modal:

Public void importCoords() (Formular formular = nou ImportForm(); HostMgd.ApplicationServices.Application.ShowModalDialog(form); )
După care controlul va fi transferat în fereastra formularului de import de coordonate.

Formular
Formularul de cerere include următoarele elemente:
  • Buton pentru a deschide un fișier
  • Dialog de deschidere a fișierului
  • Un grup de casete de selectare pentru selectarea caracterelor separatoare de coordonate: tab, spațiu, punct și virgulă
  • Câmp text pentru previzualizarea analizei șirurilor de caractere cu coordonate
  • Buton pentru a importa coordonatele
  • butonul Anulare
Folosind aceste controale, utilizatorul poate specifica acum caracterele de separare dorite, poate verifica rezultatul în câmpul de previzualizare (la fel ca ceea ce se face în MS Excel la importul unui fișier text) și poate iniția importul de coordonate:

Compatibil AutoCAD
În concluzie, aș dori să observ că o aplicație scrisă pentru nanoCAD poate fi ușor recompilată pentru a funcționa în AutoCAD. Pentru a face acest lucru, trebuie să faceți următoarele:
  • În fila Referințe, conectați următoarele biblioteci incluse în ObjectARX:
    • AcCoreMgd.dll
    • AcDbMgd.dll
    • AcMgd.dll
  • Adăugați o directivă de compilare condiționată la codul aplicației pentru a defini spațiile de nume care vor fi utilizate pentru compilare în nanoCAD sau AutoCAD:
    #if ACAD folosind Autodesk.AutoCAD.ApplicationServices; folosind Autodesk.AutoCAD.DatabaseServices; folosind Autodesk.AutoCAD.EditorInput; folosind Autodesk.AutoCAD.Geometry; folosind Autodesk.AutoCAD.Runtime; folosind Platforma = Autodesk.AutoCAD; folosind PlatformDb = Autodesk.AutoCAD; #else folosind HostMgd.ApplicationServices; folosind HostMgd.EditorInput; folosind Teigha.DatabaseServices; folosind Teigha.Geometrie; folosind Teigha.Runtime; folosind Platforma = HostMgd; folosind PlatformDb = Teigha; #endif
  • Înlocuiți spațiile de nume specifice platformei din codul dvs. cu aliasurile definite mai sus: Platformă și PlatformDb.
Ambele versiuni ale proiectului sunt disponibile

Vă prezentăm atenției aplicații suplimentare pentru conectarea la software-ul AutoCAD.

Toate aplicațiile sunt distribuite gratuit

1. Geo_Tools - un set de instrumente pentru topografi și topografi, funcționează ca un add-on pentru AutoCAD (începând cu AutoCAD 2008).

La instalarea instrumentelor, paleta standard de instrumente AutoCAD este înlocuită cu paletele geo_tools, care ar trebui să fie luate în considerare de cei care au umplut paleta cu propriile instrumente sau o folosesc pe cea standard. Începând cu versiunea 2014.05.11, 21-47 nu înlocuiește, ci se adaugă la paletele standard.

Dacă nu vă place setul Geo_Tools după ștergerea acestuia, toate modificările vor reveni la cea standard pentru AutoCAD. Barele de instrumente și panglica geo_tools nu sunt atinse.

Puteți descărca versiunea 2015.07 de la linkul Asistență adăugată pentru AutoCAD 2016.

Puteți descărca versiunea 2016.10 din linkul de asistență adăugată pentru AutoCAD 2017.

Puteți descărca versiunea 2017.10 din link. A fost adăugată posibilitatea de a specifica un strat de import de puncte și de a insera blocuri pe puncte conform descrierii.

Instructiuni de instalare:

1. Despachetați și plasați datele descărcate în folderul " C :\Fișiere de program\geo_tools\ "

(notă: pentru AutoCAD 2014-2016, acest folder trebuie adăugat la sursele de încredere: introduceți _Opțiuni în consolă, în secțiune Fișiere -> Locații de încredere -> adăuga linie "c:\Program Files\geo_tools... ")

2. În consolă introduceți „ _APLICAȚI " -> mergeți la folderul " C :\Fișiere de program\geo_tools\ "și selectați fișierul" acaddoc.lsp" -> presa " Descarca "

2. Program pentru încărcarea punctelor în software-ul AutoCAD.

Aplicația vă permite să descărcați puncte în format text și SDR.

_APLICAȚI " -> selectați fișierul descărcat și presa " Descarca ".

3. Un program pentru exportarea punctelor din software-ul AutoCAD.

Aplicația vă permite să încărcați puncte în format text pentru trimiterea ulterioară către dispozitive.

Pentru a descărca aplicația, trebuie să introduceți „ _APLICAȚI " -> selectați fișierul descărcat și presa " Descarca ".

4. Program AutoCAD pentru desenarea abaterilor

Programul ajută la proiectarea diagramelor as-built în construcție, desenând abaterile punctelor măsurate de la poziția de proiectare.

Descărcați aplicația.


Program încarcă (importă) coordonatele punctelor din fișiere în formatele *.txt, *.csv, *. tsv în versiunea Autocad 2000-2013.

Fișierul cu coordonatele pentru import poate fi generat manual sau folosind programul GroundArc TSP sau alt program.


Lucrul cu programul:

1. Lansați programul Point2CAD:


Dacă fișierul conține o linie de antet cu denumiri de coloană (a se vedea exemplul de fișier nr. 1, prima linie „N X Y H”), atunci trebuie să setați indicatorul „Omiteți prima linie (antetul) din fișierul sursă”. Dacă acest lucru nu se face, Point2CAD va afișa o fereastră cu mesaj de eroare.


În mod implicit, în Autocad direcția axelor nu coincide cu cele geodezice, pentru acest caz, trebuie să setați steag „Swap X și Y (pentru import corect în AutoCAD)”.

2. Selectați fișierele de importat:


3. Convertiți datele făcând clic pe butonul „Convertire”:


O fereastră de mesaj va afișa progresul procesului de conversie;

Documentele cu extensia *.src vor apărea în folderul cu datele sursă;

4. Pentru a importa coordonatele punctului în Autocad, trebuie să lansați Autocad și să selectați meniul „Tool->Run Script”

Apoi specificați documentul *.src cu coordonatele rezultate din program


Apoi apăsați butonul „Deschidere” pe ecran vor apărea puncte cu coordonatele din documentul încărcat

A trebuit să lucrez cu o varietate de date sursă, dar fișierele de puncte primite de la prospectori au fost întotdeauna o plăcere deosebită. Motivul pentru aceasta este că ar putea obține orice ți-ai dorit și într-o formă complet imprevizibilă. Prin urmare, de foarte multe ori a trebuit să folosesc serviciile Excel, pentru, de exemplu, să arunc coloane inutile sau să efectuez operații aritmetice.

Totul ar fi bine, dar după ce salvați un fișier text (*.txt) în Excel, Civil va refuza să accepte acest fișier și va afișa Nu s-a găsit niciun format de fișier care se potrivește. Deși, dacă verifici datele în Excel, vei vedea că toate datele sunt corecte și coloanele sunt în forma cerută.

Motivul pentru aceasta este fila pe care Excel o inserează ca separator între coloane atunci când salvează un fișier în format txt. Indiferent dacă alegi text Unicode,DOS,Macintosh sau Fișiere text delimitate prin tabulatori. Peste tot va exista o filă ca delimitator, dar AutoCAD Civil 3D nu acceptă această filă. Ce să fac?

În primul rând, vă voi spune cum să importați corect datele dintr-un fișier text în Excel. Desigur, când apăsați Deschisîn Excel, setarea implicită este deschiderea fișierelor cu extensia *.xls etc. Selectați Toate fileleși specificați textul dvs., va apărea o fereastră ca în Figura 1.


Alege Cu delimitatori. Dacă apăsați imediat Gata, apoi în tabelul nostru toate datele se vor încadra într-o coloană, pentru funcționarea normală este necesar să se împartă în coloane, ceea ce înseamnă că trebuie să indicați care este separatorul, deci faceți clic Mai departe. În fereastra nouă trebuie să setați ce este separatorul spaţiu, ca în Figura 2. Apoi puteți apăsa Gata. După aceasta, puteți efectua acțiunile necesare și puteți salva fișierul în format txt.

Deschideți fișierul post-Excel în Microsoft Word și activați afișarea caracterelor invizibile, iată ce ar trebui să obțineți:


Figura 3. Afișarea datelor în MS Word

Săgeata indică faptul că delimitatorul este tab. Soluția este simplă - selectați pictograma săgeată și copiați-o. Apoi accesați fila de căutare A inlocui. Acolo, în linie Găsi inserați o filă din clipboard, cursorul ar trebui să sară. Si in Inlocuit de pune un spațiu și poți înlocui totul în siguranță. După aceasta, Civil va trata acest fișier ca fiind nativ.

Trebuie să menționezi și extensia CSV, dacă vrei să salvezi în acest format, atunci și Excel te va surprinde. În loc de un delimitator virgulă, inserează un punct și virgulă. În consecință, nici Civil nu acceptă un astfel de dosar. Soluția este aceeași - înlocuiți punctul și virgulă din Word cu o virgulă sau un spațiu.

Ceea ce distinge eficient rapid Cursuri AutoCAD de la cursuri simple și lungi în AutoCAD? Principala diferență este că la cele eficiente nu pierzi timpul înghesuind, înveți mai ușor și cu plăcere, iar după finalizarea cursurilor poți să-ți aplici cunoștințele în practică.

Autocad este cel mai popular program pentru automatizarea designului 2D și modelării 3D. Este folosit în toată lumea. Astăzi nu se pot descurca fără cunoașterea acestui program:

  • Ingineri proiectanti;
  • Arhitecți;
  • Designeri;
  • constructori;

și alți specialiști ale căror activități implică dezvoltarea de proiecte.

Dacă desfășurați acest tip de muncă și nu ați urmat încă un curs AutoCAD, este posibil să fiți anulat în curând ca profesionist.

Interfața programului este gândită până la cel mai mic detaliu, toate instrumentele și funcțiile necesare sunt la îndemână, dezvoltarea unui proiect de bază este posibilă chiar și cu prima cunoaștere a acestui program.

Nivelul inițial necesar de cunoștințe și abilități pentru a utiliza programul este minim.

Dar pentru un program din această clasă și un domeniu de aplicare atât de larg, claritatea intuitivă a interfeței se dovedește a fi o cerință primordială, iar un set elementar de operațiuni este doar baza pentru stăpânirea tuturor capabilităților sale.

Logica muncii este aproape indecent de simplă, dar pentru a lucra la un proiect serios în AutoCAD trebuie să dezvoltați un întreg arsenal de trucuri, soluții standard în mai mulți pași și pregătiri. Plus multe setări și produse comerciale bazate pe acest program. De asemenea, trebuie să le înțelegeți pentru a obține dreptul de a fi numit specialist în design.

După cum este deja evident, nu există atât de multă teorie în procesul de învățare - totul este deja conceput pentru utilizatorii fără pregătire sau abilități în lucrul specific cu AutoCAD. Care este cel mai convenabil mod de a o studia atunci?

Tutoriale video AutoCAD.

Videoclipul AutoCAD dezvăluie capacitățile maxime ale programului, iar un profesor profesionist poate explica literalmente principiile dezvoltării chiar și a proiectelor complexe. La urma urmei, nu este nevoie să se convină asupra unei terminologii speciale, nu este nevoie de comentarii suplimentare cu privire la controalele aplicate. În videoclip, AutoCAD apare ca un instrument simplu și ușor de înțeles.

AutoCAD oferă posibilitatea de a dezvolta și simula un desen sau o diagramă de aproape orice complexitate într-un spațiu logic. Dar cuvântul cheie aici este spațiul în care trebuie să poți naviga, care are propriile sale caracteristici. Cursuri video AutoCAD Ele permit, în paralel cu asimilarea informațiilor, să se obișnuiască să acționeze în mod semnificativ într-un sistem de referință tridimensional și să funcționeze eficient cu capacitățile sale.

Site-ul meu vă oferă o oportunitate unică de a parcurge Cursuri video AutoCAD, și anume:

  1. B Lecții video gratuite, articole, programe, mini-cursuri AutoCAD.
  2. DESPRE familiarizați-vă cu catalogul cursurilor mele plătite AutoCAD, datorită căruia câteva mii de oameni, datorită internetului, au stăpânit deja acest program
  3. P urmăriți lecții video AutoCAD și cursuri rare despre acest program, care sunt deja colectate într-o bază de date specială.
  4. ÎN Dacă aveți probleme cu utilizarea programului, îmi puteți adresa întrebări.

Și trecând pe lângă mine Cursuri AutoCAD, sunteți garantat că veți învăța:

  • Desenați curbe, polilinii, forme și învățați cum să creați blocuri în program;
  • Lucrați cu straturi;
  • Utilizați instrumente pentru proiectare rapidă;
  • Realizați teșituri, rețele și mate;
  • Plasați lanțuri dimensionale;
  • Desene la scară
  • Construiește blocuri dinamice
  • Înțelegerea atributelor
  • Lucrați cu link-uri externe
  • Aplicați șabloane de fișiere de desen
  • Creați tabele interactive
  • Desenați desene simple și complexe
  • Creați modele 3D simple și complexe
  • Aflați complexitățile setărilor AutoCAD

si multi multi altii