Čtení autocad text entities z dwg   zodpovězená otázka

I/O operace, VB6/VBA

Zdar všem,

potřebuji načíst textová pole z výkresů *.dwg,

text a dle pozice ve výkresu poskládat údaje

do souvislostí a dostat do excelu bez instalace

a knihoven autocadu pomocí vb,vba nebo i vb.net,

avšak výkresy jsou také z verze 2000 a 2002.

Přidáním reference na knihovnu autocadu sice

mohu otevřít soubor a selectionsetem vybrat

data filrem :

Dim A2K As AcadApplication
Dim A2Kdwg As AcadDocument
Dim dwgPath As String

dwgPath = "x:\Výkresy\výkres.dwg"
Set A2K = CreateObject("AutoCAD.Application")
Set A2Kdwg = A2K.Documents.Open(dwgPath, True)

Dim SearchText As String
SearchText = "NÁZEV"

Dim FilterType(1) As Integer
Dim FilterData(1) As Variant

FilterType(0) = 0
FilterData(0) = "TEXT"
FilterType(1) = 1
FilterData(1) = SearchText

Dim objssTexts As AcadSelectionSet
Dim ssText As AcadText

Set objssTexts = A2Kdwg.SelectionSets.Add("ssText")
objssTexts.Select acSelectionSetAll, , , FilterType, FilterData

Debug.Print "Found : " & objssTexts.Count

For Each ssText In objssTexts
    Dim minPt As Variant, maxPt As Variant
    ssText.GetBoundingBox minPt, maxPt
    Debug.Print minPt(0) & "/" & minPt(1) & "/" & minPt(2)
    Debug.Print maxPt(0) & "/" & maxPt(1) & "/" & maxPt(2)
Next
objssTexts.Delete
Set objssTexts = Nothing
A2Kdwg.Close False
Set A2Kdwg = Nothing
A2K.Quit
Set A2K = Nothing

Nevíte, jak načíst data elegatněji,pomocí free knihovny

třeba nějakého prohlížeče nebo převaděče do formátu,aby

se data entit výkresu dala číst jako text?

ASCII verzi DXF je prý možné číst textovým editorem...

Nelze soubor pomocí vb převést a data ENTITIES přečíst?

Ačkoli intenzivně pátrám, stále se nemohu zorientovat,

čtu o odbx, objektu arx ,dxf... bez úspěchu a proto moc

doufám, že zde naleznu spřízněnou duši a prosím o pomoc,

vaše tipy, rady a cenné zkušenosti.

Děkuji za případnou pomoc váženého fóra. Mnoho zdaru!

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Obávám se, že vytahovat data přímo z .dwg souboru bez knihovny AutoCADu bude dost složité. Tento soubor je binární, takže byste musel mít přesný popis jeho struktury. Ten bude sice asi někde dostupný, otázka v jaké verzi a zdali zdarma.

Naproti tomu řešení s .dxf by bylo docela jednoduché, protože pro .dxf jako výměnný formát by nemělo být problémem nalézt aktuální verzi popisu jeho struktury, ale hlavně, jedná se o texťák, takže by se to dalo prohnat třeba nějakým vhodným regulárním výrazem.

A v nejhorším na internetu existuje fůra prográmků pro převod .dwg na .dxf. Otázkou zůstane tedy hlavně jak se to bude chovat k různým verzím AutoCADovských souborů, mnoho srandy si jistě užijete i s případnou češtinou a speciálními znaky (to bylo u AutoCADu vždy velké dobrodružství při jakýchkoliv převodech, možná novější verze už tím netrpí).

nahlásit spamnahlásit spam 2 / 2 odpovědětodpovědět

Sdílím vaše obavy společně se svými a mnohokrát děkuji za Vaši reakci. Možnost otevřít .dxf jako text je mi známa jen knihovna na převod ne... Máte pravdu, je toho celá fůra, jen si vybrat, ale bylo by fajn zde najít někoho, kdo něco podobného zkoušel...

Příklad výše je funkční "střípek" pro pozdější vyhledávání v adresáři souborů resp. v seznamu ze získaných hodnot, hledám lepší způsob, jak toho dosáhnout...

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Za "mlada" jsem v době pro Česko ještě kamenné (z hlediska CAD technologií) s uvedenou technologií celkem živě pracoval a to dokonce tak, že jsem si .dxf z určitých fragmentů skládal programově sám (tenkrát v nějakém Quick-basicu, nebo jak se to tenkrát pod DOSem nazývalo).

Bohužel (pro mne bohudík) jsem toto elektronické kreslící prkno opustil ještě celkem hluboko v minulém tisíciletí a dále jsem se věnoval "dospělým" CADům, a ve 3D se s .dxf jaksi nechytáte, proto jsem se této oblasti dále nevěnoval. Popis formátu najdete na mnoha místech (mimo jiné třeba i tady http://www.autodesk.com/techpubs/autocad... ) a jde jen o to, nějak šikovně si to rozparsovat a hlavně kouknout, jak zásadní změny přináší různé verze AutoCADu.

Jinak ale ten formát je v zásadě velice jednoduchý a hrozně ukecaný, vždy máte na řádku nějaký kód a pod ním jeho hodnotu. Vy budete hledat asi něco podobného:

...
 0       ' značí novou entitu (návěští)
TEXT     ' klíčové slovo, o jakou entitu jde (v tomto případě o text)
  8      ' návěští pro vrstvu
VRSTVA_1 ' hodnota pro vrstvu
 62      ' návěští ???
     7   ' hodnota ???
 10      ' návěští X-ové hodnoty prvního zarovnávacího bodu
-0.691185' hodnota X-ové souř...
 20      ' dtto Y-ová souř
0.495972
 40      ' návěští výšky textu
0.103730 ' hodnota
  1      ' návěští dafault hodnoty entity (v tomto případě vlastní text)
AQ PUMPY, s.r.o., Hranice, CZ   ' a hodnota
 41      ' a tak dále, co jednotlivé kódy znamenají najdete právě v tom popisu
1.000000
  7
SN0
 71
     0
 72
     5
 11
1.107642
 21
0.495972
  0        ' návěští nové entity
TEXT       ' další entitou opět text....
...

Jedinou trošku komplikací by mohlo být, kdybyste hledal texty, které máte obsaženy v blocích, také nevím, jak vzájemně budou korelovat texty z výkresového a případně i modelového (mohou-li tam být) prostoru.

Ale princip by měl u všeho být stejný.

P.S. Jo, ta 62-ka je návěští barvy

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Ještě další (možná schůdnější) cestou může být použití http://www.cadsofttools.com/en/products/... . Jedná se o API pro C# právě i do .dwg. není to sice free, ale zkuste si stáhnout zkušební verzi a možná zjistíte, že pro vás nebude těch necelých 50$ nepřekonatelných. Nebo zkuste štěstí, možná najdete ještě i něco dalšího "free".

nahlásit spamnahlásit spam 0 odpovědětodpovědět

Moc díky, cadimport vypadá velice pěkně, je tam několik projektů pro vb.net,cadeditorcontrol a propertygrid, který zobrazuje data entit podle výběru v zobrazeném dwg... Dětskou radost, ale zkazilo zjištěni, že ve standard verzi není cadconverter pro přímé čtení entit z dwg a budou asi třeba ty dolary na plnou verzi knihovny...

Zároveň díky za popis struktury textové podoby, nalezeny i další specifikace:

http://www.opendesign.com/files/guestdow...

nahlásit spamnahlásit spam 0 odpovědětodpovědět
                       
Nadpis:
Antispam: Komu se občas házejí perly?
Příspěvek bude publikován pod identitou   anonym.
  • Administrátoři si vyhrazují právo komentáře upravovat či mazat bez udání důvodu.
    Mazány budou zejména komentáře obsahující vulgarity nebo porušující pravidla publikování.
  • Pokud nejste zaregistrováni, Vaše IP adresa bude zveřejněna. Pokud s tímto nesouhlasíte, příspěvek neodesílejte.

přihlásit pomocí externího účtu

přihlásit pomocí jména a hesla

Uživatel:
Heslo:

zapomenuté heslo

 

založit nový uživatelský účet

zaregistrujte se

 
zavřít

Nahlásit spam

Opravdu chcete tento příspěvek nahlásit pro porušování pravidel fóra?

Nahlásit Zrušit

Chyba

zavřít

feedback