QCAD
Open Source 2D CAD
Loading...
Searching...
No Matches
opennurbs_3dm.h
Go to the documentation of this file.
1/* $NoKeywords: $ */
2/*
3//
4// Copyright (c) 1993-2007 Robert McNeel & Associates. All rights reserved.
5// Rhinoceros is a registered trademark of Robert McNeel & Assoicates.
6//
7// THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.
8// ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR PURPOSE AND OF
9// MERCHANTABILITY ARE HEREBY DISCLAIMED.
10//
11// For complete openNURBS copyright information see <http://www.opennurbs.org>.
12//
14*/
15
16#if !defined(OPENNURBS_THREEDM_INC_)
17#define OPENNURBS_THREEDM_INC_
18
19/* 3dm defines, structs and typedefs */
20
21/* Typecode format 4 bytes long
22
23 x xxxxxxxxxxxxxxx,x xxx xxxx xxxx x x xx
24 | | | | | | |
25 | | | |
26 | | | | +--- "stuff" bit
27 | | | |
28 | | | +-- specific codes
29 | | |
30 | | +-- RESERVED - DO NOT USE (should be 0) (will be used to control CRC on/off)
31 | |
32 | +-- category:_000 0000 0000 0001 Legacy geometry TCODE_LEGACY_GEOMETRY
33 | _000 0000 0000 0010 openNURBS object TCODE_OPENNURBS_OBJECT
34 | _000 0000 0000 0100 -- RESERVED - DO NOT USE (should be 0 in any typecode) --
35 | _000 0000 0000 1000 -- RESERVED - DO NOT USE (should be 0 in any typecode) --
36 | _000 0000 0001 0000 Geometry TCODE_GEOMETRY
37 | _000 0000 0010 0000 Annotation
38 | _000 0000 0100 0000 Display Attributes TCODE_DISPLAY
39 | _000 0000 1000 0000 Rendering TCODE_RENDER
40 | _000 0001 0000 0000
41 | _000 0010 0000 0000 Interface TCODE_INTERFACE
42 | _000 0100 0000 0000 -- RESERVED - DO NOT USE (should be 0 in any typecode) --
43 | _000 1000 0000 0000 Tolerances TCODE_TOLERANCE
44 | _001 0000 0000 0000 Tables TCODE_TABLE
45 | _010 0000 0000 0000 Table record TCODE_TABLEREC
46 | _100 0000 0000 0000 User information TCODE_USER
47 |
48 +-- format: 0 - data size in header - data block follows TCODE_SHORT
49 1 - data in header - no data block follows
50
51*/
52
53
54/*
55// The TCODE_COMMENTBLOCK is the first chunk in the file, starts 32 bytes into
56// the file, and contains text information terminated with a ^Z. This ^Z and
57// contents of this chunk were expanded in February 2000. Files written with
58// code released earlier than this will not have the ^Z.
59//
60// The TCODE_ENDOFFILE is the last chunk in the file and the first 4 bytes
61// of information in this chunk is an integer that contains the file length.
62// This chunk was added in February 2000 and files written with code released
63// earlier than this will not have this termination block.
64*/
65#define TCODE_COMMENTBLOCK 0x00000001
66#define TCODE_ENDOFFILE 0x00007FFF
67#define TCODE_ENDOFFILE_GOO 0x00007FFE /*
68 // this typecode is returned when
69 // a rogue eof marker is found
70 // Some v1 3dm file writers put
71 // these markers in a "goo".
72 // Simply skip these chunks and continue.
73 */
74#define TCODE_LEGACY_GEOMETRY 0x00010000
75#define TCODE_OPENNURBS_OBJECT 0x00020000
76#define TCODE_GEOMETRY 0x00100000
77#define TCODE_ANNOTATION 0x00200000
78#define TCODE_DISPLAY 0x00400000
79#define TCODE_RENDER 0x00800000
80#define TCODE_INTERFACE 0x02000000
81#define TCODE_TOLERANCE 0x08000000
82#define TCODE_TABLE 0x10000000
83#define TCODE_TABLEREC 0x20000000
84#define TCODE_USER 0x40000000
85#define TCODE_SHORT 0x80000000
86
87#define TCODE_CRC 0x8000
88
89#define TCODE_ANONYMOUS_CHUNK (TCODE_USER | TCODE_CRC | 0x0000 )
90
91/* The openNURBS toolkit allows users to write all openNURBS classed that are
92// derived from ON_Object using using TCODE_OPENNURBS_CLASS chunks.
93// In the .3dm file these TCODE_OPENNURBS_CLASS chunks are always have the
94// following format.
95*/
97/* tables added 17 February 2000 */
98#define TCODE_MATERIAL_TABLE (TCODE_TABLE | 0x0010) /* rendering materials */
99#define TCODE_LAYER_TABLE (TCODE_TABLE | 0x0011) /* layers */
100#define TCODE_LIGHT_TABLE (TCODE_TABLE | 0x0012) /* rendering lights */
101#define TCODE_OBJECT_TABLE (TCODE_TABLE | 0x0013) /* geometry and annotation */
102#define TCODE_PROPERTIES_TABLE (TCODE_TABLE | 0x0014) /* model properties:
103 // revision history
104 // notes
105 // preview image
106 */
107#define TCODE_SETTINGS_TABLE (TCODE_TABLE | 0x0015) /* file properties including,
108 // units, tolerancess,
109 // annotation defaults,
110 // render mesh defaults,
111 // current layer,
112 // current material,
113 // current color,
114 // named construction planes,
115 // named viewports,
116 // current viewports,
117 */
118#define TCODE_BITMAP_TABLE (TCODE_TABLE | 0x0016) /* embedded bitmaps */
119#define TCODE_USER_TABLE (TCODE_TABLE | 0x0017) /* user table */
120
121#define TCODE_GROUP_TABLE (TCODE_TABLE | 0x0018) /* group table */
123#define TCODE_FONT_TABLE (TCODE_TABLE | 0x0019) /* annotation font table */
124#define TCODE_DIMSTYLE_TABLE (TCODE_TABLE | 0x0020) /* annotation dimension style table */
126#define TCODE_INSTANCE_DEFINITION_TABLE (TCODE_TABLE | 0x0021) /* instance definition table */
127
128#define TCODE_HATCHPATTERN_TABLE (TCODE_TABLE | 0x0022) /* hatch pattern table */
130#define TCODE_LINETYPE_TABLE (TCODE_TABLE | 0x0023) /* linetype table */
132#define TCODE_OBSOLETE_LAYERSET_TABLE (TCODE_TABLE | 0x0024) /* obsolete layer set table */
134#define TCODE_TEXTURE_MAPPING_TABLE (TCODE_TABLE | 0x0025) /* texture mappings */
136#define TCODE_HISTORYRECORD_TABLE (TCODE_TABLE | 0x0026) /* history records */
138#define TCODE_ENDOFTABLE 0xFFFFFFFF
140/* records in properties table */
141#define TCODE_PROPERTIES_REVISIONHISTORY (TCODE_TABLEREC | TCODE_CRC | 0x0021)
142#define TCODE_PROPERTIES_NOTES (TCODE_TABLEREC | TCODE_CRC | 0x0022)
143#define TCODE_PROPERTIES_PREVIEWIMAGE (TCODE_TABLEREC | TCODE_CRC | 0x0023)
144#define TCODE_PROPERTIES_APPLICATION (TCODE_TABLEREC | TCODE_CRC | 0x0024)
145#define TCODE_PROPERTIES_COMPRESSED_PREVIEWIMAGE (TCODE_TABLEREC | TCODE_CRC | 0x0025)
146#define TCODE_PROPERTIES_OPENNURBS_VERSION (TCODE_TABLEREC | TCODE_SHORT | 0x0026)
147
148/* records in settings table */
149#define TCODE_SETTINGS_PLUGINLIST (TCODE_TABLEREC | TCODE_CRC | 0x0135)
150#define TCODE_SETTINGS_UNITSANDTOLS (TCODE_TABLEREC | TCODE_CRC | 0x0031)
151#define TCODE_SETTINGS_RENDERMESH (TCODE_TABLEREC | TCODE_CRC | 0x0032)
152#define TCODE_SETTINGS_ANALYSISMESH (TCODE_TABLEREC | TCODE_CRC | 0x0033)
153#define TCODE_SETTINGS_ANNOTATION (TCODE_TABLEREC | TCODE_CRC | 0x0034)
154#define TCODE_SETTINGS_NAMED_CPLANE_LIST (TCODE_TABLEREC | TCODE_CRC | 0x0035)
155#define TCODE_SETTINGS_NAMED_VIEW_LIST (TCODE_TABLEREC | TCODE_CRC | 0x0036)
156#define TCODE_SETTINGS_VIEW_LIST (TCODE_TABLEREC | TCODE_CRC | 0x0037)
157#define TCODE_SETTINGS_CURRENT_LAYER_INDEX (TCODE_TABLEREC | TCODE_SHORT | 0x0038)
158#define TCODE_SETTINGS_CURRENT_MATERIAL_INDEX (TCODE_TABLEREC | TCODE_CRC | 0x0039)
159#define TCODE_SETTINGS_CURRENT_COLOR (TCODE_TABLEREC | TCODE_CRC | 0x003A)
160#define TCODE_SETTINGS__NEVER__USE__THIS (TCODE_TABLEREC | TCODE_CRC | 0x003E)
161#define TCODE_SETTINGS_CURRENT_WIRE_DENSITY (TCODE_TABLEREC | TCODE_SHORT | 0x003C)
162#define TCODE_SETTINGS_RENDER (TCODE_TABLEREC | TCODE_CRC | 0x003D)
163#define TCODE_SETTINGS_GRID_DEFAULTS (TCODE_TABLEREC | TCODE_CRC | 0x003F)
164#define TCODE_SETTINGS_MODEL_URL (TCODE_TABLEREC | TCODE_CRC | 0x0131)
165#define TCODE_SETTINGS_CURRENT_FONT_INDEX (TCODE_TABLEREC | TCODE_SHORT | 0x0132)
166#define TCODE_SETTINGS_CURRENT_DIMSTYLE_INDEX (TCODE_TABLEREC | TCODE_SHORT | 0x0133)
167/* added 29 October 2002 as a chunk to hold new and future ON_3dmSettings information */
168#define TCODE_SETTINGS_ATTRIBUTES (TCODE_TABLEREC | TCODE_CRC | 0x0134)
169
170
171/* views are subrecords in the settings table */
172#define TCODE_VIEW_RECORD (TCODE_TABLEREC | TCODE_CRC | 0x003B)
173/* subrecords if view record */
174#define TCODE_VIEW_CPLANE (TCODE_TABLEREC | TCODE_CRC | 0x013B)
175#define TCODE_VIEW_VIEWPORT (TCODE_TABLEREC | TCODE_CRC | 0x023B)
176#define TCODE_VIEW_SHOWCONGRID (TCODE_TABLEREC | TCODE_SHORT | 0x033B)
177#define TCODE_VIEW_SHOWCONAXES (TCODE_TABLEREC | TCODE_SHORT | 0x043B)
178#define TCODE_VIEW_SHOWWORLDAXES (TCODE_TABLEREC | TCODE_SHORT | 0x053B)
179#define TCODE_VIEW_TRACEIMAGE (TCODE_TABLEREC | TCODE_CRC | 0x063B)
180#define TCODE_VIEW_WALLPAPER (TCODE_TABLEREC | TCODE_CRC | 0x073B)
181#define TCODE_VIEW_WALLPAPER_V3 (TCODE_TABLEREC | TCODE_CRC | 0x074B)
182#define TCODE_VIEW_TARGET (TCODE_TABLEREC | TCODE_CRC | 0x083B)
183#define TCODE_VIEW_DISPLAYMODE (TCODE_TABLEREC | TCODE_SHORT | 0x093B)
184#define TCODE_VIEW_NAME (TCODE_TABLEREC | TCODE_CRC | 0x0A3B)
185#define TCODE_VIEW_POSITION (TCODE_TABLEREC | TCODE_CRC | 0x0B3B)
186
187/* added 29 October 2002 as a chunk to hold new and future ON_3dmView information */
188#define TCODE_VIEW_ATTRIBUTES (TCODE_TABLEREC | TCODE_CRC | 0x0C3B)
189
190/* added 27 June 2008 as a chunk to hold userdata on ON_Viewports saved in named view list */
191#define TCODE_VIEW_VIEWPORT_USERDATA (TCODE_TABLEREC | TCODE_CRC | 0x0D3B)
192
193/* records in bitmap table */
194#define TCODE_BITMAP_RECORD (TCODE_TABLEREC | TCODE_CRC | 0x0090) /* material table record derived from ON_Bitmap */
195
196/* records in material table */
197#define TCODE_MATERIAL_RECORD (TCODE_TABLEREC | TCODE_CRC | 0x0040) /* material table record derived from ON_Material */
198
199/* records in layer table */
200#define TCODE_LAYER_RECORD (TCODE_TABLEREC | TCODE_CRC | 0x0050) /* layer table record derived from ON_Layer */
202/* records in light table */
203#define TCODE_LIGHT_RECORD (TCODE_TABLEREC | TCODE_CRC | 0x0060) /* light table record derived from ON_Light */
204#define TCODE_LIGHT_RECORD_ATTRIBUTES (TCODE_INTERFACE | TCODE_CRC | 0x0061) /* ON_3dmObjectAttributes chunk */
205#define TCODE_LIGHT_RECORD_ATTRIBUTES_USERDATA (TCODE_INTERFACE | 0x0062) /* ON_3dmObjectAttributes userdata chunk */
206
207#define TCODE_LIGHT_RECORD_END (TCODE_INTERFACE | TCODE_SHORT | 0x006F)
208
209/* records in user table
210 Each user table entery has two top level chunks, a TCODE_USER_TABLE_UUID chunk
211 and a TCODE_USER_RECORD chunk.
212*/
214/* The TCODE_USER_TABLE_UUID chunk
215 contains the plug-in id and, if the archive is V5 or later
216 and was written by an opennurbs with version >= 200910190,
217 a TCODE_USER_TABLE_RECORD_HEADER chunk.
218*/
219#define TCODE_USER_TABLE_UUID (TCODE_TABLEREC | TCODE_CRC | 0x0080)
220/* the user record header was added in 200910190 and is inside the TCODE_USER_TABLE_UUID chunk */
221#define TCODE_USER_TABLE_RECORD_HEADER (TCODE_TABLEREC | TCODE_CRC | 0x0082)
222/* information saved by the plug-in is in a TCODE_USER_RECORD chunk */
223#define TCODE_USER_RECORD (TCODE_TABLEREC | 0x0081)
224
226/* records in group table */
227#define TCODE_GROUP_RECORD (TCODE_TABLEREC | TCODE_CRC | 0x0073)
229/* records in font table */
230#define TCODE_FONT_RECORD (TCODE_TABLEREC | TCODE_CRC | 0x0074)
232/* records in dimension style table */
233#define TCODE_DIMSTYLE_RECORD (TCODE_TABLEREC | TCODE_CRC | 0x0075)
235/* records in instance definition table */
236#define TCODE_INSTANCE_DEFINITION_RECORD (TCODE_TABLEREC | TCODE_CRC | 0x0076)
238/* records in hatch pattern table */
239#define TCODE_HATCHPATTERN_RECORD (TCODE_TABLEREC | TCODE_CRC | 0x0077)
241/* records in linetye pattern table */
242#define TCODE_LINETYPE_RECORD (TCODE_TABLEREC | TCODE_CRC | 0x0078)
243
244/* OBSOLETE records in layer set table */
245#define TCODE_OBSOLETE_LAYERSET_RECORD (TCODE_TABLEREC | TCODE_CRC | 0x0079)
246
247/* records in linetye pattern table */
248#define TCODE_TEXTURE_MAPPING_RECORD (TCODE_TABLEREC | TCODE_CRC | 0x007A)
249
250/* records in history record pattern table */
251#define TCODE_HISTORYRECORD_RECORD (TCODE_TABLEREC | TCODE_CRC | 0x007B)
252
253/* records in object table */
254#define TCODE_OBJECT_RECORD (TCODE_TABLEREC | TCODE_CRC | 0x0070)
255#define TCODE_OBJECT_RECORD_TYPE (TCODE_INTERFACE | TCODE_SHORT | 0x0071) /* ON::object_type value */
256#define TCODE_OBJECT_RECORD_ATTRIBUTES (TCODE_INTERFACE | TCODE_CRC | 0x0072) /* ON_3dmObjectAttributes chunk */
257#define TCODE_OBJECT_RECORD_ATTRIBUTES_USERDATA (TCODE_INTERFACE | 0x0073) /* ON_3dmObjectAttributes userdata chunk */
258#define TCODE_OBJECT_RECORD_HISTORY (TCODE_INTERFACE | TCODE_CRC | 0x0074) /* construction history */
259#define TCODE_OBJECT_RECORD_HISTORY_HEADER (TCODE_INTERFACE | TCODE_CRC | 0x0075) /* construction history header*/
260#define TCODE_OBJECT_RECORD_HISTORY_DATA (TCODE_INTERFACE | TCODE_CRC | 0x0076) /* construction history data */
261#define TCODE_OBJECT_RECORD_END (TCODE_INTERFACE | TCODE_SHORT | 0x007F)
262
263/*
265//
266// TCODE_OBJECT_RECORD
267// 4 byte length of entire object record
268//
269// TCODE_OBJECT_RECORD_TYPE required - used to quickly filter and skip unwanted objects
270// 4 byte ON::object_type
271//
272// TCODE_OPENNURBS_CLASS
273// 4 byte length
274// TCODE_OPENNURBS_CLASS_UUID
275// 4 byte length = 20
276// value of ON_ClassId::m_uuid for this class
277// 4 byte CRC
278// TCODE_OPENNURBS_CLASS_DATA
279// 4 byte length
280// class specific data for geometry or annotation object
281// 4 byte CRC
282// TCODE_OPENNURBS_CLASS_USERDATA (1 chunk per piece of user data)
283// 4 byte length
284// 2 byte chunk version 2.1
285// TCODE_OPENNURBS_CLASS_USERDATA_HEADER
286// 4 byte length
287// 16 byte value of ON_ClassId::m_uuid for this child class of ON_UserData
288// 16 byte value of ON_UserData::m_userdata_uuid
289// 4 byte value of ON_UserData::m_userdata_copycount
290// 128 byte value of ON_UserData::m_userdata_xform
291// 16 byte value of ON_UserData::m_application_uuid (in ver 2.1 chunks)
292// TCODE_ANONYMOUS_CHUNK
293// 4 byte length
294// specific user data
295// TCODE_OPENNURBS_CLASS_END
296//
297// TCODE_OBJECT_RECORD_ATTRIBUTES (optional)
298// 4 byte length
299// ON_3dmObjectAttributes information
300// 4 byte crc
301//
302// TCODE_OBJECT_RECORD_ATTRIBUTES_USERDATA (optional)
303// 4 byte length
304// TCODE_OPENNURBS_CLASS_USERDATA (1 chunk per piece of user data)
305// 4 byte length
306// 2 byte chunk version 2.1
307// TCODE_OPENNURBS_CLASS_USERDATA_HEADER
308// 4 byte length
309// 16 byte value of ON_ClassId::m_uuid for this child class of ON_UserData
310// 16 byte value of ON_UserData::m_userdata_uuid
311// 4 byte value of ON_UserData::m_userdata_copycount
312// 128 byte value of ON_UserData::m_userdata_xform
313// 16 byte value of ON_UserData::m_application_uuid (in ver 2.1 chunks)
314// TCODE_ANONYMOUS_CHUNK
315// 4 byte length
316// specific user data
318// TCODE_OBJECT_RECORD_HISTORY (optional) construction history
319// 4 byte length
320// 2 byte chunk version
321// TCODE_OBJECT_RECORD_HISTORY_HEADER
322// 4 byte length
323// 2 byte chunk version
324// ...
325// 4 byte crc
326// TCODE_OBJECT_RECORD_HISTORY_DATA
327// 4 byte length
328// 2 byte chunk version
329// ...
330// 4 byte crc
331//
332// TCODE_OBJECT_RECORD_END required - marks end of object record
333//
335*/
336
337#define TCODE_OPENNURBS_CLASS (TCODE_OPENNURBS_OBJECT | 0x7FFA)
338#define TCODE_OPENNURBS_CLASS_UUID (TCODE_OPENNURBS_OBJECT | TCODE_CRC | 0x7FFB)
339#define TCODE_OPENNURBS_CLASS_DATA (TCODE_OPENNURBS_OBJECT | TCODE_CRC | 0x7FFC)
340#define TCODE_OPENNURBS_CLASS_USERDATA (TCODE_OPENNURBS_OBJECT | 0x7FFD)
341#define TCODE_OPENNURBS_CLASS_USERDATA_HEADER (TCODE_OPENNURBS_OBJECT | TCODE_CRC | 0x7FF9)
342#define TCODE_OPENNURBS_CLASS_END (TCODE_OPENNURBS_OBJECT | TCODE_SHORT | 0x7FFF)
343
344/*
346//
347// TCODE_OPENNURBS_CLASS
348// length of entire openNURBS class object chunk
349//
350// TCODE_OPENNURBS_CLASS_UUID
351// length of uuid (16 byte UUID + 4 byte CRC)
352// 16 byte UUID ( a.k.a. GUID ) openNURBS class ID - determines specific openNURBS class
353// 4 bytes (32 bit CRC of the UUID)
354//
355// TCODE_OPENNURBS_CLASS_DATA
356// length of object data
357// ... data that defines object
358// use ON_classname::Read() to read this data and ON_classname::Write()
359// to write this data
360// 4 bytes (32 bit CRC of the object data)
361//
362// TCODE_OPENNURBS_CLASS_USERDATA ( 0 or more user data chunks)
364// TCODE_OPENNURBS_CLASS_END
365// 4 bytes = 0
370/*
374// The TCODEs below were used in the version 1 file format and are needed so that
375// the these files can be read and (optionally) written by the current OpenNURBS
376// toolkit.
377//
378//
383#define TCODE_ANNOTATION_SETTINGS (TCODE_ANNOTATION | 0x0001)
385#define TCODE_TEXT_BLOCK (TCODE_ANNOTATION | 0x0004)
386#define TCODE_ANNOTATION_LEADER (TCODE_ANNOTATION | 0x0005)
387#define TCODE_LINEAR_DIMENSION (TCODE_ANNOTATION | 0x0006)
388#define TCODE_ANGULAR_DIMENSION (TCODE_ANNOTATION | 0x0007)
389#define TCODE_RADIAL_DIMENSION (TCODE_ANNOTATION | 0x0008)
390
391/* old RhinoIO toolkit (pre February 2000) defines */
392#define TCODE_RHINOIO_OBJECT_NURBS_CURVE (TCODE_OPENNURBS_OBJECT | 0x0008) /* old CRhinoNurbsCurve */
393#define TCODE_RHINOIO_OBJECT_NURBS_SURFACE (TCODE_OPENNURBS_OBJECT | 0x0009) /* old CRhinoNurbsSurface */
394#define TCODE_RHINOIO_OBJECT_BREP (TCODE_OPENNURBS_OBJECT | 0x000B) /* old CRhinoBrep */
395#define TCODE_RHINOIO_OBJECT_DATA (TCODE_OPENNURBS_OBJECT | 0xFFFE) /* obsolete - don't confuse with TCODE_OPENNURBS_OBJECT_DATA */
396#define TCODE_RHINOIO_OBJECT_END (TCODE_OPENNURBS_OBJECT | 0xFFFF) /* obsolete - don't confuse with TCODE_OPENNURBS_OBJECT_END */
399/* legacy objects from Rhino 1.x */
400#define TCODE_LEGACY_ASM (TCODE_LEGACY_GEOMETRY | 0x0001)
401#define TCODE_LEGACY_PRT (TCODE_LEGACY_GEOMETRY | 0x0002)
402#define TCODE_LEGACY_SHL (TCODE_LEGACY_GEOMETRY | 0x0003)
403#define TCODE_LEGACY_FAC (TCODE_LEGACY_GEOMETRY | 0x0004)
404#define TCODE_LEGACY_BND (TCODE_LEGACY_GEOMETRY | 0x0005)
405#define TCODE_LEGACY_TRM (TCODE_LEGACY_GEOMETRY | 0x0006)
406#define TCODE_LEGACY_SRF (TCODE_LEGACY_GEOMETRY | 0x0007)
407#define TCODE_LEGACY_CRV (TCODE_LEGACY_GEOMETRY | 0x0008)
408#define TCODE_LEGACY_SPL (TCODE_LEGACY_GEOMETRY | 0x0009)
409#define TCODE_LEGACY_PNT (TCODE_LEGACY_GEOMETRY | 0x000A)
411#define TCODE_STUFF 0x0100
413#define TCODE_LEGACY_ASMSTUFF (TCODE_LEGACY_GEOMETRY | TCODE_STUFF | TCODE_LEGACY_ASM)
414#define TCODE_LEGACY_PRTSTUFF (TCODE_LEGACY_GEOMETRY | TCODE_STUFF | TCODE_LEGACY_PRT)
415#define TCODE_LEGACY_SHLSTUFF (TCODE_LEGACY_GEOMETRY | TCODE_STUFF | TCODE_LEGACY_SHL)
416#define TCODE_LEGACY_FACSTUFF (TCODE_LEGACY_GEOMETRY | TCODE_STUFF | TCODE_LEGACY_FAC)
417#define TCODE_LEGACY_BNDSTUFF (TCODE_LEGACY_GEOMETRY | TCODE_STUFF | TCODE_LEGACY_BND)
418#define TCODE_LEGACY_TRMSTUFF (TCODE_LEGACY_GEOMETRY | TCODE_STUFF | TCODE_LEGACY_TRM)
419#define TCODE_LEGACY_SRFSTUFF (TCODE_LEGACY_GEOMETRY | TCODE_STUFF | TCODE_LEGACY_SRF)
420#define TCODE_LEGACY_CRVSTUFF (TCODE_LEGACY_GEOMETRY | TCODE_STUFF | TCODE_LEGACY_CRV)
421#define TCODE_LEGACY_SPLSTUFF (TCODE_LEGACY_GEOMETRY | TCODE_STUFF | TCODE_LEGACY_SPL)
422#define TCODE_LEGACY_PNTSTUFF (TCODE_LEGACY_GEOMETRY | TCODE_STUFF | TCODE_LEGACY_PNT)
424/* legacy objects from Rhino 1.x */
425#define TCODE_RH_POINT (TCODE_GEOMETRY | 0x0001)
426
427#define TCODE_RH_SPOTLIGHT (TCODE_RENDER | 0x0001)
429#define TCODE_OLD_RH_TRIMESH (TCODE_GEOMETRY | 0x0011)
430#define TCODE_OLD_MESH_VERTEX_NORMALS (TCODE_GEOMETRY | 0x0012)
431#define TCODE_OLD_MESH_UV (TCODE_GEOMETRY | 0x0013)
432#define TCODE_OLD_FULLMESH (TCODE_GEOMETRY | 0x0014)
435#define TCODE_MESH_OBJECT (TCODE_GEOMETRY | 0x0015)
436#define TCODE_COMPRESSED_MESH_GEOMETRY (TCODE_GEOMETRY | 0x0017)
437#define TCODE_ANALYSIS_MESH (TCODE_GEOMETRY | 0x0018)
439#define TCODE_NAME (TCODE_INTERFACE | 0x0001)
440#define TCODE_VIEW (TCODE_INTERFACE | 0x0002)
441#define TCODE_CPLANE (TCODE_INTERFACE | 0x0003)
442
443#define TCODE_NAMED_CPLANE (TCODE_INTERFACE | 0x0004)
444#define TCODE_NAMED_VIEW (TCODE_INTERFACE | 0x0005)
445#define TCODE_VIEWPORT (TCODE_INTERFACE | 0x0006)
447#define TCODE_SHOWGRID (TCODE_SHORT | TCODE_INTERFACE | 0x0007)
448#define TCODE_SHOWGRIDAXES (TCODE_SHORT | TCODE_INTERFACE | 0x0008)
449#define TCODE_SHOWWORLDAXES (TCODE_SHORT | TCODE_INTERFACE | 0x0009)
451#define TCODE_VIEWPORT_POSITION (TCODE_INTERFACE | 0x000A)
452#define TCODE_VIEWPORT_TRACEINFO (TCODE_INTERFACE | 0x000B)
453#define TCODE_SNAPSIZE (TCODE_INTERFACE | 0x000C)
454#define TCODE_NEAR_CLIP_PLANE (TCODE_INTERFACE | 0x000D)
455#define TCODE_HIDE_TRACE (TCODE_INTERFACE | 0x000E)
457#define TCODE_NOTES (TCODE_INTERFACE | 0x000F)
458#define TCODE_UNIT_AND_TOLERANCES (TCODE_INTERFACE | 0x0010)
460#define TCODE_MAXIMIZED_VIEWPORT (TCODE_SHORT | TCODE_INTERFACE | 0x0011)
461#define TCODE_VIEWPORT_WALLPAPER (TCODE_INTERFACE | 0x0012)
463
464#define TCODE_SUMMARY (TCODE_INTERFACE | 0x0013)
465#define TCODE_BITMAPPREVIEW (TCODE_INTERFACE | 0x0014)
466#define TCODE_VIEWPORT_DISPLAY_MODE (TCODE_SHORT | TCODE_INTERFACE | 0x0015)
468
469#define TCODE_LAYERTABLE (TCODE_SHORT | TCODE_TABLE | 0x0001) /* obsolete - do not use */
470#define TCODE_LAYERREF (TCODE_SHORT | TCODE_TABLEREC | 0x0001)
472#define TCODE_XDATA (TCODE_USER | 0x0001)
473
474#define TCODE_RGB (TCODE_SHORT | TCODE_DISPLAY | 0x0001)
475#define TCODE_TEXTUREMAP (TCODE_DISPLAY | 0x0002)
476#define TCODE_BUMPMAP (TCODE_DISPLAY | 0x0003)
477#define TCODE_TRANSPARENCY (TCODE_SHORT | TCODE_DISPLAY | 0x0004)
478#define TCODE_DISP_AM_RESOLUTION (TCODE_SHORT | TCODE_DISPLAY | 0x0005)
479#define TCODE_RGBDISPLAY (TCODE_SHORT | TCODE_DISPLAY | 0x0006) /* will be used for color by object */
480#define TCODE_RENDER_MATERIAL_ID (TCODE_DISPLAY | 0x0007) /* id for render material */
481
482#define TCODE_LAYER (TCODE_DISPLAY | 0x0010)
484/* obsolete layer typecodes from earlier betas - not used anymore */
485#define TCODE_LAYER_OBSELETE_1 (TCODE_SHORT | TCODE_DISPLAY | 0x0013)
486#define TCODE_LAYER_OBSELETE_2 (TCODE_SHORT | TCODE_DISPLAY | 0x0014)
487#define TCODE_LAYER_OBSELETE_3 (TCODE_SHORT | TCODE_DISPLAY | 0x0015)
488
489/* these were only ever used by AccuModel and never by Rhino */
490#define TCODE_LAYERON (TCODE_SHORT | TCODE_DISPLAY | 0x0016)
491#define TCODE_LAYERTHAWED (TCODE_SHORT | TCODE_DISPLAY | 0x0017)
492#define TCODE_LAYERLOCKED (TCODE_SHORT | TCODE_DISPLAY | 0x0018)
494
495#define TCODE_LAYERVISIBLE (TCODE_SHORT | TCODE_DISPLAY | 0x0012)
496#define TCODE_LAYERPICKABLE (TCODE_SHORT | TCODE_DISPLAY | 0x0030)
497#define TCODE_LAYERSNAPABLE (TCODE_SHORT | TCODE_DISPLAY | 0x0031)
498#define TCODE_LAYERRENDERABLE (TCODE_SHORT | TCODE_DISPLAY | 0x0032)
499
501/* use LAYERSTATE ( 0 = LAYER_ON, 1 = LAYER_OFF, 2 = LAYER_LOCKED ) instead of above individual toggles */
502#define TCODE_LAYERSTATE (TCODE_SHORT | TCODE_DISPLAY | 0x0033)
503#define TCODE_LAYERINDEX (TCODE_SHORT | TCODE_DISPLAY | 0x0034)
504#define TCODE_LAYERMATERIALINDEX (TCODE_SHORT | TCODE_DISPLAY | 0x0035)
505
506#define TCODE_RENDERMESHPARAMS (TCODE_DISPLAY | 0x0020) /* block of parameters for render meshes */
507
508
509
510#define TCODE_DISP_CPLINES (TCODE_SHORT | TCODE_DISPLAY | 0x0022)
511#define TCODE_DISP_MAXLENGTH (TCODE_DISPLAY | 0x0023)
512
513#define TCODE_CURRENTLAYER (TCODE_SHORT | TCODE_DISPLAY | 0x0025 )
514
515#define TCODE_LAYERNAME (TCODE_DISPLAY | 0x0011)
516
517#define TCODE_LEGACY_TOL_FIT (TCODE_TOLERANCE | 0x0001)
518#define TCODE_LEGACY_TOL_ANGLE (TCODE_TOLERANCE | 0x0002)
519
520#define TCODE_DICTIONARY (TCODE_USER | TCODE_CRC | 0x0010)
521#define TCODE_DICTIONARY_ID (TCODE_USER | TCODE_CRC | 0x0011)
522#define TCODE_DICTIONARY_ENTRY (TCODE_USER | TCODE_CRC | 0x0012)
523#define TCODE_DICTIONARY_END (TCODE_USER | TCODE_SHORT | 0x0013)
524
525#endif