Zobrazit plnou verzi příspěvku: Použití DBConnect a data uložená v XRECORD

JKOTASEK
06.01.2016, 11:03
Zdravím,ve firmě vyvíjíme systém na čtení DXF souborů s následnou provázaností s SQL DB.K tomuto účelu využíváme v Autocadu při tvorbě výkresů funkce DBConnect (XDATA), s čímž souvisejí parametry 1000, 1004 a 1005.V podstatě nemáme zásadní problém a víceméně nám vše dle našich potřeb už léta funguje.Občas ale narážím na problematiku údajů uložených v sekci XRECORD.Manuály k DXF se k této části vyjadřují pouze ve smyslu "zde si aplikace Autocadu ukládají svá data", ale už jsem se nikde nedočetl, v jaké konkrétní podobě v případě používání DBConnect.Např.:  0XRECORD...33021A10041409030000000000FFFFFFFF0200FFFF33021A33021C100450F9020000000000FFFFFFFF0100FFFF1000Propojení1Popisek133028010048FFA020000000000FFFFFFFF0100FFFF1000Propojení1Popisek1Zda k černému kódu 1000 patří jak červená část s 1 entitou a kódem 1004, tak zelená část s 2 entitami a společným kódem 1004.Podle mého zkušebního výkresu ano a takto s tím pracuji, ale občas tam zůstanou údaje, které mi toto pravidlo naruší, např. že zcela chybí kód 1000. Obvykle se to opraví v Autocadu pomocí funkce Ověření.Ale i tak bych chtěl mít algoritmus upravený tak, aby tuto chybu dokázal ošetřit.Dokážete mě, prosím, někdo nasměrovat nebo poradit, kde se dočtu, co konkrétně a v jaké podobě je v XRECORD v souvislosti s DBConnect uložené?JK

Vladimír Michl
06.01.2016, 11:44

DBConnect je jen jedna z aplikací/funkcí využívající rozhraní ASE. Záleží zda používáte pouze DBConnect příkazy nebo i nějaká vlastní API volání ASE. V DWG databázi pak mohou XRECORD záznamy vypadat dost různě (může záležet i na verzi AutoCADu). Co je účelem (zhruba) oné hlavní aplikace? Tento přístup přes DXF a hodně staré funkce ASE může být dost nespolehlivý.

JKOTASEK
06.01.2016, 14:20
Používáme čistě jen příkazy DBConnect a s tím spojené vkládání popisek volných a provázaných s entitami. Žádné nadstavby nebo vlastní funkce, čistě jen plná verze Autocadu.Výsledkem naší aplikace je, že dokáže z DXF vytáhnout seznam DB_ID uložených v XDATA.Zároveň jsme schopni získat vztah DB_ID (kód 1004) a ENT_ID (kód 5), tedy s jakým řádkem DB je jaká entita propojená, což není v sekci ENTITIES problém, tam to dokáži 100% načíst a je to v pohodě.Ale jakmile načítám informace z XRECORD (související s ASE_INDEX_DICTIONARY), už se nemám o co opírat (nějaký manuál) a v podstatě vycházím z předpokladu, který jsem uvedl v dotazu.Ano, ASE je stará funkce a my ji používáme už od Autocadu 2000. Také proto si zatím všechny výkresy ukládáme do formátu DXF verze 2000, abychom s tím neměli problém.