File: DXF%20Binary%20Chunk%20Interpretation.md

package info (click to toggle)
ezdxf 1.4.1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 104,528 kB
  • sloc: python: 182,341; makefile: 116; lisp: 20; ansic: 4
file content (49 lines) | stat: -rw-r--r-- 2,998 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
tags:: DXF-Internals

- Source
	- [[AutoCAD DevBlog]]: [dxf-files-binary-chunk-interpretation.html](http://adndevblog.typepad.com/autocad/2013/02/dxf-files-binary-chunk-interpretation.html)
	- ((6551c8c7-b9c9-441d-b28c-97e46cdbdc2e))
- ## Issue
	- I need to know how to interpret the binary data enclosed in AutoCAD DXF files, most importantly:
		- the block preview bitmap,
		- the drawing thumbnail bitmap,
		- any embedded OLE object,
		- the proxy object graphics.
- ## Solution
	- Binary Data enclosed in DXF file are stored by blocks of 256 bytes maximum under DXF code 310 (i.e. 'kDxfBinaryChunk').
	- The number of blocks is not limited, but sometimes the binary chunk blocks are preceded by a DXF code 92 (of type int) which indicates the number of blocks to proceed. All binary chunk formats depend on the object being saved.
	- For example the drawing thumbnail bitmap is a DIB file. For the embedded OLE object, it depends on the OLE object itself, etc.
	-
	- ### ACIS
		- the binary chunk blocks contain the encrypted DXF output of the ACIS object. There is a utility available at the following URL, which can help to decode that block(s)
		- <http://autocad.xarch.at/stdlib/html/samp5v51.htm>
		- Block preview image bitmap and Drawing thumbnail bitmap
			- the binary chunk blocks are a memory copy of a BITMAPINFO structure, with bitmap bits.
			-
	- ### Embedded OLE object: it depends on the OLE Item version
		- #### OLE1
			- it is a memory copy of MFC COleClientItem object version OLE1
		- #### OLE2:
			- Signature: 0x5580 | kPaperSpace (kPaperSpace = 0x01)
			- AcGePoint3d() upLeft
			- AcGePoint3d() upRight
			- AcGePoint3d() bottomRight
			- AcGePoint3d() bottomLeft
			- long extents =0 // always
			- long tilemode (=0, or =1) (r13 compatibility)
			- then the output of COleclientItem::Serialize() method
			-
	- ### DXF ENTITY section binary chunk interpretation
		- sometimes the ENTITY section of an object contains some binary chunk information block(s).
		- This section appears for any object which is not part of the AutoCAD core (i.e. custom entities, or AutoCAD entities defined in ARX/DBX modules).
		- It is always preceded by a DXF code 92 which indicates the length of the binary chunk.
		- And the binary chunk contains the proxy graphic generated by the entity, when its `saveAs()` method was called by AutoCAD.
		- Depending of the settings of AutoCAD (i.e. Proxy Graphic Never Saved), and the presence of the ARX/DBX module when the DXFOUT operation occurred, the binary chunk can contain
			- a bounding box with class name and logical application name
			- the last known entity graphic description.
			-
	- ### Proxy graphics binary chunk
		- this one contains the output of the AcGiWorldDraw/AcGiViewportDraw vector collector classes which were called upon DXFOUT.
		- You need to interpret those information to rebuild the saved graphic...
		- [[Proxy Graphic Binary Chunk]]
			- describes how to interpret information contained in these blocks.