Vytisknout stránku | Zavřít okno

Načtení XRECORDU z jiného výkresu

Vytištěno z: CAD Fórum
Kategorie: Autodesk - stavebnictví, strojírenství, CAD/GIS
Název fóra: CAD programování
Popis fóra: Otázky programování - nadstavby a utility pro CAD a GIS aplikace Autodesk (VBA, AutoLISP, ARX/C++, .Net, JavaScript, Python, MEL...)
URL: https://www.cadforum.cz/forum/forum_posts.asp?TID=6660
Datum vytištění: 14.srp.2026 v 08:26


Téma: Načtení XRECORDU z jiného výkresu
Odeslal: chlebovsky
Předmět: Načtení XRECORDU z jiného výkresu
Datum odeslání: 20.čer.2008 v 08:21
Zdravím.
 
Opět se na Vás všechny obracím s prosbičkou. Zase jsem narazil a nevím jak dál :-)
 
Na disku mám uložený jeden soubor DWG. V něm mám vytvořené spousty xrecordů. A mám je nějakým způsobem pojmenovány.... a v textové položce pak popis, např. *****MATERIAL*****01*****ŠTĚRK*****
takových tam mám spousty. V tom DWG je to krásně čitelné i když ho jen tak otevřu v jakémkoliv textovém editoru
 
A teď k dotazu.
 
Mohu se nějak programově v otevřeném souboru, dostat na tento externí uložený soubor a načíst všechny potřebné xrecordy ??? Vím že lisp neumí pracovat s více soubory, takže tuším jaká bude odpověď, ale napadlo mě jestli to přeci nějak nejde obejít.
 
Zatím to řeším tak že to klasicky otevřu pomoci (open "r") a načítám data po data a testuju zda to začíná *****MATERIAL***** a pak načtu text.... jenže to funguje jenom někdy, pokud se tam vyskytují určitě znakové kody tak se to prostě chová jakoby byl soubor ukončen, což je logické, je to kompilát a může se tam vyskytovat cokoliv.
 
Pak mne napadla ještě jedna varianta. Spustit nějaký externí soubor, který by to dokázal vyčíst, a uložit do nějakého texťáku, a ten už načtu...
 
Nebo ten soubor převést programově do dxf, z toho to načíst, a pak to dxf smazat.
 
Prosím nesetkal jste se s tím už někdo ?
 
Předem moc děkuji za pomoc.
 
Využití mám k tomu, že v jedná obsáhlé nadstavbě si uživatel může vytvořit spoustu vlasních materiálů, a ty aby nemusel pracně jinde vytvářet znovu, tak jsem chtěl prostě načíst z toho prvního dwg. Napadlo mě to udělat i exportem, že nejprve otevřu ten první, exportnu to, pak otevřu ten druhý a načtu.... ale nechci tímto projektanta obtěžovat.... když to ale jinak nepůjde. Co se dá dělat.


-------------
Ing. Martin Chlebovský

www.kde-je-auto.cz

GPS monitoring provozu vozidel a osob.

WebDeveloper.

Programátor aplikací pro Autocad a MS Office.

Tvorba WWW aplikací.

Modelování domů a staveb.&l



Odpovědi:
Odeslal: Vladimír Michl
Datum odeslání: 20.čer.2008 v 09:09

Přístup (i z LISPu) do datových struktur jiných DWG možný je, ale není to tak jednoduché. Nepomohlo by vám připojit ty DWG jako Xref nebo mít ty definice v samostatném DWG?

Číst obsah jakéhokoliv DWG souboru pomocí (open "r") rozhodně možné není.



-------------
Vladimír Michl (moderátor)
ARKANCE CZ - https://arkance.world - arkance.world
(podpora viz emea.support.arkance.world)


Odeslal: chlebovsky
Datum odeslání: 20.čer.2008 v 12:20
To s tím načítáním obsahu pomoci (open "r") s tím naprosto souhlasím, je to velice špatný postup....
 
Ty definice mám právě vždycky uložené v každém DWG. Řeknu příklad, v jednom DWG řešim třebas železniční trať na Jeseníku, a tam zemina má naprosto jinou teplotní odolnost, a jiné moduly pružnosti. Proto to mám uložené v tomto DWG.
 
Pak řeším třebas jinou lokalitu, a taky mám jiné materiály.
 
Ale pak řeším třebas další trať z druhé strany jeseníků, a tam bych chtěl právě načíst ty materiály z toho prvního.
 
3lo by to tak jak jsem psal, že otevřu ten první, exportuju to do nějakého tyt, a pak otevřu ten třetí a načtu, ale chci uživateli toto ušetřit, je to kolikrát 20MB soubor a né každý má skvělou mašinu :-)
 
Ten Xref by to mohl částečně řešit. To mne nenapadlo, prostě ho vložit, načíst z něj data a pak zase odpojit, ale je to něco jako zase to otvírání... ale už by to nebylo na uživateli. Jenže, dokáže Fref přenášet data která jsou uložená v namedobjdict - pod xrecordama ??? A jak se na ně dostat.
 
A k té první variantě jak jste psal, že přístup možný existuje... je možno se někde k tomu dočíst více ???
 
Díky moc.
Zdravím, Martin.
 
Tady posílám odkaz na soubor DWG s daty :
http://www.vchlebovska.eu/martin/railcad320.zip" rel="nofollow - www.vchlebovska.eu/martin/railcad320.zip
 
A data jsou např:
(namedobjdict)(RCAD)(RC_PR)(RC_PR_MA)(RC_PR_MA_1) a z tama všechny data od ***START*** do ***KONEC***
 
a právě nevím jak to dostat.


-------------
Ing. Martin Chlebovský

www.kde-je-auto.cz

GPS monitoring provozu vozidel a osob.

WebDeveloper.

Programátor aplikací pro Autocad a MS Office.

Tvorba WWW aplikací.

Modelování domů a staveb.&l


Odeslal: chlebovsky
Datum odeslání: 20.čer.2008 v 16:00
Na jednom anglickým foru jsem něco našel ale :
 
(vl-load-com)
(setq dwg-txt "celacesta a nazev souboru včetně .dwg")
(setq dwg-obj (vla-open (vla-get-documents (vlax-get-acad-object)) dwg-txt :vlax-true))
(setq dwg-dbs (vla-get-Database dwg-obj))
(setq dwg-dic (vla-get-Dictionaries dwg-dbs))
(setq newdic (vla-Add dwg-dic "RCAD"))
(setq d1 (vl-catch-all-apply (function vla-item) (list newdic "RC_PR")))
(setq d2 (vl-catch-all-apply (function vla-item) (list d1 "RC_PR_MA")))
(setq d3 (vl-catch-all-apply (function vla-item) (list d2 "RC_PR_MA_1")))
(setq dwg-Xre (vla-getXRecordData d3 'd4 'd5))
(setq dwg-sez (mapcar (function cons)(vlax-safearray->list d4)(mapcar (function vlax-variant-value) (vlax-safearray->list d5))))
(close dwg-obj)
 
krásně funguje. Jen mě štve že to DWG otevírá, ale budiž, proč ale píšu.
 
Když vezmu strom Xrecordu
 
RCAD  ->  RC_PR  ->  RC_PR_MA  -> ( RC_PR_MA_1, RC_PR_MA_2, RC_PR_MA_3.........)
 
Tak dokážu nějak testovat že RCAD existuje když ano, tak pokračuj
Taktéž RC_PR (stejný jasný) a RC_PR_MA (taky stejný, jasný) ale u toho posledního XRECORDU navíc potřebuju zjistit všechny jakoby PODSLOŽKY
a navíc nemusí být 1,2,3,4,5 ale klidně 1,5,10,11... a počet je libovolný
 
Takže dotaz :
 
Jak můžu testovat že XRECORD EXISTUJE třeba ten RC_PR
když to krokuju nahlásí toto #<%catch-all-apply-error%>
ale jak to programově řešit s čím porovnat.
V podstatě mi stačí otestovat úplně tu poslední RC_PR_MA a pak jak zjistím všechny ta RC_PR_MA_1.......až třeba 100
 
Dík moc.
 
Martin


-------------
Ing. Martin Chlebovský

www.kde-je-auto.cz

GPS monitoring provozu vozidel a osob.

WebDeveloper.

Programátor aplikací pro Autocad a MS Office.

Tvorba WWW aplikací.

Modelování domů a staveb.&l



Vytisknout stránku | Zavřít okno