Zobrazit plnou verzi příspěvku: Format DXF

orlik
21.02.2006, 06:58
Existuje nekde na netu cs verze, jak ma vypadat soubor dxf? DXF.pdf v cizim jazyce jsem sehnal.
Dival jsem se na soubor, ktery produkuje Acad 2002 a ve predu je prehrsle $ promennych a nastaveni. Lze nejak tento vypis + bloky a nektere tabulky vypnout, aby bylo dxf-ko vygenerovano co nejcistsi, jen s entitama? Vytvarim DXF ve VB(mimo acad) a nektere programy mi spatne zpracovavaji vysledny dxf soubor.

Pepa
21.02.2006, 07:05
popis formátu dxf viz tip 1545 tady na stránce, ale je taky anglicky  "co nejčistší"? nevím, ale do samotného dxf bych moc nesahal, maximálně ho zkuste uložit v co nejnižší verzi, i 2006ka umí DXF verze 12. Jinak všechny nepotřebné bloky, hladiny atd. vyčistit už v cadu.

Seiner
21.02.2006, 07:26
Techniku vytváření DXF ve VB6 programku take používám - pro nadstavby na LT. Pokud chci vkládat jen úsečky, oblouky a texty, používám formát dxf 12 a vytvářím pouze sekci entit. U složitějších věcí (blok s atributy) si pomáhám tak, že mám "vzorový" DXF, ve kterém jsou hodnoty atributů nastaveny na známé hodnoty. Ty pak jen zaměním požadovaným textem.   Přikládám ukázku z modulu pro tvorbu DXF. Procedura OpenDXF otevře výstupní soubor a zapíše nezbytné. Pak se použije libovolný počet DXFLine a podobných DXFArc, DXFText a nakonec se Close DXF zapíší "párové tagy" a soubor se zavře.
Public Sub OpenDXF(file As String)Open file For Output As #1Print #1, "  0"Print #1, "SECTION"Print #1, "  2"Print #1, "HEADER"Print #1, "  9"Print #1, "$ACADVER"Print #1, "  1"Print #1, "AC1009"Print #1, "  0"Print #1, "ENDSEC"Print #1, "  0"Print #1, "SECTION"Print #1, "  2"Print #1, "ENTITIES"End Sub
Public Sub CloseDXF()  Print #1, "  0" Print #1, "ENDSEC" Print #1, "  0" Print #1, "EOF"Close #1
End Sub
Public Sub DXFline(x1#, y1#, x2#, y2#, hladina As String) Print #1, "  0" Print #1, "LINE" Print #1, "  8" Print #1, hladina Print #1, " 10" Print #1, inter(x1) Print #1, " 20" Print #1, inter(y1) Print #1, " 30" Print #1, "0.0" Print #1, " 11" Print #1, inter(x2) Print #1, " 21" Print #1, inter(y2) Print #1, " 31" Print #1, "0.0"End Sub

orlik
21.02.2006, 08:58
Diky,
vidim, ze to delame ve vb(ja mam jeste 5) stejne. Musel jsem k tomu pristoupit z duvodu, ze programy, ktere tiskly soubory pro NC stroje byly tvoreny pro dos. Na mych 98 jeste tisknout jde, ale na XP uz ne. Nepomuze ani sitova ani lokalni tiskarna. Je to pro archivaci a prenos pro dratorez. Chci vytvorit dxf soubor, kde by v prednastevenych layerech byly obrysy, prejezdy nulove body, souradnice, osy a text zvlast, aby se v pripade preplacani vykresu daly layery vypinat. Prevod z ISA kodu a CMD mam vyresen, zbyva rotace a zrcadleni. Vysledny DXF soubor potom lze prohlizet ve VeloView nebo podobnych programech.

Zjistil jsem, ze problem nacitani do Acadu dela dvojice

5
1F

ktere se vypise do dxf-ka pod

   1
Souradnice   .. text pro vypis

Nevim co ta kombinace 5 - 1F znamena.


Vladimír Michl
21.02.2006, 09:14
DXF bez záhlaví s proměnnými vytvoříte z AutoCADu volbou _DXFOUT _Entity.
Skupina 5 je "entity handle" (jednoznačný identifikátor entit výkresu), ten je pro interpretaci grafiky většinou zbytečný.