10344 lines
333 KiB
C
10344 lines
333 KiB
C
/*****************************************************************************/
|
|
/* LibreDWG - free implementation of the DWG file format */
|
|
/* */
|
|
/* Copyright (C) 2009-2010,2018-2024 Free Software Foundation, Inc. */
|
|
/* */
|
|
/* This library is free software, licensed under the terms of the GNU */
|
|
/* General Public License as published by the Free Software Foundation, */
|
|
/* either version 3 of the License, or (at your option) any later version. */
|
|
/* You should have received a copy of the GNU General Public License */
|
|
/* along with this program. If not, see <http://www.gnu.org/licenses/>. */
|
|
/*****************************************************************************/
|
|
|
|
/*
|
|
* dwg.h: main public header file (the other variant is dwg_api.h)
|
|
*
|
|
* written by Felipe Castro
|
|
* modified by Felipe Corrêa da Silva Sances
|
|
* modified by Rodrigo Rodrigues da Silva
|
|
* modified by Till Heuschmann
|
|
* modified by Reini Urban
|
|
* modified by Michal Josef Špaček
|
|
*/
|
|
|
|
#ifndef DWG_H
|
|
#define DWG_H
|
|
|
|
#define LIBREDWG_VERSION_MAJOR 0
|
|
#define LIBREDWG_VERSION_MINOR 10
|
|
#define LIBREDWG_VERSION ((LIBREDWG_VERSION_MAJOR * 100) + LIBREDWG_VERSION_MINOR)
|
|
// clang-format off
|
|
#define LIBREDWG_SO_VERSION 0:10:0
|
|
// clang-format on
|
|
|
|
/* for uint64_t, but not in swig */
|
|
#ifndef SWIGIMPORTED
|
|
# include <stddef.h>
|
|
# include <stdint.h>
|
|
# include <inttypes.h>
|
|
|
|
/* wchar for R2007+ support
|
|
* But we need the win32 UTF-16 variant, not UTF-32.
|
|
* i.e. only on Windows, AIX, Solaris
|
|
*/
|
|
# if defined(HAVE_WCHAR_H) && defined(SIZEOF_WCHAR_T)
|
|
# if SIZEOF_WCHAR_T == 2
|
|
# include <wchar.h>
|
|
# define HAVE_NATIVE_WCHAR2
|
|
# define DWGCHAR wchar_t
|
|
# define dwg_wchar_t wchar_t
|
|
# endif
|
|
# endif
|
|
#endif
|
|
|
|
#ifndef EXPORT
|
|
# ifdef SWIG
|
|
# define EXPORT extern
|
|
# elif defined(_WIN32) && defined(ENABLE_SHARED)
|
|
# ifdef DLL_EXPORT
|
|
# define EXPORT __declspec(dllexport)
|
|
# else
|
|
# define EXPORT __declspec(dllimport)
|
|
# endif
|
|
# elif defined(__clang__) || defined(__clang) || \
|
|
(defined( __GNUC__) && ((__GNUC__ * 100) + __GNUC_MINOR__) >= 303)
|
|
# define EXPORT __attribute__((visibility("default")))
|
|
# else
|
|
# define EXPORT
|
|
# endif
|
|
#endif
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
# ifndef restrict
|
|
# define restrict __restrict
|
|
# endif
|
|
#endif
|
|
|
|
#define BITCODE_DOUBLE double
|
|
|
|
/* The FORMAT_* are for logging only */
|
|
typedef unsigned char BITCODE_RC;
|
|
#if defined _MSC_VER && !defined __clang__
|
|
# define FORMAT_RC "0x%2x"
|
|
# define SCANF_2X "%2hhX"
|
|
#else
|
|
# define FORMAT_RC "0x%hhx"
|
|
# define SCANF_2X "%2hhX"
|
|
#endif
|
|
#define FORMAT_RCd "%d"
|
|
#define FORMAT_RCu "%u"
|
|
#define FORMAT_RCx "0x%x"
|
|
typedef signed char BITCODE_RCd;
|
|
typedef unsigned char BITCODE_RCu;
|
|
typedef unsigned char BITCODE_RCx;
|
|
typedef unsigned char BITCODE_B;
|
|
#define FORMAT_B "%d"
|
|
typedef unsigned char BITCODE_BB;
|
|
#define FORMAT_BB "%u"
|
|
/* Since R24 */
|
|
typedef unsigned char BITCODE_3B;
|
|
#define FORMAT_3B "%u"
|
|
//#ifdef HAVE_STDINT_H
|
|
//#define BITCODE_BS uint16_t
|
|
//#define BITCODE_RS uint16_t
|
|
//#define BITCODE_BL uint32_t
|
|
//#define BITCODE_RL uint32_t
|
|
//#define BITCODE_BLd int32_t
|
|
//#define BITCODE_RLd int32_t
|
|
typedef uint16_t BITCODE_BS;
|
|
typedef int16_t BITCODE_BSd;
|
|
typedef uint16_t BITCODE_BSx;
|
|
typedef uint16_t BITCODE_RS;
|
|
typedef int16_t BITCODE_RSd;
|
|
typedef uint16_t BITCODE_RSx;
|
|
typedef uint32_t BITCODE_BL;
|
|
typedef uint32_t BITCODE_BLx;
|
|
typedef int32_t BITCODE_BLd;
|
|
typedef uint32_t BITCODE_RL;
|
|
typedef uint32_t BITCODE_RLx;
|
|
typedef int32_t BITCODE_RLd;
|
|
/* e.g. old cygwin 64 vs 32 */
|
|
/*#else
|
|
# if defined(__WORDSIZE) && __WORDSIZE == 64
|
|
typedef unsigned short int BITCODE_BS;
|
|
typedef unsigned short int BITCODE_RS;
|
|
typedef unsigned int BITCODE_BL;
|
|
typedef unsigned int BITCODE_RL;
|
|
typedef int BITCODE_BLd;
|
|
typedef int BITCODE_RLd;
|
|
# else
|
|
typedef unsigned short int BITCODE_BS;
|
|
typedef unsigned short int BITCODE_RS;
|
|
typedef unsigned long BITCODE_BL;
|
|
typedef unsigned long BITCODE_RL;
|
|
typedef long BITCODE_BLd;
|
|
typedef long BITCODE_RLd;
|
|
# endif
|
|
#endif
|
|
*/
|
|
//#ifdef HAVE_INTTYPES_H
|
|
#define FORMAT_BS "%" PRIu16
|
|
#define FORMAT_BSd "%" PRId16
|
|
#define FORMAT_BSx "0x%" PRIx16
|
|
#define FORMAT_RS "%" PRIu16
|
|
#define FORMAT_RSd "%" PRId16
|
|
#define FORMAT_RSx "0x%" PRIx16
|
|
#define FORMAT_BL "%" PRIu32
|
|
#define FORMAT_RL "%" PRIu32
|
|
#define FORMAT_BLd "%" PRId32
|
|
#define FORMAT_RLd "%" PRId32
|
|
#define FORMAT_RLx "0x%" PRIx32
|
|
#define FORMAT_BLX "%" PRIX32
|
|
#define FORMAT_BLx "0x%" PRIx32
|
|
/*#else
|
|
# define FORMAT_BS "%hu"
|
|
# define FORMAT_RS "%hu"
|
|
# define FORMAT_BL "%u"
|
|
# define FORMAT_RL "%u"
|
|
# define FORMAT_BLd "%d"
|
|
# define FORMAT_RLd "%d"
|
|
# define FORMAT_BLX "%X"
|
|
# define FORMAT_BLx "%x"
|
|
#endif
|
|
*/
|
|
typedef BITCODE_DOUBLE BITCODE_RD;
|
|
#define FORMAT_RD "%g"
|
|
/* Since R2004 */
|
|
typedef uint64_t BITCODE_RLL;
|
|
typedef int64_t BITCODE_RLLd;
|
|
typedef uint64_t BITCODE_BLL;
|
|
#define FORMAT_RLLx "%" PRIX64
|
|
#define FORMAT_RLL "0x%" PRIX64
|
|
#define FORMAT_RLLd "%" PRId64
|
|
#define FORMAT_BLL "%" PRIu64
|
|
typedef int32_t BITCODE_MC;
|
|
#define FORMAT_MC "%" PRId32
|
|
typedef uint64_t BITCODE_UMC;
|
|
#define FORMAT_UMC FORMAT_RLL
|
|
typedef BITCODE_BL BITCODE_MS;
|
|
#define FORMAT_MS FORMAT_BL
|
|
#ifndef HAVE_NATIVE_WCHAR2
|
|
typedef BITCODE_RS dwg_wchar_t;
|
|
# define DWGCHAR dwg_wchar_t
|
|
#endif
|
|
typedef unsigned char* BITCODE_TF;
|
|
#define FORMAT_TF "\"%s\""
|
|
typedef char* BITCODE_TV;
|
|
#define FORMAT_TV "\"%s\""
|
|
#define BITCODE_T16 BITCODE_TV
|
|
#define FORMAT_T16 FORMAT_TV
|
|
#define BITCODE_TU16 BITCODE_TU
|
|
#define FORMAT_TU16 FORMAT_TU
|
|
#define BITCODE_T32 BITCODE_TV
|
|
#define FORMAT_T32 FORMAT_TV
|
|
#define BITCODE_TU32 BITCODE_TV
|
|
#define FORMAT_TU32 FORMAT_TV
|
|
typedef BITCODE_DOUBLE BITCODE_BT;
|
|
#define FORMAT_BT "%g"
|
|
typedef BITCODE_DOUBLE BITCODE_DD;
|
|
#define FORMAT_DD "%g"
|
|
typedef BITCODE_DOUBLE BITCODE_BD;
|
|
#define FORMAT_BD "%g"
|
|
typedef BITCODE_RC BITCODE_4BITS;
|
|
#define FORMAT_4BITS "%1x"
|
|
/* double stored as string. ARCALIGNEDTEXT */
|
|
typedef BITCODE_TV BITCODE_D2T;
|
|
#define FORMAT_D2T "%s"
|
|
|
|
/* TODO: implement version dependent string parsing */
|
|
/* encode codepages/utf8 */
|
|
#define BITCODE_T BITCODE_TV
|
|
#ifdef HAVE_NATIVE_WCHAR2
|
|
typedef dwg_wchar_t* BITCODE_TU; /* native UCS-2 wchar_t */
|
|
# define FORMAT_TU "\"%ls\""
|
|
#else
|
|
typedef BITCODE_RS* BITCODE_TU; /* UCS-2 unicode text */
|
|
# define FORMAT_TU "\"%hn\"" /* will print garbage */
|
|
#endif
|
|
|
|
typedef struct _dwg_time_bll
|
|
{
|
|
BITCODE_BL days;
|
|
BITCODE_BL ms;
|
|
BITCODE_BD value;
|
|
} Dwg_Bitcode_TimeBLL;
|
|
|
|
typedef struct _dwg_bitcode_2rd
|
|
{
|
|
BITCODE_RD x;
|
|
BITCODE_RD y;
|
|
} Dwg_Bitcode_2RD;
|
|
|
|
typedef struct _dwg_bitcode_2bd
|
|
{
|
|
BITCODE_BD x;
|
|
BITCODE_BD y;
|
|
} Dwg_Bitcode_2BD;
|
|
|
|
typedef struct _dwg_bitcode_3rd
|
|
{
|
|
BITCODE_RD x;
|
|
BITCODE_RD y;
|
|
BITCODE_RD z;
|
|
} Dwg_Bitcode_3RD;
|
|
|
|
typedef struct _dwg_bitcode_3bd
|
|
{
|
|
BITCODE_BD x;
|
|
BITCODE_BD y;
|
|
BITCODE_BD z;
|
|
} Dwg_Bitcode_3BD;
|
|
|
|
typedef Dwg_Bitcode_TimeBLL BITCODE_TIMEBLL;
|
|
typedef Dwg_Bitcode_TimeBLL BITCODE_TIMERLL;
|
|
/* #define FORMAT_TIMEBLL FORMAT_BL "." FORMAT_BL */
|
|
typedef Dwg_Bitcode_2RD BITCODE_2RD;
|
|
typedef Dwg_Bitcode_2BD BITCODE_2BD;
|
|
typedef Dwg_Bitcode_2BD BITCODE_2DPOINT;
|
|
typedef Dwg_Bitcode_2BD BITCODE_2BD_1;
|
|
typedef Dwg_Bitcode_3RD BITCODE_3RD;
|
|
typedef Dwg_Bitcode_3BD BITCODE_3BD;
|
|
typedef Dwg_Bitcode_3BD BITCODE_3DPOINT;
|
|
typedef Dwg_Bitcode_3BD BITCODE_3BD_1;
|
|
typedef Dwg_Bitcode_3BD BITCODE_BE;
|
|
#define BITCODE_3DVECTOR BITCODE_3BD_1
|
|
|
|
typedef enum DWG_VERSION_TYPE
|
|
{
|
|
R_INVALID,
|
|
// Releases based on https://autodesk.blogs.com/between_the_lines/autocad-release-history.html
|
|
R_1_1, /* MC0.0/1 MicroCAD Release 1 */
|
|
R_1_2, /* AC1.2/2 AutoCAD Release 2 */
|
|
R_1_3, /* AC1.3/? AutoCAD Release 3 */
|
|
R_1_4, /* AC1.40/3 AutoCAD Release 4 */
|
|
R_2_0b, /* AC1.50/4 AutoCAD 2.0 beta */
|
|
R_2_0, /* AC1.50/4 AutoCAD Release 5 */
|
|
R_2_10, /* AC2.10/5 AutoCAD Release 6 */
|
|
R_2_21, /* AC2.21/6 AutoCAD Release ? */
|
|
R_2_22, /* AC2.22/7 AutoCAD Release ? */
|
|
R_2_4, /* AC1001/8 AutoCAD Release ? */
|
|
R_2_5, /* AC1002/9 AutoCAD Release 7 */
|
|
R_2_6, /* AC1003/10 AutoCAD Release 8 */
|
|
R_9, /* AC1004/0xb AutoCAD Release 9 */
|
|
R_9c1, /* AC1005/0xc AutoCAD Release 9c1 */
|
|
R_10, /* AC1006/0xd AutoCAD Release 10 */
|
|
R_11b1, /* AC1007/0xe AutoCAD 11 beta 1 */
|
|
R_11b2, /* AC1008/0xf AutoCAD 11 beta 2 */
|
|
R_11, /* AC1009/0x10 AutoCAD Release 11/12 (LT R1/R2) */
|
|
R_12 = R_11,
|
|
R_13b1, /* AC1010/0x11 AutoCAD 13 beta 1 */
|
|
R_13b2, /* AC1011/0x12 AutoCAD 13 beta 2 */
|
|
R_13, /* AC1012/0x13 AutoCAD Release 13 */
|
|
R_13c3, /* AC1013/0x14 AutoCAD Release 13c3 */
|
|
R_14, /* AC1014/0x15 AutoCAD Release 14 */
|
|
R_2000b, /* AC1500/0x16 AutoCAD 2000 beta */
|
|
R_2000, /* AC1015/0x17 AutoCAD Release 2000 */
|
|
R_2000i, /* AC1016/0x17 AutoCAD Release 2000i */
|
|
R_2002, /* AC1017/0x17 AutoCAD Release 2002 */
|
|
R_2004a, /* AC402a/0x18 AutoCAD 2004 alpha a */
|
|
R_2004b, /* AC402b/0x18 AutoCAD 2004 alpha b */
|
|
R_2004c, /* AC1018/0x18 AutoCAD 2004 beta */
|
|
R_2004, /* AC1018/0x19 AutoCAD Release 2004 - 2006 */
|
|
//R_2005, /* AC1019/0x19 AutoCAD 2005 */
|
|
//R_2006, /* AC1020/0x19 AutoCAD 2006 */
|
|
R_2007a, /* AC701a/0x19 AutoCAD 2007 alpha 1 */
|
|
R_2007b, /* AC1021/0x19 AutoCAD 2007 beta */
|
|
R_2007, /* AC1021/0x1b AutoCAD Release 2007 - 2009 */
|
|
//R_2008, /* AC1022/0x1b AutoCAD 2008 */
|
|
//R_2009, /* AC1023/0x1b AutoCAD 2009 */
|
|
R_2010b, /* AC1024/0x1b AutoCAD 2009 */
|
|
R_2010, /* AC1024/0x1c AutoCAD Release 2010 - 2012 */
|
|
//R_2011, /* AC1025/0x1d AutoCAD 2011 */
|
|
//R_2012, /* AC1026/0x1e AutoCAD 2012 */
|
|
R_2013b, /* AC1027/0x1e AutoCAD 2013 beta */
|
|
R_2013, /* AC1027/0x1f AutoCAD Release 2013 - 2017 */
|
|
//R_2014, /* AC1028/0x1f AutoCAD 2014 */
|
|
//R_2015, /* AC1029/0x1f AutoCAD 2015 */
|
|
//R_2016, /* AC1030/0x1f AutoCAD 2016 */
|
|
//R_2017, /* AC1031/0x20 AutoCAD 2017 */
|
|
R_2018b, /* AC1032/0x20 AutoCAD 2018 beta */
|
|
R_2018, /* AC1032/0x21 AutoCAD Release 2018 - 2021 */
|
|
//R_2019, /* AC1033/0x22 AutoCAD 2019 */
|
|
//R_2020, /* AC1034/0x23 AutoCAD 2020 */
|
|
//R_2021, /* AC1035/0x24 AutoCAD 2021 */
|
|
R_2022b, /* AC103-4 AutoCAD 2022 beta? */
|
|
R_AFTER
|
|
} Dwg_Version_Type;
|
|
#define DWG_VERSIONS (int)(R_AFTER+1)
|
|
|
|
typedef struct dwg_versions {
|
|
Dwg_Version_Type r;
|
|
const char *const type;
|
|
const char *const hdr; // char[6] mostly
|
|
const char *const desc;
|
|
uint8_t dwg_version;
|
|
} Dwg_Versions;
|
|
|
|
typedef enum DWG_CLASS_STABILITY {
|
|
DWG_CLASS_STABLE,
|
|
DWG_CLASS_UNSTABLE,
|
|
DWG_CLASS_DEBUGGING,
|
|
DWG_CLASS_UNHANDLED
|
|
} Dwg_Class_Stability;
|
|
|
|
typedef enum DWG_ENTITY_SECTIONS {
|
|
DWG_ENTITY_SECTION = 0,
|
|
DWG_BLOCKS_SECTION = 0x40,
|
|
DWG_EXTRA_SECTION = 0x80
|
|
} Dwg_Entity_Sections;
|
|
|
|
/**
|
|
Object supertypes that exist in dwg-files.
|
|
*/
|
|
typedef enum DWG_OBJECT_SUPERTYPE
|
|
{
|
|
DWG_SUPERTYPE_ENTITY, DWG_SUPERTYPE_OBJECT
|
|
} Dwg_Object_Supertype;
|
|
|
|
/**
|
|
Object and Entity types that exist in dwg-files.
|
|
*/
|
|
typedef enum DWG_OBJECT_TYPE
|
|
{
|
|
DWG_TYPE_UNUSED = 0x00,
|
|
DWG_TYPE_TEXT = 0x01,
|
|
DWG_TYPE_ATTRIB = 0x02,
|
|
DWG_TYPE_ATTDEF = 0x03,
|
|
DWG_TYPE_BLOCK = 0x04,
|
|
DWG_TYPE_ENDBLK = 0x05,
|
|
DWG_TYPE_SEQEND = 0x06,
|
|
DWG_TYPE_INSERT = 0x07,
|
|
DWG_TYPE_MINSERT = 0x08,
|
|
// DWG_TYPE_TRACE_old = 0x09, /* old TRACE r10-r11 only */
|
|
DWG_TYPE_VERTEX_2D = 0x0a,
|
|
DWG_TYPE_VERTEX_3D = 0x0b,
|
|
DWG_TYPE_VERTEX_MESH = 0x0c,
|
|
DWG_TYPE_VERTEX_PFACE = 0x0d,
|
|
DWG_TYPE_VERTEX_PFACE_FACE = 0x0e,
|
|
DWG_TYPE_POLYLINE_2D = 0x0f,
|
|
DWG_TYPE_POLYLINE_3D = 0x10,
|
|
DWG_TYPE_ARC = 0x11,
|
|
DWG_TYPE_CIRCLE = 0x12,
|
|
DWG_TYPE_LINE = 0x13,
|
|
DWG_TYPE_DIMENSION_ORDINATE = 0x14,
|
|
DWG_TYPE_DIMENSION_LINEAR = 0x15,
|
|
DWG_TYPE_DIMENSION_ALIGNED = 0x16,
|
|
DWG_TYPE_DIMENSION_ANG3PT = 0x17,
|
|
DWG_TYPE_DIMENSION_ANG2LN = 0x18,
|
|
DWG_TYPE_DIMENSION_RADIUS = 0x19,
|
|
DWG_TYPE_DIMENSION_DIAMETER = 0x1A,
|
|
DWG_TYPE_POINT = 0x1b,
|
|
DWG_TYPE__3DFACE = 0x1c,
|
|
DWG_TYPE_POLYLINE_PFACE = 0x1d,
|
|
DWG_TYPE_POLYLINE_MESH = 0x1e,
|
|
DWG_TYPE_SOLID = 0x1f,
|
|
DWG_TYPE_TRACE = 0x20,
|
|
DWG_TYPE_SHAPE = 0x21,
|
|
DWG_TYPE_VIEWPORT = 0x22,
|
|
DWG_TYPE_ELLIPSE = 0x23,
|
|
DWG_TYPE_SPLINE = 0x24,
|
|
DWG_TYPE_REGION = 0x25,
|
|
DWG_TYPE__3DSOLID = 0x26,
|
|
DWG_TYPE_BODY = 0x27,
|
|
DWG_TYPE_RAY = 0x28,
|
|
DWG_TYPE_XLINE = 0x29,
|
|
DWG_TYPE_DICTIONARY = 0x2a,
|
|
DWG_TYPE_OLEFRAME = 0x2b,
|
|
DWG_TYPE_MTEXT = 0x2c,
|
|
DWG_TYPE_LEADER = 0x2d,
|
|
DWG_TYPE_TOLERANCE = 0x2e,
|
|
DWG_TYPE_MLINE = 0x2f,
|
|
DWG_TYPE_BLOCK_CONTROL = 0x30,
|
|
DWG_TYPE_BLOCK_HEADER = 0x31,
|
|
DWG_TYPE_LAYER_CONTROL = 0x32,
|
|
DWG_TYPE_LAYER = 0x33,
|
|
DWG_TYPE_STYLE_CONTROL = 0x34, /* 52 SHAPEFILE_CONTROL */
|
|
DWG_TYPE_STYLE = 0x35,
|
|
/* DWG_TYPE_<UNKNOWN> = 0x36, */
|
|
/* DWG_TYPE_<UNKNOWN> = 0x37, */
|
|
DWG_TYPE_LTYPE_CONTROL = 0x38,
|
|
DWG_TYPE_LTYPE = 0x39,
|
|
/* DWG_TYPE_<UNKNOWN> = 0x3a, */
|
|
/* DWG_TYPE_<UNKNOWN> = 0x3b, */
|
|
DWG_TYPE_VIEW_CONTROL = 0x3c,
|
|
DWG_TYPE_VIEW = 0x3d,
|
|
DWG_TYPE_UCS_CONTROL = 0x3e,
|
|
DWG_TYPE_UCS = 0x3f,
|
|
DWG_TYPE_VPORT_CONTROL = 0x40,
|
|
DWG_TYPE_VPORT = 0x41,
|
|
DWG_TYPE_APPID_CONTROL = 0x42,
|
|
DWG_TYPE_APPID = 0x43,
|
|
DWG_TYPE_DIMSTYLE_CONTROL = 0x44,
|
|
DWG_TYPE_DIMSTYLE = 0x45,
|
|
DWG_TYPE_VX_CONTROL = 0x46,
|
|
DWG_TYPE_VX_TABLE_RECORD = 0x47,
|
|
DWG_TYPE_GROUP = 0x48,
|
|
DWG_TYPE_MLINESTYLE = 0x49,
|
|
DWG_TYPE_OLE2FRAME = 0x4a,
|
|
DWG_TYPE_DUMMY = 0x4b,
|
|
DWG_TYPE_LONG_TRANSACTION = 0x4c,
|
|
DWG_TYPE_LWPOLYLINE = 0x4d, /* ?? */
|
|
DWG_TYPE_HATCH = 0x4e,
|
|
DWG_TYPE_XRECORD = 0x4f,
|
|
DWG_TYPE_PLACEHOLDER = 0x50,
|
|
DWG_TYPE_VBA_PROJECT = 0x51,
|
|
DWG_TYPE_LAYOUT = 0x52,
|
|
|
|
DWG_TYPE_PROXY_ENTITY = 0x1f2, /* 498 */
|
|
DWG_TYPE_PROXY_OBJECT = 0x1f3, /* 499 */
|
|
|
|
/* non-fixed types > 500. not stored as type, but as fixedtype */
|
|
|
|
DWG_TYPE_ACDSRECORD = 500,
|
|
DWG_TYPE_ACDSSCHEMA,
|
|
DWG_TYPE_ACMECOMMANDHISTORY,
|
|
DWG_TYPE_ACMESCOPE,
|
|
DWG_TYPE_ACMESTATEMGR,
|
|
DWG_TYPE_ACSH_BOOLEAN_CLASS,
|
|
DWG_TYPE_ACSH_BOX_CLASS,
|
|
DWG_TYPE_ACSH_BREP_CLASS,
|
|
DWG_TYPE_ACSH_CHAMFER_CLASS,
|
|
DWG_TYPE_ACSH_CONE_CLASS,
|
|
DWG_TYPE_ACSH_CYLINDER_CLASS,
|
|
DWG_TYPE_ACSH_EXTRUSION_CLASS,
|
|
DWG_TYPE_ACSH_FILLET_CLASS,
|
|
DWG_TYPE_ACSH_HISTORY_CLASS,
|
|
DWG_TYPE_ACSH_LOFT_CLASS,
|
|
DWG_TYPE_ACSH_PYRAMID_CLASS,
|
|
DWG_TYPE_ACSH_REVOLVE_CLASS,
|
|
DWG_TYPE_ACSH_SPHERE_CLASS,
|
|
DWG_TYPE_ACSH_SWEEP_CLASS,
|
|
DWG_TYPE_ACSH_TORUS_CLASS,
|
|
DWG_TYPE_ACSH_WEDGE_CLASS,
|
|
DWG_TYPE_ALDIMOBJECTCONTEXTDATA,
|
|
DWG_TYPE_ALIGNMENTPARAMETERENTITY,
|
|
DWG_TYPE_ANGDIMOBJECTCONTEXTDATA,
|
|
DWG_TYPE_ANNOTSCALEOBJECTCONTEXTDATA,
|
|
DWG_TYPE_ARCALIGNEDTEXT,
|
|
DWG_TYPE_ARC_DIMENSION,
|
|
DWG_TYPE_ASSOC2DCONSTRAINTGROUP,
|
|
DWG_TYPE_ASSOC3POINTANGULARDIMACTIONBODY,
|
|
DWG_TYPE_ASSOCACTION,
|
|
DWG_TYPE_ASSOCACTIONPARAM,
|
|
DWG_TYPE_ASSOCALIGNEDDIMACTIONBODY,
|
|
DWG_TYPE_ASSOCARRAYACTIONBODY,
|
|
DWG_TYPE_ASSOCARRAYMODIFYACTIONBODY,
|
|
DWG_TYPE_ASSOCARRAYMODIFYPARAMETERS,
|
|
DWG_TYPE_ASSOCARRAYPATHPARAMETERS,
|
|
DWG_TYPE_ASSOCARRAYPOLARPARAMETERS,
|
|
DWG_TYPE_ASSOCARRAYRECTANGULARPARAMETERS,
|
|
DWG_TYPE_ASSOCASMBODYACTIONPARAM,
|
|
DWG_TYPE_ASSOCBLENDSURFACEACTIONBODY,
|
|
DWG_TYPE_ASSOCCOMPOUNDACTIONPARAM,
|
|
DWG_TYPE_ASSOCDEPENDENCY,
|
|
DWG_TYPE_ASSOCDIMDEPENDENCYBODY,
|
|
DWG_TYPE_ASSOCEDGEACTIONPARAM,
|
|
DWG_TYPE_ASSOCEDGECHAMFERACTIONBODY,
|
|
DWG_TYPE_ASSOCEDGEFILLETACTIONBODY,
|
|
DWG_TYPE_ASSOCEXTENDSURFACEACTIONBODY,
|
|
DWG_TYPE_ASSOCEXTRUDEDSURFACEACTIONBODY,
|
|
DWG_TYPE_ASSOCFACEACTIONPARAM,
|
|
DWG_TYPE_ASSOCFILLETSURFACEACTIONBODY,
|
|
DWG_TYPE_ASSOCGEOMDEPENDENCY,
|
|
DWG_TYPE_ASSOCLOFTEDSURFACEACTIONBODY,
|
|
DWG_TYPE_ASSOCMLEADERACTIONBODY,
|
|
DWG_TYPE_ASSOCNETWORK,
|
|
DWG_TYPE_ASSOCNETWORKSURFACEACTIONBODY,
|
|
DWG_TYPE_ASSOCOBJECTACTIONPARAM,
|
|
DWG_TYPE_ASSOCOFFSETSURFACEACTIONBODY,
|
|
DWG_TYPE_ASSOCORDINATEDIMACTIONBODY,
|
|
DWG_TYPE_ASSOCOSNAPPOINTREFACTIONPARAM,
|
|
DWG_TYPE_ASSOCPATCHSURFACEACTIONBODY,
|
|
DWG_TYPE_ASSOCPATHACTIONPARAM,
|
|
DWG_TYPE_ASSOCPERSSUBENTMANAGER,
|
|
DWG_TYPE_ASSOCPLANESURFACEACTIONBODY,
|
|
DWG_TYPE_ASSOCPOINTREFACTIONPARAM,
|
|
DWG_TYPE_ASSOCRESTOREENTITYSTATEACTIONBODY,
|
|
DWG_TYPE_ASSOCREVOLVEDSURFACEACTIONBODY,
|
|
DWG_TYPE_ASSOCROTATEDDIMACTIONBODY,
|
|
DWG_TYPE_ASSOCSWEPTSURFACEACTIONBODY,
|
|
DWG_TYPE_ASSOCTRIMSURFACEACTIONBODY,
|
|
DWG_TYPE_ASSOCVALUEDEPENDENCY,
|
|
DWG_TYPE_ASSOCVARIABLE,
|
|
DWG_TYPE_ASSOCVERTEXACTIONPARAM,
|
|
DWG_TYPE_BASEPOINTPARAMETERENTITY,
|
|
DWG_TYPE_BLKREFOBJECTCONTEXTDATA,
|
|
DWG_TYPE_BLOCKALIGNEDCONSTRAINTPARAMETER,
|
|
DWG_TYPE_BLOCKALIGNMENTGRIP,
|
|
DWG_TYPE_BLOCKALIGNMENTPARAMETER,
|
|
DWG_TYPE_BLOCKANGULARCONSTRAINTPARAMETER,
|
|
DWG_TYPE_BLOCKARRAYACTION,
|
|
DWG_TYPE_BLOCKBASEPOINTPARAMETER,
|
|
DWG_TYPE_BLOCKDIAMETRICCONSTRAINTPARAMETER,
|
|
DWG_TYPE_BLOCKFLIPACTION,
|
|
DWG_TYPE_BLOCKFLIPGRIP,
|
|
DWG_TYPE_BLOCKFLIPPARAMETER,
|
|
DWG_TYPE_BLOCKGRIPLOCATIONCOMPONENT,
|
|
DWG_TYPE_BLOCKHORIZONTALCONSTRAINTPARAMETER,
|
|
DWG_TYPE_BLOCKLINEARCONSTRAINTPARAMETER,
|
|
DWG_TYPE_BLOCKLINEARGRIP,
|
|
DWG_TYPE_BLOCKLINEARPARAMETER,
|
|
DWG_TYPE_BLOCKLOOKUPACTION,
|
|
DWG_TYPE_BLOCKLOOKUPGRIP,
|
|
DWG_TYPE_BLOCKLOOKUPPARAMETER,
|
|
DWG_TYPE_BLOCKMOVEACTION,
|
|
DWG_TYPE_BLOCKPARAMDEPENDENCYBODY,
|
|
DWG_TYPE_BLOCKPOINTPARAMETER,
|
|
DWG_TYPE_BLOCKPOLARGRIP,
|
|
DWG_TYPE_BLOCKPOLARPARAMETER,
|
|
DWG_TYPE_BLOCKPOLARSTRETCHACTION,
|
|
DWG_TYPE_BLOCKPROPERTIESTABLE,
|
|
DWG_TYPE_BLOCKPROPERTIESTABLEGRIP,
|
|
DWG_TYPE_BLOCKRADIALCONSTRAINTPARAMETER,
|
|
DWG_TYPE_BLOCKREPRESENTATION,
|
|
DWG_TYPE_BLOCKROTATEACTION,
|
|
DWG_TYPE_BLOCKROTATIONGRIP,
|
|
DWG_TYPE_BLOCKROTATIONPARAMETER,
|
|
DWG_TYPE_BLOCKSCALEACTION,
|
|
DWG_TYPE_BLOCKSTRETCHACTION,
|
|
DWG_TYPE_BLOCKUSERPARAMETER,
|
|
DWG_TYPE_BLOCKVERTICALCONSTRAINTPARAMETER,
|
|
DWG_TYPE_BLOCKVISIBILITYGRIP,
|
|
DWG_TYPE_BLOCKVISIBILITYPARAMETER,
|
|
DWG_TYPE_BLOCKXYGRIP,
|
|
DWG_TYPE_BLOCKXYPARAMETER,
|
|
DWG_TYPE_CAMERA,
|
|
DWG_TYPE_CELLSTYLEMAP,
|
|
DWG_TYPE_CONTEXTDATAMANAGER,
|
|
DWG_TYPE_CSACDOCUMENTOPTIONS,
|
|
DWG_TYPE_CURVEPATH,
|
|
DWG_TYPE_DATALINK,
|
|
DWG_TYPE_DATATABLE,
|
|
DWG_TYPE_DBCOLOR,
|
|
DWG_TYPE_DETAILVIEWSTYLE,
|
|
DWG_TYPE_DGNDEFINITION,
|
|
DWG_TYPE_DGNUNDERLAY,
|
|
DWG_TYPE_DICTIONARYVAR,
|
|
DWG_TYPE_DICTIONARYWDFLT,
|
|
DWG_TYPE_DIMASSOC,
|
|
DWG_TYPE_DMDIMOBJECTCONTEXTDATA,
|
|
DWG_TYPE_DWFDEFINITION,
|
|
DWG_TYPE_DWFUNDERLAY,
|
|
DWG_TYPE_DYNAMICBLOCKPROXYNODE,
|
|
DWG_TYPE_DYNAMICBLOCKPURGEPREVENTER,
|
|
DWG_TYPE_EVALUATION_GRAPH,
|
|
DWG_TYPE_EXTRUDEDSURFACE,
|
|
DWG_TYPE_FCFOBJECTCONTEXTDATA,
|
|
DWG_TYPE_FIELD,
|
|
DWG_TYPE_FIELDLIST,
|
|
DWG_TYPE_FLIPPARAMETERENTITY,
|
|
DWG_TYPE_GEODATA,
|
|
DWG_TYPE_GEOMAPIMAGE,
|
|
DWG_TYPE_GEOPOSITIONMARKER,
|
|
DWG_TYPE_GRADIENT_BACKGROUND,
|
|
DWG_TYPE_GROUND_PLANE_BACKGROUND,
|
|
DWG_TYPE_HELIX,
|
|
DWG_TYPE_IBL_BACKGROUND,
|
|
DWG_TYPE_IDBUFFER,
|
|
DWG_TYPE_IMAGE,
|
|
DWG_TYPE_IMAGEDEF,
|
|
DWG_TYPE_IMAGEDEF_REACTOR,
|
|
DWG_TYPE_IMAGE_BACKGROUND,
|
|
DWG_TYPE_INDEX,
|
|
DWG_TYPE_LARGE_RADIAL_DIMENSION,
|
|
DWG_TYPE_LAYERFILTER,
|
|
DWG_TYPE_LAYER_INDEX,
|
|
DWG_TYPE_LAYOUTPRINTCONFIG,
|
|
DWG_TYPE_LEADEROBJECTCONTEXTDATA,
|
|
DWG_TYPE_LIGHT,
|
|
DWG_TYPE_LIGHTLIST,
|
|
DWG_TYPE_LINEARPARAMETERENTITY,
|
|
DWG_TYPE_LOFTEDSURFACE,
|
|
DWG_TYPE_MATERIAL,
|
|
DWG_TYPE_MENTALRAYRENDERSETTINGS,
|
|
DWG_TYPE_MESH,
|
|
DWG_TYPE_MLEADEROBJECTCONTEXTDATA,
|
|
DWG_TYPE_MLEADERSTYLE,
|
|
DWG_TYPE_MOTIONPATH,
|
|
DWG_TYPE_MPOLYGON,
|
|
DWG_TYPE_MTEXTATTRIBUTEOBJECTCONTEXTDATA,
|
|
DWG_TYPE_MTEXTOBJECTCONTEXTDATA,
|
|
DWG_TYPE_MULTILEADER,
|
|
DWG_TYPE_NAVISWORKSMODEL,
|
|
DWG_TYPE_NAVISWORKSMODELDEF,
|
|
DWG_TYPE_NPOCOLLECTION,
|
|
DWG_TYPE_NURBSURFACE,
|
|
DWG_TYPE_OBJECT_PTR,
|
|
DWG_TYPE_ORDDIMOBJECTCONTEXTDATA,
|
|
DWG_TYPE_PARTIAL_VIEWING_INDEX,
|
|
//DWG_TYPE_PARTIAL_VIEWING_FILTER,
|
|
DWG_TYPE_PDFDEFINITION,
|
|
DWG_TYPE_PDFUNDERLAY,
|
|
DWG_TYPE_PERSUBENTMGR,
|
|
DWG_TYPE_PLANESURFACE,
|
|
DWG_TYPE_PLOTSETTINGS,
|
|
DWG_TYPE_POINTCLOUD,
|
|
DWG_TYPE_POINTCLOUDCOLORMAP,
|
|
DWG_TYPE_POINTCLOUDDEF,
|
|
DWG_TYPE_POINTCLOUDDEFEX,
|
|
DWG_TYPE_POINTCLOUDDEF_REACTOR,
|
|
DWG_TYPE_POINTCLOUDDEF_REACTOR_EX,
|
|
DWG_TYPE_POINTCLOUDEX,
|
|
DWG_TYPE_POINTPARAMETERENTITY,
|
|
DWG_TYPE_POINTPATH,
|
|
DWG_TYPE_POLARGRIPENTITY,
|
|
DWG_TYPE_RADIMLGOBJECTCONTEXTDATA,
|
|
DWG_TYPE_RADIMOBJECTCONTEXTDATA,
|
|
DWG_TYPE_RAPIDRTRENDERSETTINGS,
|
|
DWG_TYPE_RASTERVARIABLES,
|
|
DWG_TYPE_RENDERENTRY,
|
|
DWG_TYPE_RENDERENVIRONMENT,
|
|
DWG_TYPE_RENDERGLOBAL,
|
|
DWG_TYPE_RENDERSETTINGS,
|
|
DWG_TYPE_REVOLVEDSURFACE,
|
|
DWG_TYPE_ROTATIONPARAMETERENTITY,
|
|
DWG_TYPE_RTEXT,
|
|
DWG_TYPE_SCALE,
|
|
DWG_TYPE_SECTIONOBJECT,
|
|
DWG_TYPE_SECTIONVIEWSTYLE,
|
|
DWG_TYPE_SECTION_MANAGER,
|
|
DWG_TYPE_SECTION_SETTINGS,
|
|
DWG_TYPE_SKYLIGHT_BACKGROUND,
|
|
DWG_TYPE_SOLID_BACKGROUND,
|
|
DWG_TYPE_SORTENTSTABLE,
|
|
DWG_TYPE_SPATIAL_FILTER,
|
|
DWG_TYPE_SPATIAL_INDEX,
|
|
DWG_TYPE_SUN,
|
|
DWG_TYPE_SUNSTUDY,
|
|
DWG_TYPE_SWEPTSURFACE,
|
|
DWG_TYPE_TABLE,
|
|
DWG_TYPE_TABLECONTENT,
|
|
DWG_TYPE_TABLEGEOMETRY,
|
|
DWG_TYPE_TABLESTYLE,
|
|
DWG_TYPE_TEXTOBJECTCONTEXTDATA,
|
|
DWG_TYPE_TVDEVICEPROPERTIES,
|
|
DWG_TYPE_VISIBILITYGRIPENTITY,
|
|
DWG_TYPE_VISIBILITYPARAMETERENTITY,
|
|
DWG_TYPE_VISUALSTYLE,
|
|
DWG_TYPE_WIPEOUT,
|
|
DWG_TYPE_WIPEOUTVARIABLES,
|
|
DWG_TYPE_XREFPANELOBJECT,
|
|
DWG_TYPE_XYPARAMETERENTITY,
|
|
DWG_TYPE_BREAKDATA,
|
|
DWG_TYPE_BREAKPOINTREF,
|
|
DWG_TYPE_FLIPGRIPENTITY,
|
|
DWG_TYPE_LINEARGRIPENTITY,
|
|
DWG_TYPE_ROTATIONGRIPENTITY,
|
|
DWG_TYPE_XYGRIPENTITY,
|
|
|
|
/* preR13 entities */
|
|
DWG_TYPE__3DLINE,
|
|
DWG_TYPE_REPEAT,
|
|
DWG_TYPE_ENDREP,
|
|
DWG_TYPE_JUMP,
|
|
/* pre2.0 entities */
|
|
DWG_TYPE_LOAD,
|
|
// after 1.0 add new types here for binary compat
|
|
|
|
DWG_TYPE_FREED = 0xfffd,
|
|
DWG_TYPE_UNKNOWN_ENT = 0xfffe,
|
|
DWG_TYPE_UNKNOWN_OBJ = 0xffff,
|
|
} Dwg_Object_Type;
|
|
|
|
typedef enum DWG_OBJECT_TYPE_R11
|
|
{
|
|
// UNUSED_R11: i.e. all the added table or iterator objects (mspace block)
|
|
DWG_TYPE_UNUSED_r11 = 0,
|
|
DWG_TYPE_LINE_r11 = 1,
|
|
DWG_TYPE_POINT_r11 = 2,
|
|
DWG_TYPE_CIRCLE_r11 = 3,
|
|
DWG_TYPE_SHAPE_r11 = 4,
|
|
DWG_TYPE_REPEAT_r11 = 5,
|
|
DWG_TYPE_ENDREP_r11 = 6,
|
|
DWG_TYPE_TEXT_r11 = 7,
|
|
DWG_TYPE_ARC_r11 = 8,
|
|
DWG_TYPE_TRACE_r11 = 9,
|
|
DWG_TYPE_LOAD_r11 = 10,
|
|
DWG_TYPE_SOLID_r11 = 11,
|
|
DWG_TYPE_BLOCK_r11 = 12,
|
|
DWG_TYPE_ENDBLK_r11 = 13,
|
|
DWG_TYPE_INSERT_r11 = 14, // includes also MINSERT
|
|
DWG_TYPE_ATTDEF_r11 = 15,
|
|
DWG_TYPE_ATTRIB_r11 = 16,
|
|
DWG_TYPE_SEQEND_r11 = 17,
|
|
DWG_TYPE_JUMP_r11 = 18,
|
|
DWG_TYPE_POLYLINE_r11 = 19, // also mesh/pfaces
|
|
DWG_TYPE_VERTEX_r11 = 20, // also mesh/pface vertices
|
|
DWG_TYPE_3DLINE_r11 = 21,
|
|
DWG_TYPE_3DFACE_r11 = 22,
|
|
DWG_TYPE_DIMENSION_r11 = 23, // all types
|
|
DWG_TYPE_VIEWPORT_r11 = 24,
|
|
DWG_TYPE_UNKNOWN_r11 = 25,
|
|
} Dwg_Object_Type_r11;
|
|
|
|
/**
|
|
Error codes returned.
|
|
*/
|
|
typedef enum DWG_ERROR
|
|
{
|
|
DWG_NOERR = 0,
|
|
/* sorted by severity */
|
|
DWG_ERR_WRONGCRC = 1,
|
|
DWG_ERR_NOTYETSUPPORTED = 1 << 1, /* 2 */
|
|
DWG_ERR_UNHANDLEDCLASS = 1 << 2, /* 4 */
|
|
DWG_ERR_INVALIDTYPE = 1 << 3, /* 8 */
|
|
DWG_ERR_INVALIDHANDLE = 1 << 4, /* 16 */
|
|
DWG_ERR_INVALIDEED = 1 << 5, /* 32 */
|
|
DWG_ERR_VALUEOUTOFBOUNDS = 1 << 6, /* 64 */
|
|
/* -------- critical errors ------- */
|
|
DWG_ERR_CLASSESNOTFOUND = 1 << 7, /* 128 */
|
|
DWG_ERR_SECTIONNOTFOUND = 1 << 8, /* 256 */
|
|
DWG_ERR_PAGENOTFOUND = 1 << 9, /* 512 */
|
|
DWG_ERR_INTERNALERROR = 1 << 10,/* 1024 */
|
|
DWG_ERR_INVALIDDWG = 1 << 11,/* 2048 */
|
|
DWG_ERR_IOERROR = 1 << 12,/* 4096 */
|
|
DWG_ERR_OUTOFMEM = 1 << 13,/* 8192 */
|
|
|
|
} Dwg_Error;
|
|
#define DWG_ERR_CRITICAL DWG_ERR_CLASSESNOTFOUND
|
|
|
|
/**
|
|
handles resolve absolute or relative indices to objects.
|
|
|
|
code 2-5: represents the type of the relation: hard/soft, owner/id.
|
|
|
|
code TYPEDOBJHANDLE:
|
|
2 Soft owner,
|
|
3 Hard owner,
|
|
4 Soft pointer,
|
|
5 Hard pointer
|
|
|
|
code > 6: the handle is stored as an offset from some other handle.
|
|
|
|
code OFFSETOBJHANDLE for soft owners or pointers:
|
|
6 ref + 1,
|
|
8 ref - 1,
|
|
a ref + offset,
|
|
c ref - offset
|
|
|
|
See \ref Dwg_Handle
|
|
*/
|
|
typedef struct _dwg_handle
|
|
{
|
|
BITCODE_RC code; /*!< OFFSETOBJHANDLE if > 6 */
|
|
BITCODE_RC size;
|
|
BITCODE_RLL value;
|
|
BITCODE_B is_global; // to be freed or not
|
|
} Dwg_Handle;
|
|
|
|
#define FORMAT_H "%u.%u." FORMAT_RLLx
|
|
#define ARGS_H(hdl) (hdl).code, (hdl).size, (hdl).value
|
|
#define FORMAT_REF "(%u.%u." FORMAT_RLLx ") abs:" FORMAT_BLL
|
|
#define ARGS_REF(ref) (ref)->handleref.code, (ref)->handleref.size, \
|
|
(ref)->handleref.value, (ref)->absolute_ref
|
|
#define FORMAT_REF11 "(%d, %hd, " FORMAT_BLL ")"
|
|
#define ARGS_REF11(ref) (ref)->handleref.size, (ref)->r11_idx, \
|
|
(ref)->absolute_ref
|
|
|
|
/**
|
|
object references: obj is resolved by handleref (e.g. via
|
|
dwg_resolve_handleref) when reading a DWG to the respective \ref
|
|
Dwg_Object, and absolute_ref is resolved to the global
|
|
_dwg_struct::object_ref index. It is the same as the hex number in the
|
|
DXF handles.
|
|
|
|
Used as \ref Dwg_Object_Ref
|
|
*/
|
|
typedef struct _dwg_object_ref
|
|
{
|
|
struct _dwg_object* obj;
|
|
Dwg_Handle handleref;
|
|
BITCODE_RLL absolute_ref;
|
|
BITCODE_RSd r11_idx; // preR13 only, the TABLE index (also used for DXF)
|
|
} Dwg_Object_Ref;
|
|
|
|
typedef Dwg_Object_Ref* BITCODE_H;
|
|
|
|
typedef enum DWG_HDL_CODE
|
|
{
|
|
DWG_HDL_OWNER = 0,
|
|
DWG_HDL_SOFTOWN = 2,
|
|
DWG_HDL_HARDOWN = 3,
|
|
DWG_HDL_SOFTPTR = 4, // can be relative
|
|
DWG_HDL_HARDPTR = 5,
|
|
} Dwg_Hdl_Code;
|
|
|
|
/**
|
|
CMC or ENC colors: color index or rgb value. layers are off when the index
|
|
is negative.
|
|
Used as \ref Dwg_Color
|
|
*/
|
|
typedef struct _dwg_color /* CmColor: R15 and earlier */
|
|
{
|
|
BITCODE_BSd index; /* <0: turned off. 0: BYBLOCK, 256: BYLAYER */
|
|
BITCODE_BS flag; /* 1: has name, 2: has book_name. */
|
|
BITCODE_BS raw; /* ENC only */
|
|
BITCODE_BL rgb; /* DXF 420 */
|
|
unsigned method; /* first byte of rgb:
|
|
0xc0 for ByLayer (also c3 and rgb of 0x100)
|
|
0xc1 for ByBlock (also c3 and rgb of 0)
|
|
0xc2 for entities (default), with names with an additional name flag RC,
|
|
0xc3 for truecolor,
|
|
0xc5 for foreground color
|
|
0xc8 for none (also c3 and rgb of 0x101)
|
|
*/
|
|
BITCODE_T name; /* DXF 430 */
|
|
BITCODE_T book_name; /* DXF 430, DXF: "book_name$name" */
|
|
// Entities only:
|
|
BITCODE_H handle;
|
|
BITCODE_BL alpha_raw;
|
|
BITCODE_BB alpha_type; /* 0 BYLAYER, 1 BYBLOCK, 3 alpha */
|
|
BITCODE_RC alpha; /* DXF 440. 0-255 */
|
|
} Dwg_Color;
|
|
|
|
typedef Dwg_Color BITCODE_CMC;
|
|
typedef Dwg_Color BITCODE_CMTC; // truecolor even before r2004
|
|
typedef Dwg_Color BITCODE_ENC;
|
|
|
|
EXPORT const char* dwg_color_method_name (unsigned method);
|
|
|
|
/**
|
|
ASCII or Unicode text in xdata \ref Dwg_Resbuf
|
|
*/
|
|
struct _dwg_binary_chunk
|
|
{
|
|
unsigned short size;
|
|
unsigned codepage:15;
|
|
unsigned is_tu:1;
|
|
union {
|
|
char *data;
|
|
DWGCHAR *wdata;
|
|
} u;
|
|
};
|
|
|
|
/**
|
|
result buffers: xdata linked list of dxf group - value pairs.
|
|
Used as \ref Dwg_Resbuf
|
|
*/
|
|
typedef struct _dwg_resbuf
|
|
{
|
|
short type;
|
|
union
|
|
{
|
|
double pt[3];
|
|
char i8;
|
|
short i16;
|
|
int i32;
|
|
BITCODE_BLL i64;
|
|
BITCODE_RLL absref;
|
|
double dbl;
|
|
struct _dwg_binary_chunk str;
|
|
} value;
|
|
struct _dwg_resbuf *nextrb;
|
|
} Dwg_Resbuf;
|
|
|
|
/**
|
|
\struct Dwg_Header_Variables
|
|
DWG header variables for all versions.
|
|
If uppercase related to the DXF HEADER $ name.
|
|
|
|
\ref _dwg_header_variables
|
|
*/
|
|
typedef struct _dwg_header_variables {
|
|
BITCODE_RL size;
|
|
BITCODE_RL bitsize_hi; /*!< r2010+ */
|
|
BITCODE_RL bitsize;
|
|
BITCODE_RC ACADMAINTVER; /*!< r13+ */
|
|
BITCODE_BLL REQUIREDVERSIONS; /*!< r2013+ */
|
|
BITCODE_TV DWGCODEPAGE; /*!< DXF 3, r11+ */
|
|
BITCODE_RS codepage; /*!< <r11 */
|
|
BITCODE_BD unit1_ratio; /* 412148564080.0 */
|
|
BITCODE_BD unit2_ratio; /* 1.0 */
|
|
BITCODE_BD unit3_ratio; /* 1.0 */
|
|
BITCODE_BD unit4_ratio; /* 1.0 */
|
|
BITCODE_TV unit1_name; /* "" 4x pre R13/2007... */
|
|
BITCODE_TV unit2_name; /* "" */
|
|
BITCODE_TV unit3_name; /* "" */
|
|
BITCODE_TV unit4_name; /* "" */
|
|
BITCODE_BL unknown_8; /* 24L */
|
|
BITCODE_BL unknown_9; /* 0L */
|
|
BITCODE_BS unknown_10; /* 0 r13-r14 */
|
|
BITCODE_H VX_TABLE_RECORD; /*!< r11-r2000 code 5, no DXF */
|
|
BITCODE_B DIMASO;
|
|
BITCODE_B DIMSHO;
|
|
BITCODE_B DIMSAV; /* undocumented */
|
|
BITCODE_B PLINEGEN;
|
|
BITCODE_B ORTHOMODE;
|
|
BITCODE_B REGENMODE;
|
|
BITCODE_B FILLMODE;
|
|
BITCODE_B QTEXTMODE;
|
|
BITCODE_B PSLTSCALE; /* r10- */
|
|
BITCODE_B LIMCHECK;
|
|
BITCODE_RC MENUEXT[46];
|
|
BITCODE_B BLIPMODE;
|
|
BITCODE_B unknown_11;
|
|
BITCODE_B USRTIMER;
|
|
BITCODE_B FASTZOOM; /* -r11 */
|
|
BITCODE_B FLATLAND;
|
|
BITCODE_B VIEWMODE;
|
|
BITCODE_B SKPOLY;
|
|
BITCODE_RS unknown_mon; /* -r11 */
|
|
BITCODE_RS unknown_day; /* -r11 */
|
|
BITCODE_RS unknown_year; /* -r11 */
|
|
BITCODE_RS unknown_hour; /* -r11 */
|
|
BITCODE_RS unknown_min; /* -r11 */
|
|
BITCODE_RS unknown_sec; /* -r11 */
|
|
BITCODE_RS unknown_ms; /* -r11 */
|
|
BITCODE_B ANGDIR;
|
|
BITCODE_B SPLFRAME;
|
|
BITCODE_B ATTREQ;
|
|
BITCODE_B ATTDIA;
|
|
BITCODE_B MIRRTEXT;
|
|
BITCODE_B WORLDVIEW;
|
|
BITCODE_B WIREFRAME; /* Undocumented */
|
|
BITCODE_B TILEMODE;
|
|
BITCODE_B PLIMCHECK;
|
|
BITCODE_B VISRETAIN;
|
|
BITCODE_B DELOBJ;
|
|
BITCODE_B DISPSILH;
|
|
BITCODE_B PELLIPSE;
|
|
BITCODE_BS SAVEIMAGES; //some r13 only
|
|
BITCODE_BS PROXYGRAPHICS;
|
|
BITCODE_BS MEASUREMENT; /* 0 English, 1 Metric. Stored as Section 4 */
|
|
BITCODE_BS DRAGMODE;
|
|
BITCODE_BSd TREEDEPTH; /* r11- */
|
|
BITCODE_BS LUNITS;
|
|
BITCODE_BS LUPREC;
|
|
BITCODE_BS AUNITS;
|
|
BITCODE_BS AUPREC;
|
|
BITCODE_BS ATTMODE;
|
|
BITCODE_BS COORDS;
|
|
BITCODE_BS PDMODE;
|
|
BITCODE_BS PICKSTYLE;
|
|
BITCODE_BS OSMODE;
|
|
BITCODE_BL unknown_12;
|
|
BITCODE_BL unknown_13;
|
|
BITCODE_BL unknown_14;
|
|
BITCODE_BSd USERI1;
|
|
BITCODE_BSd USERI2;
|
|
BITCODE_BSd USERI3;
|
|
BITCODE_BSd USERI4;
|
|
BITCODE_BSd USERI5;
|
|
BITCODE_BS SPLINESEGS;
|
|
BITCODE_BS SURFU;
|
|
BITCODE_BS SURFV;
|
|
BITCODE_BS SURFTYPE;
|
|
BITCODE_BS SURFTAB1;
|
|
BITCODE_BS SURFTAB2;
|
|
BITCODE_BS SPLINETYPE;
|
|
BITCODE_BS SHADEDGE;
|
|
BITCODE_BS SHADEDIF;
|
|
BITCODE_BS UNITMODE;
|
|
BITCODE_BS MAXACTVP;
|
|
BITCODE_BS ISOLINES;
|
|
BITCODE_BS CMLJUST;
|
|
BITCODE_BS TEXTQLTY;
|
|
BITCODE_BL unknown_14b;
|
|
BITCODE_BD LTSCALE;
|
|
BITCODE_BD TEXTSIZE;
|
|
BITCODE_BD TRACEWID;
|
|
BITCODE_BD SKETCHINC;
|
|
BITCODE_BD FILLETRAD;
|
|
BITCODE_BD THICKNESS;
|
|
BITCODE_BD ANGBASE;
|
|
BITCODE_BD PDSIZE;
|
|
BITCODE_BD PLINEWID;
|
|
BITCODE_BD USERR1;
|
|
BITCODE_BD USERR2;
|
|
BITCODE_BD USERR3;
|
|
BITCODE_BD USERR4;
|
|
BITCODE_BD USERR5;
|
|
BITCODE_BD CHAMFERA;
|
|
BITCODE_BD CHAMFERB;
|
|
BITCODE_BD CHAMFERC;
|
|
BITCODE_BD CHAMFERD;
|
|
BITCODE_BD FACETRES;
|
|
BITCODE_BD CMLSCALE;
|
|
BITCODE_BD CELTSCALE;
|
|
BITCODE_BD VIEWTWIST;
|
|
BITCODE_TV MENU;
|
|
BITCODE_TIMEBLL TDCREATE;
|
|
BITCODE_TIMEBLL TDUPDATE;
|
|
BITCODE_TIMEBLL TDUCREATE;
|
|
BITCODE_TIMEBLL TDUUPDATE;
|
|
BITCODE_BL unknown_15;
|
|
BITCODE_BL unknown_16;
|
|
BITCODE_BL unknown_17;
|
|
BITCODE_TIMEBLL TDINDWG;
|
|
BITCODE_TIMEBLL TDUSRTIMER;
|
|
BITCODE_CMC CECOLOR;
|
|
BITCODE_BS HANDLING; /* <r14: default 1 */
|
|
BITCODE_H HANDSEED;
|
|
BITCODE_RL unknown_4f2; /* -r11 */
|
|
BITCODE_RS unknown_5; /* r2-r11 */
|
|
BITCODE_RS unknown_6; /* r10-r11 */
|
|
BITCODE_RS unknown_6a; /* r2-r9 */
|
|
BITCODE_RS unknown_6b; /* r2-r9 */
|
|
BITCODE_RS unknown_6c; /* r2-r9 */
|
|
BITCODE_H CLAYER; /*!< code 5, DXF 8 */
|
|
BITCODE_H TEXTSTYLE; /*!< code 5, DXF 7 */
|
|
BITCODE_H CELTYPE; /*!< code 5, DXF 6 */
|
|
BITCODE_H CMATERIAL; /*!< r2007+ code 5, no DXF */
|
|
BITCODE_H DIMSTYLE; /*!< code 5, DXF 2 */
|
|
BITCODE_H CMLSTYLE; /*!< code 5, DXF 2 */
|
|
BITCODE_BD PSVPSCALE;
|
|
BITCODE_3BD PINSBASE; /*!< r13+ ... */
|
|
BITCODE_3BD PEXTMIN;
|
|
BITCODE_3BD PEXTMAX;
|
|
BITCODE_2DPOINT PLIMMIN;
|
|
BITCODE_2DPOINT PLIMMAX;
|
|
BITCODE_BD PELEVATION;
|
|
BITCODE_3BD PUCSORG;
|
|
BITCODE_3BD PUCSXDIR;
|
|
BITCODE_3BD PUCSYDIR;
|
|
BITCODE_H PUCSNAME; /*!< r13+ code 5, DXF 2 */
|
|
BITCODE_H PUCSBASE; /*!< r2000+ code 5, DXF 2 */
|
|
BITCODE_H PUCSORTHOREF; /*!< r2000+ code 5, DXF 2 */
|
|
BITCODE_BS PUCSORTHOVIEW;
|
|
BITCODE_3BD PUCSORGTOP;
|
|
BITCODE_3BD PUCSORGBOTTOM;
|
|
BITCODE_3BD PUCSORGLEFT;
|
|
BITCODE_3BD PUCSORGRIGHT;
|
|
BITCODE_3BD PUCSORGFRONT;
|
|
BITCODE_3BD PUCSORGBACK;
|
|
BITCODE_3BD INSBASE;
|
|
BITCODE_3BD EXTMIN;
|
|
BITCODE_3BD EXTMAX;
|
|
BITCODE_3BD VIEWDIR;
|
|
BITCODE_3BD TARGET;
|
|
BITCODE_2DPOINT LIMMIN;
|
|
BITCODE_2DPOINT LIMMAX;
|
|
BITCODE_3RD VIEWCTR; /* -r11 */
|
|
BITCODE_BD ELEVATION;
|
|
BITCODE_RD VIEWSIZE; /* -r11 */
|
|
BITCODE_RS SNAPMODE; /* -r11 */
|
|
BITCODE_2RD SNAPUNIT; /* -r11 */
|
|
BITCODE_2RD SNAPBASE; /* -r11 */
|
|
BITCODE_RD SNAPANG; /* -r11 */
|
|
BITCODE_RS SNAPSTYLE; /* -r11 */
|
|
BITCODE_RS SNAPISOPAIR; /* -r11 */
|
|
BITCODE_RS GRIDMODE; /* -r11 */
|
|
BITCODE_2RD GRIDUNIT; /* -r11 */
|
|
BITCODE_BS AXISMODE; /* -r11 */
|
|
BITCODE_2RD AXISUNIT; /* -r11 */
|
|
BITCODE_3RD VPOINTX; /* -r11 */
|
|
BITCODE_3RD VPOINTY; /* -r11 */
|
|
BITCODE_3RD VPOINTZ; /* -r11 */
|
|
BITCODE_3RD VPOINTXALT; /* -r11 */
|
|
BITCODE_3RD VPOINTYALT; /* -r11 */
|
|
BITCODE_3RD VPOINTZALT; /* -r11 */
|
|
BITCODE_RS flag_3d; /* -r11 */
|
|
BITCODE_3BD UCSORG;
|
|
BITCODE_3BD UCSXDIR;
|
|
BITCODE_3BD UCSYDIR;
|
|
BITCODE_H UCSNAME; /*!< code 5, DXF 2 */
|
|
BITCODE_H UCSBASE; /*!< code 5, DXF 2 */
|
|
BITCODE_BS UCSORTHOVIEW;
|
|
BITCODE_H UCSORTHOREF; /*!< code 5, DXF 2 */
|
|
BITCODE_3BD UCSORGTOP;
|
|
BITCODE_3BD UCSORGBOTTOM;
|
|
BITCODE_3BD UCSORGLEFT;
|
|
BITCODE_3BD UCSORGRIGHT;
|
|
BITCODE_3BD UCSORGFRONT;
|
|
BITCODE_3BD UCSORGBACK;
|
|
BITCODE_TV DIMPOST;
|
|
BITCODE_TV DIMAPOST;
|
|
BITCODE_B DIMTOL;
|
|
BITCODE_B DIMLIM;
|
|
BITCODE_B DIMTIH;
|
|
BITCODE_B DIMTOH;
|
|
BITCODE_B DIMSE1;
|
|
BITCODE_B DIMSE2;
|
|
BITCODE_B DIMALT;
|
|
BITCODE_B DIMTOFL;
|
|
BITCODE_B DIMSAH;
|
|
BITCODE_B DIMTIX;
|
|
BITCODE_B DIMSOXD;
|
|
BITCODE_BS DIMALTD; /*!< r13-r14 only RC */
|
|
BITCODE_BS DIMZIN; /*!< r13-r14 only RC */
|
|
BITCODE_B DIMSD1;
|
|
BITCODE_B DIMSD2;
|
|
BITCODE_BS DIMTOLJ; /*!< r13-r14 only RC */
|
|
BITCODE_BS DIMJUST; /*!< r13-r14 only RC */
|
|
BITCODE_BS DIMFIT; /*!< r13-r14 only RC */
|
|
BITCODE_B DIMUPT;
|
|
BITCODE_BS DIMTZIN; /*!< r13-r14 only RC */
|
|
BITCODE_BS DIMTAD; /*!< r13-r14 only RC */
|
|
BITCODE_BS DIMUNIT;
|
|
BITCODE_BS DIMAUNIT;
|
|
BITCODE_BS DIMDEC;
|
|
BITCODE_BS DIMTDEC;
|
|
BITCODE_BS DIMALTU;
|
|
BITCODE_BS DIMALTTD;
|
|
BITCODE_H DIMTXSTY; /*!< code 5, DXF 7 */
|
|
BITCODE_BD DIMSCALE;
|
|
BITCODE_BD DIMARROW; /* r1.2-r1.4 */
|
|
BITCODE_BD DIMASZ;
|
|
BITCODE_BD DIMEXO;
|
|
BITCODE_BD DIMDLI;
|
|
BITCODE_BD DIMEXE;
|
|
BITCODE_BD DIMRND;
|
|
BITCODE_BD DIMDLE;
|
|
BITCODE_BD DIMTP;
|
|
BITCODE_BD DIMTM;
|
|
BITCODE_BD DIMFXL;
|
|
BITCODE_BD DIMJOGANG;
|
|
BITCODE_BS DIMTFILL;
|
|
BITCODE_CMC DIMTFILLCLR;
|
|
BITCODE_BS DIMAZIN;
|
|
BITCODE_BS DIMARCSYM;
|
|
BITCODE_BD DIMTXT;
|
|
BITCODE_BD DIMCEN;
|
|
BITCODE_BD DIMTSZ;
|
|
BITCODE_BD DIMALTF;
|
|
BITCODE_BD DIMLFAC;
|
|
BITCODE_BD DIMTVP;
|
|
BITCODE_BD DIMTFAC;
|
|
BITCODE_BD DIMGAP;
|
|
BITCODE_T DIMPOST_T; /* preR13 => handle */
|
|
BITCODE_T DIMAPOST_T;
|
|
BITCODE_T DIMBLK_T;
|
|
BITCODE_T DIMBLK1_T;
|
|
BITCODE_T DIMBLK2_T;
|
|
BITCODE_T unknown_string; /* r10-r11 */
|
|
BITCODE_BD DIMALTRND;
|
|
BITCODE_RS DIMCLRD_C; /* preR13 => CMC */
|
|
BITCODE_RS DIMCLRE_C;
|
|
BITCODE_RS DIMCLRT_C;
|
|
BITCODE_CMC DIMCLRD;
|
|
BITCODE_CMC DIMCLRE;
|
|
BITCODE_CMC DIMCLRT;
|
|
BITCODE_BS DIMADEC; /*!< r2000+ ... */
|
|
BITCODE_BS DIMFRAC;
|
|
BITCODE_BS DIMLUNIT;
|
|
BITCODE_BS DIMDSEP;
|
|
BITCODE_BS DIMTMOVE;
|
|
BITCODE_BS DIMALTZ; /*!< r13-r14 only RC */
|
|
BITCODE_BS DIMALTTZ; /*!< r13-r14 only RC */
|
|
BITCODE_BS DIMATFIT;
|
|
BITCODE_B DIMFXLON; /*!< r2007+ */
|
|
BITCODE_B DIMTXTDIRECTION; /*!< r2010+ */
|
|
BITCODE_BD DIMALTMZF; /*!< r2010+ */
|
|
BITCODE_T DIMALTMZS; /*!< r2010+ */
|
|
BITCODE_BD DIMMZF; /*!< r2010+ */
|
|
BITCODE_T DIMMZS; /*!< r2010+ */
|
|
/*BITCODE_H DIMTXSTY;*/ /*!< r2000+ */
|
|
BITCODE_H DIMLDRBLK; /*!< r2000+ code 5, DXF 1 */
|
|
BITCODE_H DIMBLK; /*!< r2000+ code 5, DXF 1 */
|
|
BITCODE_H DIMBLK1; /*!< r2000+ code 5, DXF 1 */
|
|
BITCODE_H DIMBLK2; /*!< r2000+ code 5, DXF 1 */
|
|
BITCODE_H DIMLTYPE; /*!< r2007+ code 5, DXF 6 */
|
|
BITCODE_H DIMLTEX1; /*!< r2007+ code 5, DXF 6 */
|
|
BITCODE_H DIMLTEX2; /*!< r2007+ code 5, DXF 6 */
|
|
BITCODE_BSd DIMLWD; /*!< r2000+ */
|
|
BITCODE_BSd DIMLWE; /*!< r2000+ */
|
|
BITCODE_H BLOCK_CONTROL_OBJECT; /*!< code 3 */
|
|
BITCODE_H LAYER_CONTROL_OBJECT; /*!< code 3 */
|
|
BITCODE_H STYLE_CONTROL_OBJECT; /*!< code 3 */
|
|
BITCODE_H LTYPE_CONTROL_OBJECT; /*!< code 3 */
|
|
BITCODE_H VIEW_CONTROL_OBJECT; /*!< code 3 */
|
|
BITCODE_H UCS_CONTROL_OBJECT; /*!< code 3 */
|
|
BITCODE_H VPORT_CONTROL_OBJECT; /*!< code 3 */
|
|
BITCODE_H APPID_CONTROL_OBJECT; /*!< code 3 */
|
|
BITCODE_H DIMSTYLE_CONTROL_OBJECT; /*!< code 3 */
|
|
BITCODE_H VX_CONTROL_OBJECT; /*!< r11-r2000 code 3 */
|
|
BITCODE_H DICTIONARY_ACAD_GROUP; /*!< code 5 */
|
|
BITCODE_H DICTIONARY_ACAD_MLINESTYLE; /*!< code 5 */
|
|
BITCODE_H DICTIONARY_NAMED_OBJECT; /*!< code 5, the "NOD" */
|
|
BITCODE_BS TSTACKALIGN; /*!< r2000+ */
|
|
BITCODE_BS TSTACKSIZE; /*!< r2000+ */
|
|
BITCODE_T HYPERLINKBASE; /*!< r2000+ */
|
|
BITCODE_TV STYLESHEET; /*!< r2000+ */
|
|
BITCODE_H DICTIONARY_LAYOUT; /*!< r2000+ code 5 */
|
|
BITCODE_H DICTIONARY_PLOTSETTINGS; /*!< r2000+ code 5 */
|
|
BITCODE_H DICTIONARY_PLOTSTYLENAME; /*!< r2000+ code 5 */
|
|
BITCODE_H DICTIONARY_MATERIAL; /*!< r2004+ code 5 */
|
|
BITCODE_H DICTIONARY_COLOR; /*!< r2004+ code 5 */
|
|
BITCODE_H DICTIONARY_VISUALSTYLE; /*!< r2007+ code 5 */
|
|
BITCODE_H DICTIONARY_LIGHTLIST; /*!< r2010+ code 5 ?? */
|
|
BITCODE_H unknown_20; /*!< r2013+ code 5 LIGHTLIST? */
|
|
BITCODE_BL FLAGS;
|
|
BITCODE_BSd CELWEIGHT; /*!< = FLAGS & 0x1f, see dxf_cvt_lweight() DXF 370 (int16) */
|
|
BITCODE_B ENDCAPS; /*!< = FLAGS & 0x60 */
|
|
BITCODE_B JOINSTYLE; /*!< = FLAGS & 0x180 */
|
|
BITCODE_B LWDISPLAY; /*!< = !(FLAGS & 0x200) */
|
|
BITCODE_B XEDIT; /*!< = !(FLAGS & 0x400) */
|
|
BITCODE_B EXTNAMES; /*!< = FLAGS & 0x800 */
|
|
BITCODE_B PSTYLEMODE; /*!< = FLAGS & 0x2000 */
|
|
BITCODE_B OLESTARTUP; /*!< = FLAGS & 0x4000 */
|
|
BITCODE_BS INSUNITS;
|
|
BITCODE_BS CEPSNTYPE;
|
|
BITCODE_H CPSNID; /*!< when CEPSNTYPE = 3, code 5 */
|
|
BITCODE_TV FINGERPRINTGUID;
|
|
BITCODE_TV VERSIONGUID;
|
|
BITCODE_RC SORTENTS;
|
|
BITCODE_RC INDEXCTL;
|
|
BITCODE_RC HIDETEXT;
|
|
BITCODE_RC XCLIPFRAME;
|
|
BITCODE_RC DIMASSOC;
|
|
BITCODE_RC HALOGAP;
|
|
BITCODE_BS OBSCOLOR;
|
|
BITCODE_BS INTERSECTIONCOLOR;
|
|
BITCODE_RC OBSLTYPE;
|
|
BITCODE_RC INTERSECTIONDISPLAY;
|
|
BITCODE_TV PROJECTNAME;
|
|
BITCODE_H BLOCK_RECORD_PSPACE; /*!< code 5 */
|
|
BITCODE_H BLOCK_RECORD_MSPACE; /*!< code 5 */
|
|
BITCODE_H LTYPE_BYLAYER; /*!< code 5 */
|
|
BITCODE_H LTYPE_BYBLOCK; /*!< code 5 */
|
|
BITCODE_H LTYPE_CONTINUOUS; /*!< code 5 */
|
|
BITCODE_B CAMERADISPLAY; /*!< r2007+ ... */
|
|
BITCODE_BL unknown_21;
|
|
BITCODE_BL unknown_22;
|
|
BITCODE_BD unknown_23;
|
|
BITCODE_BD STEPSPERSEC;
|
|
BITCODE_BD STEPSIZE;
|
|
BITCODE_BD _3DDWFPREC;
|
|
BITCODE_BD LENSLENGTH;
|
|
BITCODE_BD CAMERAHEIGHT;
|
|
BITCODE_RC SOLIDHIST;
|
|
BITCODE_RC SHOWHIST;
|
|
BITCODE_BD PSOLWIDTH;
|
|
BITCODE_BD PSOLHEIGHT;
|
|
BITCODE_BD LOFTANG1;
|
|
BITCODE_BD LOFTANG2;
|
|
BITCODE_BD LOFTMAG1;
|
|
BITCODE_BD LOFTMAG2;
|
|
BITCODE_BS LOFTPARAM;
|
|
BITCODE_RC LOFTNORMALS;
|
|
BITCODE_BD LATITUDE;
|
|
BITCODE_BD LONGITUDE;
|
|
BITCODE_BD NORTHDIRECTION;
|
|
BITCODE_BL TIMEZONE;
|
|
BITCODE_RC LIGHTGLYPHDISPLAY;
|
|
BITCODE_RC TILEMODELIGHTSYNCH;
|
|
BITCODE_RC DWFFRAME;
|
|
BITCODE_RC DGNFRAME;
|
|
BITCODE_B REALWORLDSCALE;
|
|
BITCODE_CMC INTERFERECOLOR;
|
|
BITCODE_H INTERFEREOBJVS; /*!< r2007+ code 5, DXF 345 VISUALSTYLE */
|
|
BITCODE_H INTERFEREVPVS; /*!< r2007+ code 5, DXF 346 VISUALSTYLE */
|
|
BITCODE_H DRAGVS; /*!< r2007+ code 5, DXF 349 VISUALSTYLE */
|
|
BITCODE_RC CSHADOW;
|
|
BITCODE_BD SHADOWPLANELOCATION;
|
|
BITCODE_BS unknown_54; /*!< r14+ ... optional */
|
|
BITCODE_BS unknown_55;
|
|
BITCODE_BS unknown_56;
|
|
BITCODE_BS unknown_57;
|
|
BITCODE_RL dwg_size; /* -r1.40 */
|
|
BITCODE_RS numentities; /* r2.0 - r10 */
|
|
BITCODE_RS circle_zoom_percent;
|
|
BITCODE_BD FRONTZ;
|
|
BITCODE_BD BACKZ;
|
|
BITCODE_RC UCSICON;
|
|
BITCODE_RL oldCECOLOR_hi; /* r11, or RD */
|
|
BITCODE_RL oldCECOLOR_lo; /* r11 */
|
|
BITCODE_RS layer_colors[128]; /* r1.1 - r1.4 */
|
|
BITCODE_RS unknown_51e; /* r11 */
|
|
BITCODE_RS unknown_520; /* r11 */
|
|
BITCODE_RSd unknown_52c; /* r11 */
|
|
BITCODE_RS unknown_52e; /* r11 */
|
|
BITCODE_RC unknown_530; /* r11 */
|
|
BITCODE_RS unknown_59; /* r11 */
|
|
BITCODE_RD aspect_ratio; /* r11 */
|
|
} Dwg_Header_Variables;
|
|
|
|
/* OBJECTS *******************************************************************/
|
|
/**
|
|
UNUSED (0) entity. Unknown entities are stored as blob
|
|
*/
|
|
typedef int Dwg_Entity_UNUSED;
|
|
|
|
/** \ref Dwg_Entity_TEXT
|
|
TEXT (1/7) entity
|
|
*/
|
|
typedef struct _dwg_entity_TEXT
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_RC dataflags; /*!< r2000+. should be renamed to opts for r11 compat */
|
|
BITCODE_RD elevation; /*!< DXF 30 (z coord of 10), when dataflags & 1 */
|
|
BITCODE_2DPOINT ins_pt; /*!< DXF 10 */
|
|
BITCODE_2DPOINT alignment_pt; /*!< DXF 11. optional, when dataflags & 2, i.e 72/73 != 0 */
|
|
BITCODE_BE extrusion; /*!< DXF 210. Default 0,0,1 */
|
|
BITCODE_RD thickness; /*!< DXF 39 */
|
|
BITCODE_RD oblique_angle; /*!< DXF 51 */
|
|
BITCODE_RD rotation; /*!< DXF 50 */
|
|
BITCODE_RD height; /*!< DXF 40 */
|
|
BITCODE_RD width_factor; /*!< DXF 41 */
|
|
BITCODE_T text_value; /*!< DXF 1 */
|
|
BITCODE_BS generation; /*!< DXF 71 */
|
|
BITCODE_BS horiz_alignment; /*!< DXF 72. options 0-5:
|
|
0 = Left; 1= Center; 2 = Right; 3 = Aligned;
|
|
4 = Middle; 5 = Fit */
|
|
BITCODE_BS vert_alignment; /*!< DXF 73. options 0-3:
|
|
0 = Baseline; 1 = Bottom; 2 = Middle; 3 = Top */
|
|
BITCODE_H style; /*!< code 5, DXF 7, optional */
|
|
} Dwg_Entity_TEXT;
|
|
|
|
/** \ref Dwg_Entity_ATTRIB
|
|
ATTRIB (2/16) entity
|
|
*/
|
|
typedef struct _dwg_entity_ATTRIB
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BD elevation;
|
|
BITCODE_2DPOINT ins_pt;
|
|
BITCODE_2DPOINT alignment_pt;
|
|
BITCODE_BE extrusion;
|
|
BITCODE_RD thickness;
|
|
BITCODE_RD oblique_angle;
|
|
BITCODE_RD rotation;
|
|
BITCODE_RD height;
|
|
BITCODE_RD width_factor;
|
|
BITCODE_T text_value;
|
|
BITCODE_BS generation;
|
|
BITCODE_BS horiz_alignment;
|
|
BITCODE_BS vert_alignment;
|
|
BITCODE_RC dataflags;
|
|
BITCODE_RC class_version; /* R2010+ */
|
|
BITCODE_RC type; /* R2018+ */
|
|
BITCODE_T tag;
|
|
BITCODE_BS field_length; /* DXF 73 but unused */
|
|
BITCODE_RC flags; /* bitmask of:
|
|
0 none
|
|
1 invisible, overridden by ATTDISP
|
|
2 constant, no prompt
|
|
4 verify on insert
|
|
8 preset, inserted only with its default values, not editable. */
|
|
BITCODE_B lock_position_flag;
|
|
BITCODE_H style;
|
|
BITCODE_H mtext_style; /* R2018+ TODO */
|
|
BITCODE_BS annotative_data_size; /* R2018+ */
|
|
BITCODE_RC annotative_data_bytes;
|
|
BITCODE_H annotative_app;
|
|
BITCODE_BS annotative_short;
|
|
} Dwg_Entity_ATTRIB;
|
|
|
|
/** \ref Dwg_Entity_ATTDEF
|
|
ATTDEF (3/15) entity
|
|
*/
|
|
typedef struct _dwg_entity_ATTDEF
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BD elevation;
|
|
BITCODE_2DPOINT ins_pt;
|
|
BITCODE_2DPOINT alignment_pt;
|
|
BITCODE_BE extrusion;
|
|
BITCODE_RD thickness;
|
|
BITCODE_RD oblique_angle;
|
|
BITCODE_RD rotation;
|
|
BITCODE_RD height;
|
|
BITCODE_RD width_factor;
|
|
BITCODE_T default_value;
|
|
BITCODE_BS generation;
|
|
BITCODE_BS horiz_alignment;
|
|
BITCODE_BS vert_alignment;
|
|
BITCODE_RC dataflags;
|
|
BITCODE_RC class_version; /* R2010+ */
|
|
BITCODE_RC type; /* R2018+ */
|
|
BITCODE_T tag;
|
|
BITCODE_BS field_length;
|
|
BITCODE_RC flags; /* => HEADER.AFLAGS */
|
|
BITCODE_B lock_position_flag;
|
|
BITCODE_H style;
|
|
BITCODE_H mtext_style; /* R2018+ TODO */
|
|
BITCODE_BS annotative_data_size; /* R2018+ */
|
|
BITCODE_RC annotative_data_bytes;
|
|
BITCODE_H annotative_app;
|
|
BITCODE_BS annotative_short;
|
|
|
|
BITCODE_RC attdef_class_version; /* R2010+ */
|
|
BITCODE_T prompt;
|
|
} Dwg_Entity_ATTDEF;
|
|
|
|
/**
|
|
BLOCK (4/12) entity
|
|
*/
|
|
typedef struct _dwg_entity_BLOCK
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_T name; // DXF 2
|
|
BITCODE_T xref_pname; // DXF 3
|
|
BITCODE_2RD base_pt; // preR13 only
|
|
} Dwg_Entity_BLOCK;
|
|
|
|
/**
|
|
ENDBLK (5/13) entity
|
|
*/
|
|
typedef struct _dwg_entity_ENDBLK
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
} Dwg_Entity_ENDBLK;
|
|
|
|
/**
|
|
SEQEND (6/17) entity
|
|
*/
|
|
typedef struct _dwg_entity_SEQEND
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
BITCODE_RL begin_addr_r11;
|
|
} Dwg_Entity_SEQEND;
|
|
|
|
/**
|
|
INSERT (7/14) entity
|
|
*/
|
|
typedef struct _dwg_entity_INSERT
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_3DPOINT ins_pt;
|
|
BITCODE_BB scale_flag;
|
|
BITCODE_3DPOINT scale;
|
|
BITCODE_BD rotation;
|
|
BITCODE_BE extrusion;
|
|
BITCODE_B has_attribs;
|
|
BITCODE_BL num_owned;
|
|
|
|
BITCODE_H block_header; /* DXF 2 */
|
|
BITCODE_H first_attrib;
|
|
BITCODE_H last_attrib;
|
|
BITCODE_H* attribs;
|
|
BITCODE_H seqend;
|
|
|
|
BITCODE_RS num_cols; /* pre-R13 */
|
|
BITCODE_RS num_rows;
|
|
BITCODE_RD col_spacing;
|
|
BITCODE_RD row_spacing;
|
|
BITCODE_TV block_name; /* pre-R2.0 */
|
|
} Dwg_Entity_INSERT;
|
|
|
|
/**
|
|
MINSERT (8) entity
|
|
*/
|
|
typedef struct _dwg_entity_MINSERT
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_3DPOINT ins_pt;
|
|
BITCODE_BB scale_flag;
|
|
BITCODE_3DPOINT scale;
|
|
BITCODE_BD rotation;
|
|
BITCODE_BE extrusion;
|
|
BITCODE_B has_attribs;
|
|
BITCODE_BL num_owned;
|
|
|
|
BITCODE_BS num_cols;
|
|
BITCODE_BS num_rows;
|
|
BITCODE_BD col_spacing;
|
|
BITCODE_BD row_spacing;
|
|
|
|
BITCODE_H block_header;
|
|
BITCODE_H first_attrib;
|
|
BITCODE_H last_attrib;
|
|
BITCODE_H* attribs;
|
|
BITCODE_H seqend;
|
|
} Dwg_Entity_MINSERT;
|
|
|
|
/**
|
|
VERTEX_2D (10/20) entity
|
|
*/
|
|
typedef struct _dwg_entity_VERTEX_2D
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_RC flag;
|
|
BITCODE_3BD point;
|
|
BITCODE_BD start_width;
|
|
BITCODE_BD end_width;
|
|
BITCODE_BL id; /* R2010+ */
|
|
BITCODE_BD bulge;
|
|
BITCODE_BD tangent_dir;
|
|
} Dwg_Entity_VERTEX_2D;
|
|
|
|
/**
|
|
VERTEX_3D (11) entity
|
|
*/
|
|
typedef struct _dwg_entity_VERTEX_3D
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_RC flag;
|
|
BITCODE_3BD point;
|
|
} Dwg_Entity_VERTEX_3D;
|
|
|
|
/**
|
|
VERTEX_MESH (12) - same as VERTEX_3D entity
|
|
*/
|
|
typedef Dwg_Entity_VERTEX_3D Dwg_Entity_VERTEX_MESH;
|
|
|
|
/**
|
|
VERTEX_PFACE (13) - same as VERTEX_3D entity
|
|
*/
|
|
typedef Dwg_Entity_VERTEX_3D Dwg_Entity_VERTEX_PFACE;
|
|
|
|
/**
|
|
VERTEX_PFACE_FACE (14) entity
|
|
*/
|
|
typedef struct _dwg_entity_VERTEX_PFACE_FACE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_RC flag;
|
|
BITCODE_BS vertind[4];
|
|
} Dwg_Entity_VERTEX_PFACE_FACE;
|
|
|
|
#define COMMON_ENTITY_POLYLINE \
|
|
struct _dwg_object_entity *parent; \
|
|
BITCODE_B has_vertex; \
|
|
BITCODE_BL num_owned; \
|
|
BITCODE_H first_vertex; \
|
|
BITCODE_H last_vertex; \
|
|
BITCODE_H *vertex; \
|
|
BITCODE_H seqend
|
|
|
|
/**
|
|
2D POLYLINE (15/19) entity
|
|
*/
|
|
typedef struct _dwg_entity_POLYLINE_2D
|
|
{
|
|
COMMON_ENTITY_POLYLINE;
|
|
|
|
BITCODE_BS flag; /* 1: closed, 2: curve_fit, 4: spline_fit, 8: 3d, 0x10: 3dmesh,
|
|
0x20: mesh_closed_in_n, 0x40: polyface_mesh, 0x80: ltype_continuous */
|
|
BITCODE_BS curve_type;
|
|
BITCODE_BD start_width;
|
|
BITCODE_BD end_width;
|
|
BITCODE_BT thickness;
|
|
BITCODE_BD elevation;
|
|
BITCODE_BE extrusion;
|
|
BITCODE_BL extra_r11_size;
|
|
BITCODE_TV extra_r11_text;
|
|
BITCODE_BS num_m_verts; // sometime used in preR13, to delete
|
|
BITCODE_BS num_n_verts; // sometime used in preR13, to delete
|
|
} Dwg_Entity_POLYLINE_2D;
|
|
|
|
/**
|
|
3D POLYLINE (16/19) entity
|
|
*/
|
|
typedef struct _dwg_entity_POLYLINE_3D
|
|
{
|
|
COMMON_ENTITY_POLYLINE;
|
|
|
|
BITCODE_RC curve_type;
|
|
BITCODE_BD start_width;
|
|
BITCODE_BD end_width;
|
|
BITCODE_RC flag;
|
|
BITCODE_BE extrusion;
|
|
} Dwg_Entity_POLYLINE_3D;
|
|
|
|
/**
|
|
ARC (17/8) entity
|
|
*/
|
|
typedef struct _dwg_entity_ARC
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_3BD center;
|
|
BITCODE_BD radius;
|
|
BITCODE_BT thickness;
|
|
BITCODE_BE extrusion;
|
|
BITCODE_BD start_angle;
|
|
BITCODE_BD end_angle;
|
|
} Dwg_Entity_ARC;
|
|
|
|
/**
|
|
CIRCLE (18/3) entity
|
|
*/
|
|
typedef struct _dwg_entity_CIRCLE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_3BD center;
|
|
BITCODE_BD radius;
|
|
BITCODE_BT thickness;
|
|
BITCODE_BE extrusion;
|
|
} Dwg_Entity_CIRCLE;
|
|
|
|
/**
|
|
LINE (19/1) entity
|
|
*/
|
|
typedef struct _dwg_entity_LINE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_RC z_is_zero;
|
|
BITCODE_3BD start;
|
|
BITCODE_3BD end;
|
|
BITCODE_BT thickness;
|
|
BITCODE_BE extrusion;
|
|
BITCODE_2RD unknown_r11; // GH #586
|
|
} Dwg_Entity_LINE;
|
|
|
|
/**
|
|
* Macro for common DIMENSION declaration
|
|
*
|
|
* flag 70: value & 31: 0-6 denote the type, + bitmask 32-128.
|
|
* 0: linear, 1: aligned, 2: ang2ln, 3: diameter, 4: radius
|
|
* 5: ang3pt, 6: ordinate.
|
|
* 32: block (2) used by this dimension only.
|
|
* 64: if set, ordinate is type X, else ordinate is type Y.
|
|
* 128: non-default dimension text location
|
|
*/
|
|
#define DIMENSION_COMMON \
|
|
struct _dwg_object_entity *parent; \
|
|
BITCODE_RC class_version; /* R2010+ */ \
|
|
BITCODE_BE extrusion; \
|
|
BITCODE_3BD def_pt; \
|
|
BITCODE_2RD text_midpt; \
|
|
BITCODE_BD elevation; \
|
|
BITCODE_RC flag; /* calculated, DXF only 70 */ \
|
|
BITCODE_RC flag1; /* as in the DWG */ \
|
|
BITCODE_T user_text; \
|
|
BITCODE_BD text_rotation; \
|
|
BITCODE_BD horiz_dir; \
|
|
BITCODE_3BD ins_scale; \
|
|
BITCODE_BD ins_rotation; \
|
|
BITCODE_BS attachment; \
|
|
BITCODE_BS lspace_style; \
|
|
BITCODE_BD lspace_factor; \
|
|
BITCODE_BD act_measurement; \
|
|
BITCODE_B unknown; \
|
|
BITCODE_B flip_arrow1; \
|
|
BITCODE_B flip_arrow2; \
|
|
BITCODE_2RD clone_ins_pt; \
|
|
BITCODE_H dimstyle; \
|
|
BITCODE_H block
|
|
|
|
typedef struct _dwg_DIMENSION_common
|
|
{
|
|
DIMENSION_COMMON;
|
|
} Dwg_DIMENSION_common;
|
|
|
|
/**
|
|
ordinate dimension - DIMENSION_ORDINATE (20) entity
|
|
*/
|
|
typedef struct _dwg_entity_DIMENSION_ORDINATE
|
|
{
|
|
DIMENSION_COMMON;
|
|
BITCODE_3BD feature_location_pt;
|
|
BITCODE_3BD leader_endpt;
|
|
BITCODE_RC flag2; // use_x_axis
|
|
} Dwg_Entity_DIMENSION_ORDINATE;
|
|
|
|
/**
|
|
linear dimension - DIMENSION_LINEAR (21/23) entity
|
|
*/
|
|
typedef struct _dwg_entity_DIMENSION_LINEAR
|
|
{
|
|
DIMENSION_COMMON;
|
|
BITCODE_3BD xline1_pt;
|
|
BITCODE_3BD xline2_pt;
|
|
BITCODE_BD oblique_angle;
|
|
BITCODE_BD dim_rotation;
|
|
} Dwg_Entity_DIMENSION_LINEAR;
|
|
|
|
/**
|
|
aligned dimension - DIMENSION_ALIGNED (22) entity
|
|
*/
|
|
typedef struct _dwg_entity_DIMENSION_ALIGNED
|
|
{
|
|
DIMENSION_COMMON;
|
|
BITCODE_3BD xline1_pt;
|
|
BITCODE_3BD xline2_pt;
|
|
BITCODE_BD oblique_angle;
|
|
} Dwg_Entity_DIMENSION_ALIGNED;
|
|
|
|
/**
|
|
angular 3pt dimension - DIMENSION_ANG3PT (23) entity
|
|
*/
|
|
typedef struct _dwg_entity_DIMENSION_ANG3PT
|
|
{
|
|
DIMENSION_COMMON;
|
|
BITCODE_3BD xline1_pt;
|
|
BITCODE_3BD xline2_pt;
|
|
BITCODE_3BD center_pt;
|
|
BITCODE_3RD xline2end_pt; // preR13 only, DXF 16
|
|
} Dwg_Entity_DIMENSION_ANG3PT;
|
|
|
|
/**
|
|
angular 2 line dimension - DIMENSION_ANG2LN (24) entity
|
|
*/
|
|
typedef struct _dwg_entity_DIMENSION_ANG2LN
|
|
{
|
|
DIMENSION_COMMON;
|
|
BITCODE_3BD xline1start_pt;
|
|
BITCODE_3BD xline1end_pt;
|
|
BITCODE_3BD xline2start_pt;
|
|
BITCODE_3BD xline2end_pt;
|
|
} Dwg_Entity_DIMENSION_ANG2LN;
|
|
|
|
/**
|
|
radius dimension - DIMENSION_RADIUS (25) entity
|
|
*/
|
|
typedef struct _dwg_entity_DIMENSION_RADIUS
|
|
{
|
|
DIMENSION_COMMON;
|
|
BITCODE_3BD first_arc_pt; /*!< DXF 15 */
|
|
BITCODE_BD leader_len; /*!< DXF 40 */
|
|
} Dwg_Entity_DIMENSION_RADIUS;
|
|
|
|
/**
|
|
diameter dimension - DIMENSION_DIAMETER (26) entity
|
|
*/
|
|
typedef struct _dwg_entity_DIMENSION_DIAMETER
|
|
{
|
|
DIMENSION_COMMON; /* DXF 10 def_pt = = far_chord_pt */
|
|
BITCODE_3BD first_arc_pt; /*!< DXF 15 */
|
|
BITCODE_BD leader_len; /*!< DXF 40 */
|
|
} Dwg_Entity_DIMENSION_DIAMETER;
|
|
|
|
/**
|
|
arc dimension - ARC_DIMENSION (varies) entity
|
|
*/
|
|
typedef struct _dwg_entity_ARC_DIMENSION
|
|
{
|
|
DIMENSION_COMMON;
|
|
BITCODE_3BD xline1_pt; /* DXF 13 */
|
|
BITCODE_3BD xline2_pt; /* DXF 14 */
|
|
BITCODE_3BD center_pt; /* DXF 15 */
|
|
BITCODE_B is_partial; /* DXF 70 */
|
|
BITCODE_BD arc_start_param; /* DXF 41 */
|
|
BITCODE_BD arc_end_param; /* DXF 42 */
|
|
BITCODE_B has_leader; /* DXF 71 */
|
|
BITCODE_3BD leader1_pt; /* DXF 16 */
|
|
BITCODE_3BD leader2_pt; /* DXF 17 */
|
|
} Dwg_Entity_ARC_DIMENSION;
|
|
|
|
/**
|
|
arc dimension - LARGE_RADIAL_DIMENSION (varies) entity
|
|
*/
|
|
typedef struct _dwg_entity_LARGE_RADIAL_DIMENSION
|
|
{
|
|
DIMENSION_COMMON;
|
|
BITCODE_3BD first_arc_pt; /*!< DXF 15 */
|
|
BITCODE_BD leader_len; /*!< DXF 40 */
|
|
BITCODE_3BD ovr_center; /*!< DXF 12-32 */
|
|
BITCODE_3BD jog_point; /*!< DXF 13-33 */
|
|
} Dwg_Entity_LARGE_RADIAL_DIMENSION;
|
|
|
|
/**
|
|
Struct for: POINT (27/2)
|
|
*/
|
|
typedef struct _dwg_entity_POINT
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BD x;
|
|
BITCODE_BD y;
|
|
BITCODE_BD z;
|
|
BITCODE_BT thickness;
|
|
BITCODE_BE extrusion;
|
|
BITCODE_BD x_ang;
|
|
} Dwg_Entity_POINT;
|
|
|
|
/**
|
|
Struct for: 3D FACE (28/22)
|
|
*/
|
|
typedef struct _dwg_entity_3DFACE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_B has_no_flags;
|
|
BITCODE_B z_is_zero;
|
|
BITCODE_3BD corner1;
|
|
BITCODE_3BD corner2;
|
|
BITCODE_3BD corner3;
|
|
BITCODE_3BD corner4;
|
|
BITCODE_BS invis_flags;
|
|
} Dwg_Entity__3DFACE;
|
|
|
|
/**
|
|
Struct for: POLYLINE (PFACE) (29)
|
|
*/
|
|
typedef struct _dwg_entity_POLYLINE_PFACE
|
|
{
|
|
COMMON_ENTITY_POLYLINE;
|
|
|
|
BITCODE_BS flag;
|
|
BITCODE_BS numverts;
|
|
BITCODE_BS numfaces;
|
|
} Dwg_Entity_POLYLINE_PFACE;
|
|
|
|
/**
|
|
Struct for: POLYLINE (MESH) (30)
|
|
*/
|
|
typedef struct _dwg_entity_POLYLINE_MESH
|
|
{
|
|
COMMON_ENTITY_POLYLINE;
|
|
|
|
BITCODE_BS flag;
|
|
BITCODE_BS curve_type;
|
|
BITCODE_BS num_m_verts;
|
|
BITCODE_BS num_n_verts;
|
|
BITCODE_BS m_density;
|
|
BITCODE_BS n_density;
|
|
} Dwg_Entity_POLYLINE_MESH;
|
|
|
|
/**
|
|
Struct for: SOLID (31/11)
|
|
*/
|
|
|
|
typedef struct _dwg_entity_SOLID
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BT thickness;
|
|
BITCODE_BD elevation;
|
|
BITCODE_2RD corner1;
|
|
BITCODE_2RD corner2;
|
|
BITCODE_2RD corner3;
|
|
BITCODE_2RD corner4;
|
|
BITCODE_BE extrusion;
|
|
} Dwg_Entity_SOLID;
|
|
|
|
/**
|
|
Struct for: TRACE (32/9)
|
|
*/
|
|
|
|
typedef struct _dwg_entity_TRACE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BT thickness;
|
|
BITCODE_BD elevation;
|
|
BITCODE_2RD corner1;
|
|
BITCODE_2RD corner2;
|
|
BITCODE_2RD corner3;
|
|
BITCODE_2RD corner4;
|
|
BITCODE_BE extrusion;
|
|
} Dwg_Entity_TRACE;
|
|
|
|
/**
|
|
Struct for: SHAPE (33/4)
|
|
*/
|
|
|
|
typedef struct _dwg_entity_SHAPE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_3BD ins_pt; // DXF 10-30
|
|
BITCODE_BD scale; // DXF 40
|
|
BITCODE_BD rotation; // DXF 50
|
|
BITCODE_BD width_factor; // DXF 41
|
|
BITCODE_BD oblique_angle;// DXF 51
|
|
BITCODE_BD thickness; // DXF 39
|
|
BITCODE_BS style_id; // DXF 2, STYLE index in dwg to SHAPEFILE
|
|
BITCODE_BE extrusion; // DXF 210
|
|
BITCODE_H style;
|
|
} Dwg_Entity_SHAPE;
|
|
|
|
/**
|
|
Struct for: VIEWPORT ENTITY (34/24)
|
|
*/
|
|
|
|
typedef struct _dwg_entity_VIEWPORT
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_3BD center;
|
|
BITCODE_BD width;
|
|
BITCODE_BD height;
|
|
BITCODE_RS on_off; /* DXF 68, -1 should be accepted also */
|
|
BITCODE_RS id; /* DXF 69 */
|
|
|
|
BITCODE_3BD view_target;
|
|
BITCODE_3BD VIEWDIR;
|
|
BITCODE_BD twist_angle;
|
|
BITCODE_BD VIEWSIZE; // the height
|
|
BITCODE_BD lens_length;
|
|
BITCODE_BD front_clip_z;
|
|
BITCODE_BD back_clip_z;
|
|
BITCODE_BD SNAPANG;
|
|
BITCODE_2RD VIEWCTR;
|
|
BITCODE_2RD SNAPBASE;
|
|
BITCODE_2RD SNAPUNIT;
|
|
BITCODE_2RD GRIDUNIT;
|
|
BITCODE_BS circle_zoom;
|
|
BITCODE_BS grid_major;
|
|
BITCODE_BL num_frozen_layers;
|
|
BITCODE_BL status_flag;
|
|
BITCODE_TV style_sheet;
|
|
BITCODE_RC render_mode;
|
|
BITCODE_B ucs_at_origin;
|
|
BITCODE_B UCSVP;
|
|
BITCODE_3BD ucsorg;
|
|
BITCODE_3BD ucsxdir;
|
|
BITCODE_3BD ucsydir;
|
|
BITCODE_BD ucs_elevation;
|
|
BITCODE_BS UCSORTHOVIEW;
|
|
BITCODE_BS shadeplot_mode;
|
|
BITCODE_B use_default_lights;
|
|
BITCODE_RC default_lighting_type;
|
|
BITCODE_BD brightness;
|
|
BITCODE_BD contrast;
|
|
BITCODE_CMC ambient_color;
|
|
BITCODE_H vport_entity_header;
|
|
BITCODE_H *frozen_layers;
|
|
BITCODE_H clip_boundary;
|
|
BITCODE_H named_ucs;
|
|
BITCODE_H base_ucs;
|
|
BITCODE_H background;
|
|
BITCODE_H visualstyle;
|
|
BITCODE_H shadeplot;
|
|
BITCODE_H sun;
|
|
} Dwg_Entity_VIEWPORT;
|
|
|
|
/**
|
|
ELLIPSE (35) entity
|
|
*/
|
|
typedef struct _dwg_entity_ELLIPSE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_3BD center;
|
|
BITCODE_3BD sm_axis;
|
|
BITCODE_BE extrusion;
|
|
BITCODE_BD axis_ratio; /* i.e RadiusRatio */
|
|
BITCODE_BD start_angle;
|
|
BITCODE_BD end_angle;
|
|
} Dwg_Entity_ELLIPSE;
|
|
|
|
/**
|
|
spline - SPLINE (36) entity
|
|
*/
|
|
typedef struct _dwg_SPLINE_control_point
|
|
{
|
|
struct _dwg_entity_SPLINE *parent;
|
|
|
|
double x;
|
|
double y;
|
|
double z;
|
|
double w;
|
|
} Dwg_SPLINE_control_point;
|
|
|
|
enum
|
|
{
|
|
SPLINETYPE_QUADRATIC = 5, // degree==2
|
|
SPLINETYPE_CUBIC = 6, // default. degree==3
|
|
};
|
|
enum
|
|
{
|
|
SPLINE_SCENARIO_SPLINE = 1,
|
|
SPLINE_SCENARIO_BEZIER = 2,
|
|
};
|
|
enum
|
|
{ /* 2013+ */
|
|
SPLINE_SPLINEFLAGS_METHOD_FIT_POINTS = 1,
|
|
SPLINE_SPLINEFLAGS_CV_FRAME_SHOW = 2,
|
|
SPLINE_SPLINEFLAGS_CLOSED = 4,
|
|
};
|
|
enum
|
|
{ /* 2013+ */
|
|
SPLINE_KNOTPARAM_CHORD = 0,
|
|
SPLINE_KNOTPARAM_SQUARE_ROOT = 1,
|
|
SPLINE_KNOTPARAM_UNIFORM = 2,
|
|
SPLINE_KNOTPARAM_CUSTOM = 15
|
|
};
|
|
|
|
typedef struct _dwg_entity_SPLINE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_RS flag; /* computed */
|
|
BITCODE_BS scenario; /* 1 spline, 2 bezier */
|
|
BITCODE_BS degree; /* 2 quadratic, 3 cubic */
|
|
BITCODE_BL splineflags; /* 2013+: method fit points = 1, CV frame show = 2, closed = 4 */
|
|
BITCODE_BL knotparam; /* 2013+: Chord = 0, Square root = 1, Uniform = 2, Custom = 15 */
|
|
BITCODE_BD fit_tol;
|
|
BITCODE_3BD beg_tan_vec;
|
|
BITCODE_3BD end_tan_vec;
|
|
BITCODE_B closed_b; /* bit 0 of 70 */
|
|
BITCODE_B periodic; /* bit 1 of 70 */
|
|
BITCODE_B rational; /* bit 2 of 70 */
|
|
BITCODE_B weighted; /* bit 4 of 70 */
|
|
BITCODE_BD knot_tol;
|
|
BITCODE_BD ctrl_tol;
|
|
BITCODE_BS num_fit_pts;
|
|
BITCODE_3DPOINT* fit_pts;
|
|
BITCODE_BL num_knots;
|
|
BITCODE_BD* knots;
|
|
BITCODE_BL num_ctrl_pts;
|
|
Dwg_SPLINE_control_point* ctrl_pts;
|
|
} Dwg_Entity_SPLINE;
|
|
|
|
/**
|
|
3DSOLID (38) entity
|
|
*/
|
|
#define Dwg_Entity_3DSOLID Dwg_Entity__3DSOLID
|
|
typedef struct _dwg_3DSOLID_wire
|
|
{
|
|
struct _dwg_entity_3DSOLID *parent;
|
|
BITCODE_RC type;
|
|
BITCODE_BLd selection_marker;
|
|
BITCODE_BL color;
|
|
BITCODE_BLd acis_index;
|
|
BITCODE_BL num_points;
|
|
BITCODE_3BD* points;
|
|
BITCODE_B transform_present;
|
|
BITCODE_3BD axis_x;
|
|
BITCODE_3BD axis_y;
|
|
BITCODE_3BD axis_z;
|
|
BITCODE_3BD translation;
|
|
BITCODE_3BD scale;
|
|
BITCODE_B has_rotation;
|
|
BITCODE_B has_reflection;
|
|
BITCODE_B has_shear;
|
|
} Dwg_3DSOLID_wire;
|
|
|
|
typedef struct _dwg_3DSOLID_silhouette
|
|
{
|
|
struct _dwg_entity_3DSOLID *parent;
|
|
BITCODE_BL vp_id;
|
|
BITCODE_3BD vp_target;
|
|
BITCODE_3BD vp_dir_from_target;
|
|
BITCODE_3BD vp_up_dir;
|
|
BITCODE_B vp_perspective;
|
|
BITCODE_B has_wires;
|
|
BITCODE_BL num_wires;
|
|
Dwg_3DSOLID_wire * wires;
|
|
} Dwg_3DSOLID_silhouette;
|
|
|
|
typedef struct _dwg_3DSOLID_material
|
|
{
|
|
struct _dwg_entity_3DSOLID *parent;
|
|
BITCODE_BL array_index;
|
|
BITCODE_BL mat_absref;
|
|
BITCODE_H material_handle; /* code 5 */
|
|
} Dwg_3DSOLID_material;
|
|
|
|
#define _3DSOLID_FIELDS \
|
|
BITCODE_B acis_empty; \
|
|
BITCODE_B unknown; \
|
|
BITCODE_BS version; \
|
|
BITCODE_BL num_blocks; \
|
|
BITCODE_BL* block_size; \
|
|
char** encr_sat_data; \
|
|
BITCODE_BL sab_size; \
|
|
BITCODE_RC* acis_data; /* The decrypted SAT v1 or the SAB v2 stream */ \
|
|
BITCODE_B wireframe_data_present; \
|
|
BITCODE_B point_present; \
|
|
BITCODE_3BD point; \
|
|
BITCODE_BL isolines; /* i.e. wires */ \
|
|
BITCODE_B isoline_present; /* ie. has_wires */ \
|
|
BITCODE_BL num_wires; \
|
|
Dwg_3DSOLID_wire * wires; \
|
|
BITCODE_BL num_silhouettes; \
|
|
Dwg_3DSOLID_silhouette * silhouettes; \
|
|
BITCODE_B _dxf_sab_converted; /* internally calculated */ \
|
|
BITCODE_B acis_empty2; \
|
|
struct _dwg_entity_3DSOLID* extra_acis_data; \
|
|
BITCODE_BL num_materials; \
|
|
Dwg_3DSOLID_material *materials; \
|
|
BITCODE_RC revision_guid[39]; \
|
|
BITCODE_BL revision_major; \
|
|
BITCODE_BS revision_minor1; \
|
|
BITCODE_BS revision_minor2; \
|
|
BITCODE_RC revision_bytes[9]; \
|
|
BITCODE_BL end_marker; \
|
|
BITCODE_H history_id; \
|
|
BITCODE_B has_revision_guid; \
|
|
BITCODE_B acis_empty_bit
|
|
|
|
typedef struct _dwg_entity_3DSOLID
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
_3DSOLID_FIELDS;
|
|
#if 0
|
|
BITCODE_B acis_empty; /*!< no DXF */
|
|
BITCODE_B unknown;
|
|
BITCODE_BS version; /*!< DXF 70 Modeler format version =1*/
|
|
BITCODE_BL num_blocks;
|
|
BITCODE_BL* block_size;
|
|
char** encr_sat_data; /*!< DXF 1, the encrypted SAT data */
|
|
BITCODE_RC* acis_data; /*!< decrypted SAT data */
|
|
BITCODE_B wireframe_data_present;
|
|
BITCODE_B point_present;
|
|
BITCODE_3BD point;
|
|
BITCODE_BL num_isolines;
|
|
BITCODE_B isoline_present;
|
|
BITCODE_BL num_wires;
|
|
Dwg_3DSOLID_wire * wires;
|
|
BITCODE_BL num_silhouettes;
|
|
Dwg_3DSOLID_silhouette * silhouettes;
|
|
BITCODE_B acis_empty2;
|
|
struct _dwg_entity_3DSOLID* extra_acis_data;/* is it the best approach? */
|
|
BITCODE_BL unknown_2007;
|
|
BITCODE_H history_id;
|
|
BITCODE_B acis_empty_bit;
|
|
#endif
|
|
} Dwg_Entity__3DSOLID;
|
|
|
|
/**
|
|
REGION (37) entity
|
|
*/
|
|
typedef Dwg_Entity__3DSOLID Dwg_Entity_REGION;
|
|
|
|
/**
|
|
BODY (39) entity
|
|
*/
|
|
typedef Dwg_Entity__3DSOLID Dwg_Entity_BODY;
|
|
|
|
/**
|
|
ray - RAY (40) entity
|
|
*/
|
|
typedef struct _dwg_entity_RAY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_3BD point; /*!< DXF 10 */
|
|
BITCODE_3BD vector; /*!< DXF 11 */
|
|
} Dwg_Entity_RAY;
|
|
|
|
/**
|
|
XLINE (41) entity
|
|
*/
|
|
typedef Dwg_Entity_RAY Dwg_Entity_XLINE;
|
|
|
|
/**
|
|
DICTIONARY (42)
|
|
This structure is used for all the new tables.
|
|
Beware: Keep same offsets as DICTIONARYWDFLT
|
|
*/
|
|
typedef struct _dwg_object_DICTIONARY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BL numitems; /*!< no DXF */
|
|
BITCODE_RC is_hardowner;/*!< DXF 280 */
|
|
BITCODE_BS cloning; /*!< DXF 281, ie merge_style */
|
|
BITCODE_T* texts; /*!< DXF 3 */
|
|
BITCODE_H* itemhandles; /*!< DXF 350/360, pairwise with texts */
|
|
} Dwg_Object_DICTIONARY;
|
|
|
|
/**
|
|
Class DICTIONARYWDFLT (varies)
|
|
*/
|
|
typedef struct _dwg_object_DICTIONARYWDFLT
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BL numitems; /*!< no DXF */
|
|
BITCODE_RC is_hardowner;/*!< DXF 280 */
|
|
BITCODE_BS cloning; /*!< DXF 281, ie merge_style */
|
|
BITCODE_T* texts; /*!< DXF 3 */
|
|
BITCODE_H* itemhandles; /*!< DXF 350/360, pairwise with texts */
|
|
|
|
BITCODE_H defaultid;
|
|
} Dwg_Object_DICTIONARYWDFLT;
|
|
|
|
/**
|
|
OLEFRAME (43) entity
|
|
(replaced by OLE2FRAME (74) later)
|
|
*/
|
|
typedef struct _dwg_entity_OLEFRAME
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BS flag;
|
|
BITCODE_BS mode;
|
|
BITCODE_BL data_size;
|
|
BITCODE_TF data;
|
|
} Dwg_Entity_OLEFRAME;
|
|
|
|
/**
|
|
MTEXT (44) entity
|
|
*/
|
|
typedef struct _dwg_entity_MTEXT
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_3BD ins_pt; /*!< DXF 10 */
|
|
BITCODE_BE extrusion; /*!< DXF 210 */
|
|
BITCODE_3BD x_axis_dir; /*!< DXF 11, defines the rotation */
|
|
BITCODE_BD rect_height; /*!< no DXF */
|
|
BITCODE_BD rect_width; /*!< DXF 41 */
|
|
BITCODE_BD text_height; /*!< DXF 40 >= 0.0 */
|
|
BITCODE_BS attachment; /*!< DXF 71.
|
|
1 = Top left, 2 = Top center, 3 = Top
|
|
right, 4 = Middle left, 5 = Middle
|
|
center, 6 = Middle right, 7 = Bottom
|
|
left, 8 = Bottom center, 9 = Bottom
|
|
right */
|
|
BITCODE_BS flow_dir; /*!< DXF 72.
|
|
1 = Left to right, 3 = Top to bottom,
|
|
5 = By style (the flow direction is inherited
|
|
from the associated text style) */
|
|
BITCODE_BD extents_width; /*!< DXF 42 */
|
|
BITCODE_BD extents_height; /*!< DXF 43 the actual height */
|
|
BITCODE_T text; /*!< DXF 1 */
|
|
BITCODE_H style; /*!< DXF 7 */
|
|
BITCODE_BS linespace_style; /*!< DXF 73. r2000+ */
|
|
BITCODE_BD linespace_factor;/*!< DXF 44. r2000+. Mtext line spacing factor (optional):
|
|
Percentage of default (3-on-5) line spacing to
|
|
be applied. Valid values range from 0.25 to 4.00 */
|
|
BITCODE_B unknown_b0; // always 0
|
|
BITCODE_BL bg_fill_flag; /*!< DXF 90. r2004+
|
|
0 = Background fill off,
|
|
1 = Use background fill color,
|
|
2 = Use drawing window color as background fill color.
|
|
16 = textframe (r2018+) */
|
|
BITCODE_BL bg_fill_scale; /*!< DXF 45. r2004+
|
|
margin around the text. */
|
|
BITCODE_CMC bg_fill_color; /*!< DXF 63. r2004+. on bg_fill_flag==1 */
|
|
BITCODE_BL bg_fill_trans; /*!< DXF 441. r2004+. unused */
|
|
BITCODE_B is_not_annotative; /*!< r2018+: */
|
|
BITCODE_BS class_version; /*!< always 0 */
|
|
BITCODE_B default_flag; /*!< DXF 70. default true */
|
|
BITCODE_H appid;
|
|
BITCODE_BL ignore_attachment; /*!< redundant copy, not BS */
|
|
BITCODE_BS column_type; /*!< DXF 71 0: none, 1: static, 2: dynamic. */
|
|
BITCODE_BL numfragments; /*!< DXF 72 if static */
|
|
BITCODE_BD column_width; /*!< DXF 44 */
|
|
BITCODE_BD gutter; /*!< DXF 45 */
|
|
BITCODE_B auto_height; /*!< DXF 73 */
|
|
BITCODE_B flow_reversed; /*!< DXF 74 */
|
|
BITCODE_BL num_column_heights; /*!< DXF 72 if dynamic and not auto_height */
|
|
BITCODE_BD *column_heights; /*!< DXF 46 */
|
|
} Dwg_Entity_MTEXT;
|
|
|
|
/**
|
|
LEADER (45) entity
|
|
*/
|
|
typedef struct _dwg_entity_LEADER
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_B unknown_bit_1; /* always seems to be zero */
|
|
BITCODE_BS path_type; /*< DXF(72) 0: line, 1: spline (oda bug) */
|
|
BITCODE_BS annot_type; /*< DXF(73) 0: text, 1: tol, 2: insert, 3 (def): none */
|
|
BITCODE_BL num_points; /*< DXF(76) */
|
|
BITCODE_3DPOINT* points; /*< DXF(10) */
|
|
BITCODE_3DPOINT origin;
|
|
BITCODE_BE extrusion;
|
|
BITCODE_3DPOINT x_direction; /*< DXF(211) */
|
|
BITCODE_3DPOINT inspt_offset; /*< DXF(212) */
|
|
BITCODE_3DPOINT endptproj; /* DXF(213) R_13c3-R_2007 */
|
|
BITCODE_BD dimgap; /* R_13-R_14 only */
|
|
BITCODE_BD box_height; /*< DXF(40) */
|
|
BITCODE_BD box_width; /*< DXF(41) */
|
|
BITCODE_B hookline_dir; /* if hook line is on x direction */
|
|
BITCODE_B hookline_on; /*< DXF(75) computed from arrowhead_type & 8 */
|
|
BITCODE_B arrowhead_on;
|
|
BITCODE_BS arrowhead_type;
|
|
BITCODE_BD dimasz;
|
|
BITCODE_B unknown_bit_2;
|
|
BITCODE_B unknown_bit_3;
|
|
BITCODE_BS unknown_short_1;
|
|
BITCODE_BS byblock_color;
|
|
BITCODE_B unknown_bit_4;
|
|
BITCODE_B unknown_bit_5;
|
|
BITCODE_H associated_annotation; /* DXF 340 Hard reference to associated annotation (mtext, tolerance, or insert entity) */
|
|
BITCODE_H dimstyle;
|
|
} Dwg_Entity_LEADER;
|
|
|
|
/**
|
|
TOLERANCE (46) entity
|
|
*/
|
|
typedef struct _dwg_entity_TOLERANCE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BS unknown_short;
|
|
BITCODE_BD height;
|
|
BITCODE_BD dimgap;
|
|
BITCODE_3BD ins_pt;
|
|
BITCODE_3BD x_direction;
|
|
BITCODE_BE extrusion;
|
|
BITCODE_T text_value;
|
|
BITCODE_H dimstyle;
|
|
} Dwg_Entity_TOLERANCE;
|
|
|
|
/**
|
|
MLINE (47) entity
|
|
*/
|
|
typedef struct _dwg_MLINE_line
|
|
{
|
|
struct _dwg_MLINE_vertex *parent;
|
|
BITCODE_BS num_segparms;
|
|
BITCODE_BD * segparms;
|
|
BITCODE_BS num_areafillparms;
|
|
BITCODE_BD* areafillparms;
|
|
} Dwg_MLINE_line;
|
|
|
|
typedef struct _dwg_MLINE_vertex
|
|
{
|
|
struct _dwg_entity_MLINE *parent;
|
|
BITCODE_3BD vertex;
|
|
BITCODE_3BD vertex_direction;
|
|
BITCODE_3BD miter_direction;
|
|
BITCODE_RC num_lines;
|
|
Dwg_MLINE_line* lines;
|
|
} Dwg_MLINE_vertex;
|
|
|
|
typedef struct _dwg_entity_MLINE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BD scale;
|
|
BITCODE_RC justification;
|
|
BITCODE_3BD base_point;
|
|
BITCODE_BE extrusion;
|
|
BITCODE_BS flags;
|
|
BITCODE_RC num_lines; /* Linesinstyle */
|
|
BITCODE_BS num_verts;
|
|
Dwg_MLINE_vertex* verts;
|
|
BITCODE_H mlinestyle;
|
|
} Dwg_Entity_MLINE;
|
|
|
|
#define COMMON_TABLE_CONTROL_FIELDS \
|
|
struct _dwg_object_object *parent; \
|
|
BITCODE_BS num_entries; \
|
|
BITCODE_H* entries; \
|
|
BITCODE_RS flags_r11
|
|
|
|
// table entries may be imported from xref's
|
|
|
|
#define COMMON_TABLE_FIELDS \
|
|
struct _dwg_object_object *parent; \
|
|
BITCODE_RC flag; \
|
|
BITCODE_T name; \
|
|
BITCODE_RSd used; \
|
|
/* may be referenced by xref: */ \
|
|
BITCODE_B is_xref_ref; \
|
|
/* is a xref reference: */ \
|
|
BITCODE_BS is_xref_resolved; /* 0 or 256 */ \
|
|
/* is dependent on xref: */ \
|
|
BITCODE_B is_xref_dep; \
|
|
BITCODE_H xref
|
|
|
|
/**
|
|
BLOCK_CONTROL (48) object, table header
|
|
*/
|
|
typedef struct _dwg_object_BLOCK_CONTROL
|
|
{
|
|
COMMON_TABLE_CONTROL_FIELDS;
|
|
BITCODE_H model_space;
|
|
BITCODE_H paper_space;
|
|
} Dwg_Object_BLOCK_CONTROL;
|
|
|
|
/**
|
|
BLOCK_HEADER (49/T1) object, table entry
|
|
*/
|
|
typedef struct _dwg_object_BLOCK_HEADER
|
|
{
|
|
COMMON_TABLE_FIELDS;
|
|
BITCODE_BL __iterator;
|
|
BITCODE_B anonymous; /* flag 70 bit 1 */
|
|
BITCODE_B hasattrs; /* flag 70 bit 2 */
|
|
BITCODE_B blkisxref; /* flag 70 bit 3 */
|
|
BITCODE_B xrefoverlaid; /* flag 70 bit 4 */
|
|
BITCODE_B loaded_bit; /* flag 70 bit 6 */
|
|
BITCODE_BL num_owned;
|
|
BITCODE_3DPOINT base_pt;
|
|
BITCODE_TV xref_pname;
|
|
BITCODE_RL num_inserts;
|
|
BITCODE_TV description;
|
|
BITCODE_BL preview_size; /* no DXF. BLL? */
|
|
BITCODE_TF preview; /* DXF 310. Called PreviewIcon */
|
|
BITCODE_BS insert_units;
|
|
BITCODE_B explodable;
|
|
BITCODE_RC block_scaling;
|
|
BITCODE_H block_entity;
|
|
BITCODE_H first_entity;
|
|
BITCODE_H last_entity;
|
|
BITCODE_H* entities;
|
|
BITCODE_H endblk_entity;
|
|
BITCODE_H* inserts;
|
|
BITCODE_H layout;
|
|
BITCODE_RS flag2; /* preR13 */
|
|
BITCODE_RC unknown_r11;
|
|
BITCODE_RL block_offset_r11;
|
|
} Dwg_Object_BLOCK_HEADER;
|
|
|
|
/**
|
|
LAYER_CONTROL (50) object, table header
|
|
*/
|
|
typedef struct _dwg_object_LAYER_CONTROL
|
|
{
|
|
COMMON_TABLE_CONTROL_FIELDS;
|
|
} Dwg_Object_LAYER_CONTROL;
|
|
|
|
/**
|
|
LAYER (51/T2) object, table entry
|
|
*/
|
|
typedef struct _dwg_object_LAYER
|
|
{
|
|
/*<! flag0 DWG r2000+
|
|
1: frozen
|
|
2: on
|
|
4: frozen_in_new
|
|
8: locked
|
|
16: plotflag
|
|
bits 6-10: linewt
|
|
*/
|
|
COMMON_TABLE_FIELDS;
|
|
BITCODE_BS flag0; /* The DWG variant of 70, flag is for DXF */
|
|
BITCODE_B frozen;
|
|
BITCODE_B on;
|
|
BITCODE_B frozen_in_new;
|
|
BITCODE_B locked;
|
|
BITCODE_B plotflag; /* DXF 290 (optional) */
|
|
BITCODE_RC linewt;
|
|
BITCODE_CMC color;
|
|
BITCODE_H plotstyle; /* DXF 390 */
|
|
BITCODE_H material; /* DXF 347 */
|
|
BITCODE_H ltype; /* DXF 6 */
|
|
BITCODE_H visualstyle; /* DXF 348 */
|
|
} Dwg_Object_LAYER;
|
|
|
|
/**
|
|
STYLE_CONTROL (52) object, table header
|
|
*/
|
|
typedef struct _dwg_object_STYLE_CONTROL
|
|
{
|
|
COMMON_TABLE_CONTROL_FIELDS;
|
|
} Dwg_Object_STYLE_CONTROL;
|
|
|
|
/**
|
|
STYLE (53/T3) object, table entry.
|
|
TextStyleTableRecord. Some call it SHAPEFILE.
|
|
*/
|
|
typedef struct _dwg_object_STYLE
|
|
{
|
|
/*<! flag DXF 70:
|
|
1: is_vertical
|
|
2: is_upsidedown
|
|
4: is_shape
|
|
8: underlined
|
|
16: overlined (0x10)
|
|
32: is_shx
|
|
64: pre_loaded (0x40)
|
|
128: is_backward (0x80)
|
|
256: shape_loaded (0x100)
|
|
512: is_striked (0x200)
|
|
*/
|
|
COMMON_TABLE_FIELDS;
|
|
BITCODE_B is_shape;
|
|
BITCODE_B is_vertical;
|
|
BITCODE_BD text_size;
|
|
BITCODE_BD width_factor;
|
|
BITCODE_BD oblique_angle;
|
|
BITCODE_RC generation;
|
|
BITCODE_BD last_height;
|
|
BITCODE_T font_file;
|
|
BITCODE_T bigfont_file;
|
|
} Dwg_Object_STYLE;
|
|
|
|
/* 54 and 55 are UNKNOWN OBJECTS */
|
|
|
|
/**
|
|
LTYPE_CONTROL (56) object, table header
|
|
*/
|
|
typedef struct _dwg_object_LTYPE_CONTROL
|
|
{
|
|
COMMON_TABLE_CONTROL_FIELDS;
|
|
BITCODE_H bylayer;
|
|
BITCODE_H byblock;
|
|
} Dwg_Object_LTYPE_CONTROL;
|
|
|
|
/**
|
|
LTYPE (57/T4) object, table entry
|
|
*/
|
|
|
|
typedef struct _dwg_LTYPE_dash {
|
|
struct _dwg_object_LTYPE *parent;
|
|
BITCODE_BD length;
|
|
BITCODE_BS complex_shapecode; /* on shape_flag 2: shape number.
|
|
4: index into strings_area. */
|
|
BITCODE_H style;
|
|
BITCODE_RD x_offset;
|
|
BITCODE_RD y_offset;
|
|
BITCODE_BD scale;
|
|
BITCODE_BD rotation;
|
|
BITCODE_BS shape_flag; /* 1: text rotated 0, 2: complex_shapecode is index,
|
|
4: complex_shapecode is index into strings_area. */
|
|
BITCODE_T text; /* DXF 9, only if shape_flag & 2. e.g. GAS_LINE */
|
|
} Dwg_LTYPE_dash;
|
|
|
|
typedef struct _dwg_object_LTYPE
|
|
{
|
|
COMMON_TABLE_FIELDS;
|
|
BITCODE_TV description;
|
|
BITCODE_BD pattern_len;
|
|
BITCODE_RC alignment;
|
|
BITCODE_RC numdashes; // can be 0 in r11, even with 12 entries
|
|
// could be made a union if we care
|
|
Dwg_LTYPE_dash* dashes;
|
|
BITCODE_RD dashes_r11[12];
|
|
BITCODE_B has_strings_area; /* if some shape_flag & 4 (ODA bug) */
|
|
BITCODE_TF strings_area; /* 256 or 512 byte since r2007 */
|
|
BITCODE_RC unknown_r11;
|
|
BITCODE_RC unknown_r13;
|
|
} Dwg_Object_LTYPE;
|
|
|
|
/* 58 and 59 are UNKNOWN OBJECTS */
|
|
|
|
/**
|
|
VIEW_CONTROL (60) object, table header
|
|
*/
|
|
typedef struct _dwg_object_VIEW_CONTROL
|
|
{
|
|
COMMON_TABLE_CONTROL_FIELDS;
|
|
} Dwg_Object_VIEW_CONTROL;
|
|
|
|
/**
|
|
VIEW (61/T5) object, table entry
|
|
*/
|
|
typedef struct _dwg_object_VIEW
|
|
{
|
|
COMMON_TABLE_FIELDS;
|
|
// AbstractViewTableRecord
|
|
BITCODE_BD VIEWSIZE;
|
|
BITCODE_BD view_width;
|
|
BITCODE_BD aspect_ratio;
|
|
// ViInfo
|
|
BITCODE_2RD VIEWCTR;
|
|
BITCODE_3BD view_target;
|
|
BITCODE_3BD VIEWDIR;
|
|
BITCODE_BD twist_angle;
|
|
BITCODE_BD lens_length;
|
|
BITCODE_BD front_clip_z;
|
|
BITCODE_BD back_clip_z;
|
|
BITCODE_4BITS VIEWMODE; // DXF 71. 0: perspective, 1: front_clip_on, 2: back_clip_on, 3: front_clip_at_eye_on
|
|
BITCODE_RC render_mode;
|
|
BITCODE_B use_default_lights;
|
|
BITCODE_RC default_lightning_type;
|
|
BITCODE_BD brightness;
|
|
BITCODE_BD contrast;
|
|
BITCODE_CMC ambient_color;
|
|
// ViewTableRecord
|
|
BITCODE_B is_pspace;
|
|
BITCODE_B associated_ucs;
|
|
BITCODE_3BD ucsorg;
|
|
BITCODE_3BD ucsxdir;
|
|
BITCODE_3BD ucsydir;
|
|
BITCODE_BD ucs_elevation;
|
|
BITCODE_BS UCSORTHOVIEW;
|
|
BITCODE_B is_camera_plottable;
|
|
BITCODE_H background;
|
|
BITCODE_H visualstyle;
|
|
BITCODE_H sun;
|
|
BITCODE_H base_ucs;
|
|
BITCODE_H named_ucs;
|
|
BITCODE_H livesection;
|
|
BITCODE_RS flag_3d;
|
|
BITCODE_RC unknown_r2;
|
|
BITCODE_RC unknown_r11;
|
|
} Dwg_Object_VIEW;
|
|
|
|
/**
|
|
UCS_CONTROL (62) object, table header
|
|
*/
|
|
typedef struct _dwg_object_UCS_CONTROL
|
|
{
|
|
COMMON_TABLE_CONTROL_FIELDS;
|
|
} Dwg_Object_UCS_CONTROL;
|
|
|
|
/**
|
|
UCS (63/T6) object, table entry
|
|
*/
|
|
typedef struct _dwg_UCS_orthopts
|
|
{
|
|
struct _dwg_object_UCS *parent;
|
|
BITCODE_BS type; // 71
|
|
BITCODE_3BD pt; // 13
|
|
} Dwg_UCS_orthopts;
|
|
|
|
typedef struct _dwg_object_UCS
|
|
{
|
|
COMMON_TABLE_FIELDS;
|
|
BITCODE_3BD ucsorg;
|
|
BITCODE_3BD ucsxdir;
|
|
BITCODE_3BD ucsydir;
|
|
BITCODE_BD ucs_elevation;
|
|
BITCODE_BS UCSORTHOVIEW;
|
|
BITCODE_H base_ucs;
|
|
BITCODE_H named_ucs;
|
|
BITCODE_BS num_orthopts; // missing in ODA docs
|
|
Dwg_UCS_orthopts *orthopts;
|
|
} Dwg_Object_UCS;
|
|
|
|
/**
|
|
VPORT_CONTROL (64) object, table header
|
|
*/
|
|
typedef struct _dwg_object_VPORT_CONTROL
|
|
{
|
|
COMMON_TABLE_CONTROL_FIELDS;
|
|
} Dwg_Object_VPORT_CONTROL;
|
|
|
|
/**
|
|
VPORT (65/T7) object, table entry
|
|
*/
|
|
typedef struct _dwg_object_VPORT
|
|
{
|
|
COMMON_TABLE_FIELDS;
|
|
// AbstractViewTableRecord
|
|
BITCODE_BD VIEWSIZE; // really the view height
|
|
BITCODE_BD view_width; // in DWG r13+, needed to calc. aspect_ratio
|
|
BITCODE_BD aspect_ratio; // DXF 41 = view_width / VIEWSIZE
|
|
// ViInfo
|
|
BITCODE_2RD VIEWCTR;
|
|
BITCODE_3BD view_target;
|
|
BITCODE_3BD VIEWDIR;
|
|
BITCODE_BD view_twist;
|
|
BITCODE_BD lens_length;
|
|
BITCODE_BD front_clip_z;
|
|
BITCODE_BD back_clip_z;
|
|
BITCODE_4BITS VIEWMODE;
|
|
BITCODE_RC render_mode;
|
|
BITCODE_B use_default_lights;
|
|
BITCODE_RC default_lightning_type;
|
|
BITCODE_BD brightness;
|
|
BITCODE_BD contrast;
|
|
BITCODE_CMC ambient_color;
|
|
// ViewportTableRecord
|
|
BITCODE_2RD lower_left;
|
|
BITCODE_2RD upper_right;
|
|
BITCODE_B UCSFOLLOW;
|
|
BITCODE_BS circle_zoom; /* circle sides: nr of tesselations */
|
|
BITCODE_B FASTZOOM;
|
|
BITCODE_RC UCSICON; /* DXF 71: 0: icon_on, 1: icon_at_ucsorg */
|
|
BITCODE_B GRIDMODE; /* DXF 76: on or off */
|
|
BITCODE_2RD GRIDUNIT;
|
|
BITCODE_B SNAPMODE; /* DXF 75: on or off */
|
|
BITCODE_B SNAPSTYLE;
|
|
BITCODE_BS SNAPISOPAIR;
|
|
BITCODE_BD SNAPANG;
|
|
BITCODE_2RD SNAPBASE;
|
|
BITCODE_2RD SNAPUNIT;
|
|
BITCODE_B ucs_at_origin;
|
|
BITCODE_B UCSVP;
|
|
BITCODE_3BD ucsorg;
|
|
BITCODE_3BD ucsxdir;
|
|
BITCODE_3BD ucsydir;
|
|
BITCODE_BD ucs_elevation;
|
|
BITCODE_BS UCSORTHOVIEW;
|
|
BITCODE_BS grid_flags; /* bit 1: bound to limits, bit 2: adaptive */
|
|
BITCODE_BS grid_major;
|
|
BITCODE_H background;
|
|
BITCODE_H visualstyle;
|
|
BITCODE_H sun;
|
|
BITCODE_H named_ucs;
|
|
BITCODE_H base_ucs;
|
|
} Dwg_Object_VPORT;
|
|
|
|
/**
|
|
APPID_CONTROL (66) object
|
|
The table header of all registered applications
|
|
*/
|
|
typedef struct _dwg_object_APPID_CONTROL
|
|
{
|
|
COMMON_TABLE_CONTROL_FIELDS;
|
|
} Dwg_Object_APPID_CONTROL;
|
|
|
|
/**
|
|
APPID (67/T8) object
|
|
The table entry of a registered application
|
|
*/
|
|
typedef struct _dwg_object_APPID
|
|
{
|
|
COMMON_TABLE_FIELDS;
|
|
BITCODE_RC unknown;
|
|
} Dwg_Object_APPID;
|
|
|
|
/**
|
|
DIMSTYLE_CONTROL (68) object
|
|
The table header of all dimension styles
|
|
*/
|
|
typedef struct _dwg_object_DIMSTYLE_CONTROL
|
|
{
|
|
COMMON_TABLE_CONTROL_FIELDS;
|
|
BITCODE_RC num_morehandles; /* DXF 71 undocumented */
|
|
BITCODE_H* morehandles; /* DXF 340 */
|
|
} Dwg_Object_DIMSTYLE_CONTROL;
|
|
|
|
/**
|
|
DIMSTYLE (69/T9) object, table entry
|
|
*/
|
|
typedef struct _dwg_object_DIMSTYLE
|
|
{
|
|
COMMON_TABLE_FIELDS;
|
|
BITCODE_B DIMTOL;
|
|
BITCODE_B DIMLIM;
|
|
BITCODE_B DIMTIH;
|
|
BITCODE_B DIMTOH;
|
|
BITCODE_B DIMSE1;
|
|
BITCODE_B DIMSE2;
|
|
BITCODE_B DIMALT;
|
|
BITCODE_B DIMTOFL;
|
|
BITCODE_B DIMSAH;
|
|
BITCODE_B DIMTIX;
|
|
BITCODE_B DIMSOXD;
|
|
BITCODE_BS DIMALTD; /*!< r13-r14 only RC */
|
|
BITCODE_BS DIMZIN; /*!< r13-r14 only RC */
|
|
BITCODE_B DIMSD1;
|
|
BITCODE_B DIMSD2;
|
|
BITCODE_BS DIMTOLJ; /*!< r13-r14 only RC */
|
|
BITCODE_BS DIMJUST; /*!< r13-r14 only RC */
|
|
BITCODE_BS DIMFIT; /*!< r13-r14 only RC */
|
|
BITCODE_B DIMUPT;
|
|
BITCODE_BS DIMTZIN; /*!< r13-r14 only RC */
|
|
BITCODE_BS DIMALTZ; /*!< r13-r14 only RC */
|
|
BITCODE_BS DIMALTTZ; /*!< r13-r14 only RC */
|
|
BITCODE_BS DIMTAD; /*!< r13-r14 only RC */
|
|
BITCODE_BS DIMUNIT;
|
|
BITCODE_BS DIMAUNIT;
|
|
BITCODE_BS DIMDEC;
|
|
BITCODE_BS DIMTDEC;
|
|
BITCODE_BS DIMALTU;
|
|
BITCODE_BS DIMALTTD;
|
|
/* BITCODE_H DIMTXSTY; */
|
|
BITCODE_BD DIMSCALE;
|
|
BITCODE_BD DIMASZ;
|
|
BITCODE_BD DIMEXO;
|
|
BITCODE_BD DIMDLI;
|
|
BITCODE_BD DIMEXE;
|
|
BITCODE_BD DIMRND;
|
|
BITCODE_BD DIMDLE;
|
|
BITCODE_BD DIMTP;
|
|
BITCODE_BD DIMTM;
|
|
BITCODE_BD DIMFXL;
|
|
BITCODE_BD DIMJOGANG;
|
|
BITCODE_BS DIMTFILL;
|
|
BITCODE_CMC DIMTFILLCLR;
|
|
BITCODE_BS DIMAZIN;
|
|
BITCODE_BS DIMARCSYM;
|
|
BITCODE_BD DIMTXT;
|
|
BITCODE_BD DIMCEN;
|
|
BITCODE_BD DIMTSZ;
|
|
BITCODE_BD DIMALTF;
|
|
BITCODE_BD DIMLFAC;
|
|
BITCODE_BD DIMTVP;
|
|
BITCODE_BD DIMTFAC;
|
|
BITCODE_BD DIMGAP;
|
|
BITCODE_T DIMPOST;
|
|
BITCODE_T DIMAPOST;
|
|
BITCODE_T DIMBLK_T;
|
|
BITCODE_T DIMBLK1_T;
|
|
BITCODE_T DIMBLK2_T;
|
|
BITCODE_BD DIMALTRND;
|
|
BITCODE_RS DIMCLRD_N; /* preR13 */
|
|
BITCODE_RS DIMCLRE_N; /* preR13 */
|
|
BITCODE_RS DIMCLRT_N; /* preR13 */
|
|
BITCODE_CMC DIMCLRD;
|
|
BITCODE_CMC DIMCLRE;
|
|
BITCODE_CMC DIMCLRT;
|
|
BITCODE_BS DIMADEC;
|
|
BITCODE_BS DIMFRAC;
|
|
BITCODE_BS DIMLUNIT;
|
|
BITCODE_BS DIMDSEP;
|
|
BITCODE_BS DIMTMOVE;
|
|
BITCODE_BS DIMATFIT;
|
|
BITCODE_B DIMFXLON; /*!< r2007+ */
|
|
BITCODE_B DIMTXTDIRECTION; /*!< r2010+ */
|
|
BITCODE_BD DIMALTMZF; /*!< r2010+ */
|
|
BITCODE_T DIMALTMZS; /*!< r2010+ */
|
|
BITCODE_BD DIMMZF; /*!< r2010+ */
|
|
BITCODE_T DIMMZS; /*!< r2010+ */
|
|
BITCODE_BSd DIMLWD;
|
|
BITCODE_BSd DIMLWE;
|
|
BITCODE_B flag0;
|
|
|
|
BITCODE_H DIMTXSTY;
|
|
|
|
BITCODE_H DIMLDRBLK;
|
|
BITCODE_H DIMBLK;
|
|
BITCODE_H DIMBLK1;
|
|
BITCODE_H DIMBLK2;
|
|
|
|
BITCODE_H DIMLTYPE;
|
|
BITCODE_H DIMLTEX1;
|
|
BITCODE_H DIMLTEX2;
|
|
} Dwg_Object_DIMSTYLE;
|
|
|
|
/**
|
|
VX_CONTROL (70) table object (r11-r2000)
|
|
The table header for all viewport entities (unused in newer versions)
|
|
Called VXTable
|
|
*/
|
|
typedef struct _dwg_object_VX_CONTROL
|
|
{
|
|
COMMON_TABLE_CONTROL_FIELDS;
|
|
} Dwg_Object_VX_CONTROL;
|
|
|
|
/**
|
|
VX_TABLE_RECORD (71/T10) table object (r11-r2000)
|
|
Called VXTableRecord / VX_TABLE_RECORD
|
|
*/
|
|
typedef struct _dwg_object_VX_TABLE_RECORD
|
|
{
|
|
COMMON_TABLE_FIELDS;
|
|
BITCODE_B is_on;
|
|
BITCODE_H viewport;
|
|
BITCODE_H prev_entry;
|
|
BITCODE_RS vport_entity_address;
|
|
BITCODE_RSd r11_viewport_index;
|
|
BITCODE_RSd r11_prev_entry_index;
|
|
} Dwg_Object_VX_TABLE_RECORD;
|
|
|
|
/**
|
|
GROUP (72) object
|
|
*/
|
|
typedef struct _dwg_object_GROUP
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_TV name;
|
|
BITCODE_BS unnamed;
|
|
BITCODE_BS selectable;
|
|
BITCODE_BL num_groups;
|
|
BITCODE_H* groups;
|
|
} Dwg_Object_GROUP;
|
|
|
|
/**
|
|
MLINESTYLE (73) object
|
|
*/
|
|
typedef struct _dwg_MLINESTYLE_line
|
|
{
|
|
struct _dwg_object_MLINESTYLE *parent;
|
|
BITCODE_BD offset;
|
|
BITCODE_CMC color;
|
|
union {
|
|
BITCODE_BSd index; /* until 2018 */
|
|
BITCODE_H ltype; /* since 2018 */
|
|
} lt;
|
|
} Dwg_MLINESTYLE_line;
|
|
|
|
typedef struct _dwg_object_MLINESTYLE
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_TV name;
|
|
BITCODE_TV description;
|
|
BITCODE_BS flag;
|
|
BITCODE_CMC fill_color;
|
|
BITCODE_BD start_angle;
|
|
BITCODE_BD end_angle;
|
|
BITCODE_RC num_lines;
|
|
Dwg_MLINESTYLE_line* lines;
|
|
} Dwg_Object_MLINESTYLE;
|
|
|
|
/**
|
|
OLE2FRAME (74 + varies) object
|
|
*/
|
|
typedef struct _dwg_entity_OLE2FRAME
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BS type; /*!< DXF 71, 1: Link, 2: Embedded, 3: Static */
|
|
BITCODE_BS mode; /*!< r2000+ DXF 72, tile_mode, 0: mspace, 1: pspace */
|
|
BITCODE_RC lock_aspect; /*!< r2000+ DXF 73, 0 or 1 (locked) */
|
|
BITCODE_BL data_size; /*!< DXF 90 */
|
|
BITCODE_TF data; /*!< DXF 310, the binary object data */
|
|
// embedded into data, not yet decoded:
|
|
// the MS-CFB (ole2 stream) starts at 0x80 in data
|
|
// before is probably:
|
|
BITCODE_BS oleversion; /*!< DXF 70, always 2 */
|
|
BITCODE_TF oleclient; /*!< DXF 3, e.g. OLE or Paintbrush Picture */
|
|
BITCODE_3BD pt1; /*!< DXF 10, upper left corner */
|
|
BITCODE_3BD pt2; /*!< DXF 11, lower right corner */
|
|
} Dwg_Entity_OLE2FRAME;
|
|
|
|
/**
|
|
DUMMY (75) object, placeholder for unsupported types on encode.
|
|
*/
|
|
typedef struct _dwg_object_DUMMY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
} Dwg_Object_DUMMY;
|
|
|
|
/**
|
|
LONG_TRANSACTION (76) object
|
|
*/
|
|
typedef struct _dwg_object_LONG_TRANSACTION
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
/* ??? not seen */
|
|
} Dwg_Object_LONG_TRANSACTION;
|
|
|
|
/* NOT SURE ABOUT THIS ONE (IS IT OBJECT OR ENTITY?): */
|
|
/**
|
|
subtype PROXY_LWPOLYLINE (33) in a PROXY object
|
|
Not a LWPOLYLINE (77? + varies)
|
|
*/
|
|
typedef struct _dwg_LWPOLYLINE_width
|
|
{
|
|
BITCODE_BD start; /* 40 */
|
|
BITCODE_BD end; /* 41 */
|
|
} Dwg_LWPOLYLINE_width;
|
|
|
|
typedef struct _dwg_PROXY_LWPOLYLINE
|
|
{
|
|
struct _dwg_entity_PROXY_ENTITY *parent;
|
|
|
|
BITCODE_RL size; /* from flags to *widths */
|
|
BITCODE_BS flags;
|
|
BITCODE_BD const_width;
|
|
BITCODE_BD elevation;
|
|
BITCODE_BD thickness;
|
|
BITCODE_BE extrusion;
|
|
BITCODE_BL num_points;
|
|
BITCODE_2RD* points;
|
|
BITCODE_BL num_bulges;
|
|
BITCODE_BD* bulges;
|
|
BITCODE_BL num_widths;
|
|
Dwg_LWPOLYLINE_width* widths;
|
|
BITCODE_RC unknown_1;
|
|
BITCODE_RC unknown_2;
|
|
BITCODE_RC unknown_3;
|
|
} Dwg_PROXY_LWPOLYLINE;
|
|
|
|
/**
|
|
(ACAD_)PROXY_ENTITY (498, 0x1f2) object
|
|
*/
|
|
typedef struct _dwg_entity_PROXY_ENTITY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BL class_id; /*!< DXF 91, always 498, same as obj->type */
|
|
BITCODE_BL version; /*!< DXF 95 <r2018, 71 r2018+ */
|
|
BITCODE_BL maint_version; /*!< DXF 97 r2018+ */
|
|
BITCODE_B from_dxf; /*!< DXF 70 */
|
|
BITCODE_BL data_numbits;
|
|
BITCODE_BL data_size; /*!< DXF 93 */
|
|
BITCODE_RC *data; /*!< DXF 310 */
|
|
BITCODE_BL num_objids;
|
|
BITCODE_H* objids; /*!< DXF 340 */
|
|
} Dwg_Entity_PROXY_ENTITY;
|
|
|
|
/**
|
|
(ACAD_)PROXY OBJECT (499, 0x1f3) object
|
|
*/
|
|
typedef struct _dwg_object_PROXY_OBJECT
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BL class_id; /*!< DXF 91, always 499, same as obj->type */
|
|
BITCODE_BL version; /*!< DXF 95 <r2018, 71 r2018+ */
|
|
BITCODE_BL maint_version; /*!< DXF 97 r2018+ */
|
|
BITCODE_B from_dxf; /*!< DXF 70 */
|
|
BITCODE_BL data_numbits;
|
|
BITCODE_BL data_size; /*!< DXF 93 */
|
|
BITCODE_RC *data; /*!< DXF 310 */
|
|
BITCODE_BL num_objids;
|
|
BITCODE_H* objids; /*!< DXF 340 */
|
|
} Dwg_Object_PROXY_OBJECT;
|
|
|
|
/**
|
|
* types which are fixed and non-fixed:
|
|
* also OLE2FRAME above
|
|
*/
|
|
|
|
/**
|
|
Structs for HATCH (78 + varies)
|
|
*/
|
|
typedef struct _dwg_HATCH_Color
|
|
{
|
|
struct _dwg_entity_HATCH *parent;
|
|
BITCODE_BD shift_value; //0.0 non-shifted, 1.0 shifted
|
|
BITCODE_CMC color;
|
|
} Dwg_HATCH_Color;
|
|
|
|
typedef struct _dwg_HATCH_ControlPoint
|
|
{
|
|
struct _dwg_HATCH_PathSeg *parent;
|
|
BITCODE_2RD point;
|
|
BITCODE_BD weight;
|
|
} Dwg_HATCH_ControlPoint;
|
|
|
|
typedef struct _dwg_HATCH_PathSeg
|
|
{
|
|
struct _dwg_HATCH_Path *parent;
|
|
BITCODE_RC curve_type; // i.e. curve_type: 1-4
|
|
// could be a union
|
|
/* LINE */
|
|
BITCODE_2RD first_endpoint;
|
|
BITCODE_2RD second_endpoint;
|
|
/* CIRCULAR ARC */
|
|
BITCODE_2RD center;
|
|
BITCODE_BD radius;
|
|
BITCODE_BD start_angle;
|
|
BITCODE_BD end_angle;
|
|
BITCODE_B is_ccw;
|
|
/* ELLIPTICAL ARC */
|
|
/* BITCODE_2RD center */
|
|
BITCODE_2RD endpoint;
|
|
BITCODE_BD minor_major_ratio;
|
|
/* BITCODE_BD start_angle; */
|
|
/* BITCODE_BD end_angle; */
|
|
/* BITCODE_B is_ccw; */
|
|
/* SPLINE */
|
|
BITCODE_BL degree;
|
|
BITCODE_B is_rational;
|
|
BITCODE_B is_periodic;
|
|
BITCODE_BL num_knots;
|
|
BITCODE_BL num_control_points;
|
|
BITCODE_BD* knots;
|
|
Dwg_HATCH_ControlPoint* control_points;
|
|
BITCODE_BL num_fitpts;
|
|
BITCODE_2RD *fitpts;
|
|
BITCODE_2RD start_tangent;
|
|
BITCODE_2RD end_tangent;
|
|
} Dwg_HATCH_PathSeg;
|
|
|
|
typedef struct _dwg_HATCH_PolylinePath
|
|
{
|
|
struct _dwg_HATCH_Path *parent;
|
|
BITCODE_2RD point;
|
|
BITCODE_BD bulge;
|
|
} Dwg_HATCH_PolylinePath;
|
|
|
|
typedef struct _dwg_HATCH_Path
|
|
{
|
|
struct _dwg_entity_HATCH *parent;
|
|
/* Segment path */
|
|
BITCODE_BL flag; /* 2: is_polyline, 4: is_derived, 8: is_textbox,
|
|
0x20: is_open, 0x80: is_textisland, 0x100: is_duplicate,
|
|
0x200: is_annotative */
|
|
BITCODE_BL num_segs_or_paths;
|
|
Dwg_HATCH_PathSeg* segs;
|
|
|
|
/* Polyline path */
|
|
BITCODE_B bulges_present;
|
|
BITCODE_B closed;
|
|
Dwg_HATCH_PolylinePath* polyline_paths;
|
|
|
|
// needed?
|
|
BITCODE_BL num_boundary_handles;
|
|
BITCODE_H* boundary_handles;
|
|
} Dwg_HATCH_Path;
|
|
|
|
typedef struct _dwg_HATCH_DefLine
|
|
{
|
|
struct _dwg_entity_HATCH *parent;
|
|
BITCODE_BD angle;
|
|
BITCODE_2BD pt0;
|
|
BITCODE_2BD offset;
|
|
BITCODE_BS num_dashes;
|
|
BITCODE_BD* dashes;
|
|
} Dwg_HATCH_DefLine;
|
|
|
|
typedef struct _dwg_entity_HATCH
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BL is_gradient_fill;
|
|
BITCODE_BL reserved;
|
|
BITCODE_BD gradient_angle;
|
|
BITCODE_BD gradient_shift;
|
|
BITCODE_BL single_color_gradient;
|
|
BITCODE_BD gradient_tint;
|
|
BITCODE_BL num_colors;
|
|
Dwg_HATCH_Color* colors;
|
|
BITCODE_T gradient_name; /* 1: SPHERICAL, 2: HEMISPHERICAL, 3: CURVED, 4: LINEAR, 5: CYLINDER */
|
|
|
|
BITCODE_BD elevation;
|
|
BITCODE_BE extrusion;
|
|
BITCODE_TV name;
|
|
BITCODE_B is_solid_fill;
|
|
BITCODE_B is_associative;
|
|
BITCODE_BL num_paths;
|
|
Dwg_HATCH_Path* paths; // also named loop
|
|
BITCODE_BS style;
|
|
BITCODE_BS pattern_type;
|
|
BITCODE_BD angle;
|
|
BITCODE_BD scale_spacing;
|
|
BITCODE_B double_flag;
|
|
BITCODE_BS num_deflines;
|
|
Dwg_HATCH_DefLine * deflines;
|
|
BITCODE_B has_derived;
|
|
BITCODE_BD pixel_size;
|
|
BITCODE_BL num_seeds;
|
|
BITCODE_2RD * seeds;
|
|
//BITCODE_BL sum_boundary_handles;
|
|
//BITCODE_H* boundary_handles;
|
|
} Dwg_Entity_HATCH;
|
|
|
|
// derived from Hatch
|
|
typedef struct _dwg_entity_MPOLYGON
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BL is_gradient_fill;
|
|
BITCODE_BL reserved;
|
|
BITCODE_BD gradient_angle;
|
|
BITCODE_BD gradient_shift;
|
|
BITCODE_BL single_color_gradient;
|
|
BITCODE_BD gradient_tint;
|
|
BITCODE_BL num_colors;
|
|
Dwg_HATCH_Color* colors;
|
|
BITCODE_T gradient_name; /* 1: SPHERICAL, 2: HEMISPHERICAL, 3: CURVED, 4: LINEAR, 5: CYLINDER */
|
|
|
|
BITCODE_BD elevation;
|
|
BITCODE_BE extrusion;
|
|
BITCODE_T name;
|
|
BITCODE_B is_solid_fill;
|
|
BITCODE_B is_associative;
|
|
BITCODE_BL num_paths;
|
|
Dwg_HATCH_Path* paths; // also named loop
|
|
BITCODE_BS style;
|
|
BITCODE_BS pattern_type;
|
|
BITCODE_BD angle;
|
|
BITCODE_BD scale_spacing;
|
|
BITCODE_B double_flag;
|
|
BITCODE_BS num_deflines;
|
|
Dwg_HATCH_DefLine * deflines;
|
|
|
|
BITCODE_CMC hatch_color; /* DXF 62 */
|
|
BITCODE_2RD x_dir; /* DXF 11 (ocs) */
|
|
BITCODE_BL num_boundary_handles; /* DXF 99 */
|
|
//BITCODE_H* boundary_handles;
|
|
|
|
} Dwg_Entity_MPOLYGON;
|
|
|
|
/**
|
|
XRECORD (79 + varies) object
|
|
*/
|
|
typedef struct _dwg_object_XRECORD
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BS cloning; /* DXF 280, as with DICTIONARY.
|
|
DuplicateRecordCloning mergeStyle:
|
|
1: erase allowed,
|
|
0x80: cloning allowed */
|
|
BITCODE_BL xdata_size;
|
|
BITCODE_BL num_xdata; /* computed */
|
|
Dwg_Resbuf* xdata;
|
|
BITCODE_BL num_objid_handles;
|
|
BITCODE_H* objid_handles;
|
|
} Dwg_Object_XRECORD;
|
|
|
|
/**
|
|
PLACEHOLDER (80 + varies) object
|
|
ACDBPLACEHOLDER
|
|
*/
|
|
typedef struct _dwg_object_PLACEHOLDER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
} Dwg_Object_PLACEHOLDER;
|
|
|
|
/**
|
|
* Entity MULTILEADER (varies)
|
|
* R2000+ in work
|
|
*/
|
|
|
|
typedef struct _dwg_LEADER_Break
|
|
{
|
|
struct _dwg_LEADER_Line *parent;
|
|
BITCODE_3BD start; /*!< DXF 12 */
|
|
BITCODE_3BD end; /*!< DXF 13 */
|
|
} Dwg_LEADER_Break;
|
|
|
|
typedef struct _dwg_LEADER_Line // as documented by DXF
|
|
{
|
|
struct _dwg_LEADER_Node *parent;
|
|
BITCODE_BL num_points;
|
|
BITCODE_3DPOINT* points; /*!< DXF 10 */
|
|
BITCODE_BL num_breaks;
|
|
Dwg_LEADER_Break * breaks; /*!< DXF 12, 13 */
|
|
BITCODE_BL line_index; /*!< DXF 91 */
|
|
|
|
/*!< r2010+: */
|
|
BITCODE_BS type; // 0 = invisible leader, 1 = straight leader, 2 = spline leader
|
|
BITCODE_CMC color; // of the line
|
|
BITCODE_H ltype; // 5 340
|
|
BITCODE_BLd linewt;
|
|
BITCODE_BD arrow_size;
|
|
BITCODE_H arrow_handle; // 5 341
|
|
BITCODE_BL flags; // 1 = leader type, 2 = line color, 4 = line type, 8 = line weight,
|
|
// 16 = arrow size, 32 = arrow symbol (handle)
|
|
} Dwg_LEADER_Line;
|
|
|
|
typedef struct _dwg_LEADER_ArrowHead
|
|
{
|
|
struct _dwg_entity_MULTILEADER *parent;
|
|
BITCODE_B is_default;
|
|
BITCODE_H arrowhead;
|
|
} Dwg_LEADER_ArrowHead;
|
|
|
|
typedef struct _dwg_LEADER_BlockLabel
|
|
{
|
|
struct _dwg_entity_MULTILEADER *parent;
|
|
BITCODE_H attdef;
|
|
BITCODE_TV label_text;
|
|
BITCODE_BS ui_index;
|
|
BITCODE_BD width;
|
|
} Dwg_LEADER_BlockLabel;
|
|
|
|
typedef struct _dwg_LEADER_Node
|
|
{
|
|
struct _dwg_entity_MULTILEADER *parent;
|
|
BITCODE_B has_lastleaderlinepoint; /*!< DXF 290 */
|
|
BITCODE_B has_dogleg; /*!< DXF 291 */
|
|
BITCODE_3BD lastleaderlinepoint; /*!< DXF 10 */
|
|
BITCODE_3BD dogleg_vector; /*!< DXF 11 */
|
|
BITCODE_BL branch_index; /*!< DXF 90 */
|
|
BITCODE_BD dogleg_length; /*!< DXF 40 */
|
|
BITCODE_BL num_lines;
|
|
Dwg_LEADER_Line *lines; /*!< DXF 10 */
|
|
BITCODE_BL num_breaks;
|
|
Dwg_LEADER_Break * breaks; /*!< DXF 12, 13 */
|
|
|
|
BITCODE_BS attach_dir; //2010+ 271
|
|
} Dwg_LEADER_Node;
|
|
|
|
// common to text and block
|
|
#define CMLContent_fields \
|
|
BITCODE_RC type; /* 1 for blk, 2 for text */ \
|
|
BITCODE_3BD normal; \
|
|
BITCODE_3BD location; \
|
|
BITCODE_BD rotation
|
|
|
|
typedef struct _dwg_MLEADER_Content_MText
|
|
{
|
|
CMLContent_fields;
|
|
BITCODE_H style;
|
|
BITCODE_3BD direction;
|
|
BITCODE_CMC color;
|
|
BITCODE_BD width;
|
|
BITCODE_BD height;
|
|
BITCODE_BD line_spacing_factor;
|
|
BITCODE_T default_text;
|
|
BITCODE_BS line_spacing_style;
|
|
BITCODE_BS alignment;
|
|
BITCODE_BS flow;
|
|
BITCODE_CMC bg_color;
|
|
BITCODE_BD bg_scale;
|
|
BITCODE_BL bg_transparency;
|
|
BITCODE_B is_bg_fill;
|
|
BITCODE_B is_bg_mask_fill;
|
|
BITCODE_BS col_type;
|
|
BITCODE_B is_height_auto;
|
|
BITCODE_BD col_width;
|
|
BITCODE_BD col_gutter;
|
|
BITCODE_B is_col_flow_reversed;
|
|
BITCODE_BL num_col_sizes;
|
|
BITCODE_BD *col_sizes;
|
|
BITCODE_B word_break;
|
|
BITCODE_B unknown;
|
|
} Dwg_MLEADER_Content_MText;
|
|
|
|
typedef struct _dwg_MLEADER_Content_Block
|
|
{
|
|
CMLContent_fields;
|
|
BITCODE_H block_table;
|
|
BITCODE_3BD scale;
|
|
BITCODE_CMC color;
|
|
BITCODE_BD *transform;
|
|
} Dwg_MLEADER_Content_Block;
|
|
|
|
typedef union _dwg_MLEADER_Content
|
|
{
|
|
Dwg_MLEADER_Content_MText txt;
|
|
Dwg_MLEADER_Content_Block blk;
|
|
} Dwg_MLEADER_Content;
|
|
|
|
/* The MLeaderAnnotContext object (par 20.4.86), embedded into an MLEADER */
|
|
typedef struct _dwg_MLEADER_AnnotContext
|
|
{
|
|
// AcDbObjectContextData:
|
|
// BITCODE_BS class_version; /*!< r2010+ DXF 70 4 */
|
|
// BITCODE_B is_default; /*!< r2010+ DXF 290 1 */
|
|
// BITCODE_B has_xdic; /*!< r2010+ */
|
|
// AcDbAnnotScaleObjectContextData:
|
|
// BITCODE_H scale; /*!< DXF 340 hard ptr to AcDbScale */
|
|
|
|
BITCODE_BL num_leaders;
|
|
Dwg_LEADER_Node *leaders;
|
|
|
|
BITCODE_BS attach_dir;
|
|
|
|
BITCODE_BD scale_factor;
|
|
BITCODE_3BD content_base;
|
|
BITCODE_BD text_height;
|
|
BITCODE_BD arrow_size;
|
|
BITCODE_BD landing_gap;
|
|
BITCODE_BS text_left;
|
|
BITCODE_BS text_right;
|
|
BITCODE_BS text_angletype;
|
|
BITCODE_BS text_alignment;
|
|
|
|
BITCODE_B has_content_txt;
|
|
BITCODE_B has_content_blk;
|
|
Dwg_MLEADER_Content content; // union txt/blk
|
|
|
|
BITCODE_3BD base;
|
|
BITCODE_3BD base_dir;
|
|
BITCODE_3BD base_vert;
|
|
BITCODE_B is_normal_reversed;
|
|
|
|
BITCODE_BS text_top;
|
|
BITCODE_BS text_bottom;
|
|
|
|
} Dwg_MLEADER_AnnotContext;
|
|
|
|
// dbmleader.h
|
|
typedef struct _dwg_entity_MULTILEADER
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BS class_version; /*!< r2010+ =2 */
|
|
Dwg_MLEADER_AnnotContext ctx;
|
|
BITCODE_H mleaderstyle; /* DXF 340 */
|
|
BITCODE_BL flags; /* override. DXF 90 */
|
|
BITCODE_BS type;
|
|
BITCODE_CMC line_color;
|
|
BITCODE_H line_ltype;
|
|
BITCODE_BLd line_linewt;
|
|
BITCODE_B has_landing;
|
|
BITCODE_B has_dogleg;
|
|
BITCODE_BD landing_dist;
|
|
BITCODE_H arrow_handle;
|
|
BITCODE_BD arrow_size; /* the default */
|
|
BITCODE_BS style_content;
|
|
BITCODE_H text_style;
|
|
BITCODE_BS text_left;
|
|
BITCODE_BS text_right;
|
|
BITCODE_BS text_angletype;
|
|
BITCODE_BS text_alignment;
|
|
BITCODE_CMC text_color;
|
|
BITCODE_B has_text_frame;
|
|
BITCODE_H block_style; // internal blocks mostly, _TagSlot, _TagHexagon,
|
|
// _DetailCallout, ...
|
|
BITCODE_CMC block_color;
|
|
BITCODE_3BD block_scale;
|
|
BITCODE_BD block_rotation;
|
|
BITCODE_BS style_attachment; // 0 = center extents, 1 = insertion point
|
|
BITCODE_B is_annotative;
|
|
|
|
/* until r2007: */
|
|
BITCODE_BL num_arrowheads;
|
|
Dwg_LEADER_ArrowHead *arrowheads;
|
|
BITCODE_BL num_blocklabels;
|
|
Dwg_LEADER_BlockLabel *blocklabels;
|
|
BITCODE_B is_neg_textdir;
|
|
BITCODE_BS ipe_alignment;
|
|
BITCODE_BS justification;
|
|
BITCODE_BD scale_factor;
|
|
|
|
BITCODE_BS attach_dir; /*!< r2010+ (0 = horizontal, 1 = vertical) */
|
|
BITCODE_BS attach_top; /*!< r2010+ */
|
|
BITCODE_BS attach_bottom; /*!< r2010+ */
|
|
|
|
BITCODE_B is_text_extended; /*!< r2013+ */
|
|
} Dwg_Entity_MULTILEADER;
|
|
|
|
/**
|
|
* Object MLEADERSTYLE (varies)
|
|
* R2000+
|
|
*/
|
|
typedef struct _dwg_object_MLEADERSTYLE
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BS class_version; /*!< DXF 179, r2010+ =2 */
|
|
BITCODE_BS content_type;
|
|
BITCODE_BS mleader_order;
|
|
BITCODE_BS leader_order;
|
|
BITCODE_BL max_points;
|
|
BITCODE_BD first_seg_angle;
|
|
BITCODE_BD second_seg_angle;
|
|
BITCODE_BS type;
|
|
BITCODE_CMC line_color;
|
|
BITCODE_H line_type;
|
|
BITCODE_BLd linewt;
|
|
BITCODE_B has_landing;
|
|
BITCODE_B has_dogleg;
|
|
BITCODE_BD landing_gap;
|
|
BITCODE_BD landing_dist;
|
|
BITCODE_TV description;
|
|
BITCODE_H arrow_head;
|
|
BITCODE_BD arrow_head_size;
|
|
BITCODE_TV text_default;
|
|
BITCODE_H text_style;
|
|
BITCODE_BS attach_left;
|
|
BITCODE_BS attach_right;
|
|
BITCODE_BS text_angle_type;
|
|
BITCODE_BS text_align_type;
|
|
BITCODE_CMC text_color;
|
|
BITCODE_BD text_height;
|
|
BITCODE_B has_text_frame;
|
|
BITCODE_B text_always_left;
|
|
BITCODE_BD align_space;
|
|
BITCODE_H block;
|
|
BITCODE_CMC block_color;
|
|
BITCODE_3BD block_scale;
|
|
BITCODE_B use_block_scale;
|
|
BITCODE_BD block_rotation;
|
|
BITCODE_B use_block_rotation;
|
|
BITCODE_BS block_connection;
|
|
BITCODE_BD scale;
|
|
BITCODE_B is_changed;
|
|
BITCODE_B is_annotative;
|
|
BITCODE_BD break_size;
|
|
|
|
BITCODE_BS attach_dir; /*!< r2010+ (0 = horizontal, 1 = vertical) */
|
|
BITCODE_BS attach_top; /*!< r2010+ */
|
|
BITCODE_BS attach_bottom; /*!< r2010+ */
|
|
|
|
BITCODE_B text_extended; /*!< r2013+ */
|
|
} Dwg_Object_MLEADERSTYLE;
|
|
|
|
/**
|
|
VBA_PROJECT (81 + varies) object
|
|
Has its own optional section? section[5]?
|
|
*/
|
|
typedef struct _dwg_object_VBA_PROJECT
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BL data_size;
|
|
BITCODE_TF data;
|
|
} Dwg_Object_VBA_PROJECT;
|
|
|
|
/**
|
|
Object PLOTSETTINGS (varies)
|
|
See also LAYOUT.
|
|
*/
|
|
typedef struct _dwg_object_PLOTSETTINGS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_T printer_cfg_file; /*!< DXF 1 */
|
|
BITCODE_T paper_size; /*!< DXF 2 */
|
|
BITCODE_T canonical_media_name; /*!< DXF 4 */
|
|
BITCODE_BS plot_flags; /*!< DXF 70
|
|
1 = PlotViewportBorders
|
|
2 = ShowPlotStyles
|
|
4 = PlotCentered
|
|
8 = PlotHidden
|
|
16 = UseStandardScale
|
|
32 = PlotPlotStyles
|
|
64 = ScaleLineweights
|
|
128 = PrintLineweights
|
|
512 = DrawViewportsFirst
|
|
1024 = ModelType
|
|
2048 = UpdatePaper
|
|
4096 = ZoomToPaperOnUpdate
|
|
8192 = Initializing
|
|
16384 = PrevPlotInit */
|
|
BITCODE_H plotview; /*!< DXF 6, r2004+ */
|
|
BITCODE_T plotview_name; /*!< DXF 6, until r2000 */
|
|
BITCODE_BD left_margin; /*!< DXF 40, margins in mm */
|
|
BITCODE_BD bottom_margin; /*!< DXF 42 */
|
|
BITCODE_BD right_margin; /*!< DXF 43 */
|
|
BITCODE_BD top_margin; /*!< DXF 44 */
|
|
BITCODE_BD paper_width; /*!< DXF 44, in mm */
|
|
BITCODE_BD paper_height; /*!< DXF 45, in mm */
|
|
BITCODE_2BD_1 plot_origin; /*!< DXF 46,47 */
|
|
BITCODE_2BD_1 plot_window_ll; /*!< DXF 48,49 */
|
|
BITCODE_2BD_1 plot_window_ur; /*!< DXF 140,141 */
|
|
BITCODE_BS plot_paper_unit; /*!< DXF 72, 0 inches, 1 mm, 2 pixel */
|
|
BITCODE_BS
|
|
plot_rotation_mode; /*!< DXF 73, 0 normal, 1 90, 2 180, 3 270 deg */
|
|
BITCODE_BS plot_type; /*!< DXF 74, 0 display, 1 extents, 2 limits, 3 view
|
|
(see DXF 6), 4 window (see 48-140), 5 layout */
|
|
BITCODE_BD paper_units; /*!< DXF 142 */
|
|
BITCODE_BD drawing_units; /*!< DXF 143 */
|
|
BITCODE_T stylesheet; /*!< DXF 7 */
|
|
BITCODE_BS
|
|
std_scale_type; /*!< DXF 75, 0 = scaled to fit,
|
|
1 = 1/128"=1', 2 = 1/64"=1', 3 = 1/32"=1'
|
|
4 = 1/16"=1', 5 = 3/32"=1', 6 = 1/8"=1'
|
|
7 = 3/16"=1', 8 = 1/4"=1', 9 = 3/8"=1'
|
|
10 = 1/2"=1', 11 = 3/4"=1', 12 = 1"=1'
|
|
13 = 3"=1', 14 = 6"=1', 15 = 1'=1'
|
|
16 = 1:1, 17= 1:2, 18 = 1:4 19 = 1:8, 20 = 1:10, 21=
|
|
1:16 22 = 1:20, 23 = 1:30, 24 = 1:40, 25 = 1:50, 26 =
|
|
1:100 27 = 2:1, 28 = 4:1, 29 = 8:1, 30 = 10:1, 31 =
|
|
100:1, 32 = 1000:1
|
|
*/
|
|
BITCODE_BD std_scale_factor; /*!< DXF 147, value of 75 */
|
|
BITCODE_2BD_1 paper_image_origin; /*!< DXF 148 + 149 */
|
|
BITCODE_BS shadeplot_type; /*!< DXF 76, 0 display, 1 wireframe, 2 hidden, 3
|
|
rendered, 4 visualstyle, 5 renderPreset */
|
|
BITCODE_BS
|
|
shadeplot_reslevel; /*!< DXF 77, 0 draft, 1 preview, 2 nomal,
|
|
3 presentation, 4 maximum, 5 custom */
|
|
BITCODE_BS shadeplot_customdpi; /*!< DXF 78, 100-32767 */
|
|
BITCODE_H shadeplot; /*!< DXF 333 optional. As in VIEWPORT */
|
|
} Dwg_Object_PLOTSETTINGS;
|
|
|
|
/**
|
|
LAYOUT (82 + varies) object
|
|
*/
|
|
typedef struct _dwg_object_LAYOUT
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
// AcDbPlotSettings:
|
|
Dwg_Object_PLOTSETTINGS plotsettings;
|
|
|
|
// AcDbLayout:
|
|
BITCODE_T layout_name;
|
|
BITCODE_BS tab_order;
|
|
BITCODE_BS layout_flags; /* 1: PSLTSCALE, 2: LIMCHECK */
|
|
BITCODE_3DPOINT INSBASE;
|
|
BITCODE_2DPOINT LIMMIN;
|
|
BITCODE_2DPOINT LIMMAX;
|
|
BITCODE_3DPOINT UCSORG;
|
|
BITCODE_3DPOINT UCSXDIR;
|
|
BITCODE_3DPOINT UCSYDIR;
|
|
BITCODE_BD ucs_elevation;
|
|
BITCODE_BS UCSORTHOVIEW;
|
|
BITCODE_3DPOINT EXTMIN;
|
|
BITCODE_3DPOINT EXTMAX;
|
|
BITCODE_H block_header;
|
|
BITCODE_H active_viewport;
|
|
BITCODE_H base_ucs;
|
|
BITCODE_H named_ucs;
|
|
BITCODE_BL num_viewports; // r2004+
|
|
BITCODE_H *viewports; // r2004+
|
|
} Dwg_Object_LAYOUT;
|
|
|
|
/**
|
|
* And the non-fixed types, classes, only
|
|
*/
|
|
|
|
/**
|
|
Class DICTIONARYVAR (varies)
|
|
*/
|
|
typedef struct _dwg_object_DICTIONARYVAR
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_RC schema;
|
|
BITCODE_T strvalue;
|
|
} Dwg_Object_DICTIONARYVAR;
|
|
|
|
/**
|
|
Class TABLE (varies)
|
|
*/
|
|
|
|
// 20.4.99. also for FIELD
|
|
typedef struct _dwg_TABLE_value
|
|
{
|
|
BITCODE_BL flags; /* DXF 90 */
|
|
BITCODE_BL format_flags; /* DXF 93, r2007+ */
|
|
BITCODE_BL data_type;
|
|
BITCODE_BL data_size;
|
|
BITCODE_BL data_long;
|
|
BITCODE_BD data_double;
|
|
BITCODE_T data_string;
|
|
BITCODE_TF data_date;
|
|
BITCODE_2RD data_point;
|
|
BITCODE_3RD data_3dpoint;
|
|
BITCODE_H data_handle;
|
|
BITCODE_BL unit_type;
|
|
BITCODE_T format_string;
|
|
BITCODE_T value_string;
|
|
} Dwg_TABLE_value;
|
|
|
|
// 20.4.100 Custom data collection for table cells, cols, rows
|
|
typedef struct _dwg_TABLE_CustomDataItem
|
|
{
|
|
BITCODE_T name;
|
|
Dwg_TABLE_value value;
|
|
|
|
struct _dwg_TableCell *cell_parent;
|
|
struct _dwg_TableRow *row_parent;
|
|
} Dwg_TABLE_CustomDataItem;
|
|
|
|
typedef struct _dwg_TABLE_AttrDef
|
|
{
|
|
struct _dwg_TABLE_Cell *parent;
|
|
BITCODE_H attdef;
|
|
BITCODE_BS index;
|
|
BITCODE_T text;
|
|
} Dwg_TABLE_AttrDef;
|
|
|
|
typedef struct _dwg_TABLE_Cell
|
|
{
|
|
struct _dwg_entity_TABLE *parent;
|
|
BITCODE_BS type;
|
|
BITCODE_RC flags;
|
|
BITCODE_B is_merged_value;
|
|
BITCODE_B is_autofit_flag;
|
|
BITCODE_BL merged_width_flag;
|
|
BITCODE_BL merged_height_flag;
|
|
BITCODE_BD rotation;
|
|
BITCODE_T text_value;
|
|
BITCODE_H text_style;
|
|
BITCODE_H block_handle;
|
|
BITCODE_BD block_scale;
|
|
BITCODE_B additional_data_flag;
|
|
BITCODE_BL cell_flag_override;
|
|
BITCODE_RC virtual_edge_flag;
|
|
BITCODE_RS cell_alignment;
|
|
BITCODE_B bg_fill_none;
|
|
BITCODE_CMC bg_color;
|
|
BITCODE_CMC content_color;
|
|
BITCODE_BD text_height;
|
|
BITCODE_CMC top_grid_color;
|
|
BITCODE_BS top_grid_linewt;
|
|
BITCODE_BS top_visibility;
|
|
BITCODE_CMC right_grid_color;
|
|
BITCODE_BS right_grid_linewt;
|
|
BITCODE_BS right_visibility;
|
|
BITCODE_CMC bottom_grid_color;
|
|
BITCODE_BS bottom_grid_linewt;
|
|
BITCODE_BS bottom_visibility;
|
|
BITCODE_CMC left_grid_color;
|
|
BITCODE_BS left_grid_linewt;
|
|
BITCODE_BS left_visibility;
|
|
BITCODE_BL unknown;
|
|
Dwg_TABLE_value value;
|
|
BITCODE_BL num_attr_defs;
|
|
Dwg_TABLE_AttrDef *attr_defs;
|
|
// BITCODE_H text_style_override;
|
|
} Dwg_TABLE_Cell;
|
|
|
|
typedef struct _dwg_TABLE_BreakHeight
|
|
{
|
|
struct _dwg_entity_TABLE *parent;
|
|
BITCODE_3BD position;
|
|
BITCODE_BD height;
|
|
BITCODE_BL flag;
|
|
} Dwg_TABLE_BreakHeight;
|
|
|
|
typedef struct _dwg_TABLE_BreakRow
|
|
{
|
|
struct _dwg_entity_TABLE *parent;
|
|
BITCODE_3BD position;
|
|
BITCODE_BL start;
|
|
BITCODE_BL end;
|
|
} Dwg_TABLE_BreakRow;
|
|
|
|
typedef struct _dwg_LinkedData
|
|
{
|
|
BITCODE_T name; // max 16, dxf 1
|
|
BITCODE_T description; // max 24, dxf 300
|
|
} Dwg_LinkedData;
|
|
|
|
typedef struct _dwg_TableCellContent_Attr
|
|
{
|
|
struct _dwg_TableCellContent *parent;
|
|
BITCODE_H attdef;
|
|
BITCODE_TV value;
|
|
BITCODE_BL index;
|
|
} Dwg_TableCellContent_Attr;
|
|
|
|
// Content format 20.4.101.3
|
|
typedef struct _dwg_ContentFormat
|
|
{
|
|
BITCODE_BL property_override_flags;
|
|
BITCODE_BL property_flags;
|
|
BITCODE_BL value_data_type; /* see 20.4.98 */
|
|
BITCODE_BL value_unit_type; /* see 20.4.98 */
|
|
BITCODE_TV value_format_string;
|
|
BITCODE_BD rotation;
|
|
BITCODE_BD block_scale;
|
|
BITCODE_BL cell_alignment;
|
|
BITCODE_CMC content_color;
|
|
BITCODE_H text_style;
|
|
BITCODE_BD text_height;
|
|
} Dwg_ContentFormat;
|
|
|
|
typedef struct _dwg_TableCellContent
|
|
{
|
|
struct _dwg_TableCell *parent;
|
|
BITCODE_BL type;
|
|
Dwg_TABLE_value value; // 20.4.99 Value
|
|
BITCODE_H handle;
|
|
BITCODE_BL num_attrs;
|
|
Dwg_TableCellContent_Attr *attrs;
|
|
BITCODE_BS has_content_format_overrides;
|
|
Dwg_ContentFormat content_format;
|
|
} Dwg_TableCellContent;
|
|
|
|
// 20.4.98
|
|
typedef struct _dwg_CellContentGeometry
|
|
{
|
|
BITCODE_3BD dist_top_left;
|
|
BITCODE_3BD dist_center;
|
|
BITCODE_BD content_width;
|
|
BITCODE_BD content_height;
|
|
BITCODE_BD width;
|
|
BITCODE_BD height;
|
|
BITCODE_BL unknown; /* ODA bug, BD there. DXF 95 */
|
|
|
|
struct _dwg_TableCell *cell_parent;
|
|
struct _dwg_TABLEGEOMETRY_Cell *geom_parent;
|
|
} Dwg_CellContentGeometry;
|
|
|
|
typedef struct _dwg_TableCell
|
|
{
|
|
BITCODE_BL flag;
|
|
BITCODE_TV tooltip;
|
|
BITCODE_BL customdata;
|
|
BITCODE_BL num_customdata_items;
|
|
Dwg_TABLE_CustomDataItem *customdata_items;
|
|
BITCODE_BL has_linked_data;
|
|
BITCODE_H data_link;
|
|
BITCODE_BL num_rows;
|
|
BITCODE_BL num_cols;
|
|
BITCODE_BL unknown;
|
|
BITCODE_BL num_cell_contents;
|
|
Dwg_TableCellContent *cell_contents;
|
|
BITCODE_BL style_id;
|
|
BITCODE_BL has_geom_data;
|
|
BITCODE_BL geom_data_flag;
|
|
BITCODE_BD width_w_gap;
|
|
BITCODE_BD height_w_gap;
|
|
BITCODE_H tablegeometry;
|
|
BITCODE_BL num_geometry;
|
|
Dwg_CellContentGeometry *geometry;
|
|
|
|
struct _dwg_CellStyle *style_parent;
|
|
struct _dwg_TableRow *row_parent;
|
|
} Dwg_TableCell;
|
|
|
|
// almost like GridLine/TABLESTYLE_border
|
|
// in ODA named OdTableGridLine, was BorderStyle
|
|
typedef struct _dwg_GridFormat
|
|
{
|
|
struct _dwg_CellStyle *parent;
|
|
BITCODE_BL index_mask; /* 95. ie: 1,2,4,8,16,32 */
|
|
BITCODE_BL border_overrides;
|
|
BITCODE_BL border_type;
|
|
BITCODE_CMC color;
|
|
BITCODE_BLd linewt;
|
|
BITCODE_H ltype;
|
|
BITCODE_B visible;
|
|
BITCODE_BD double_line_spacing;
|
|
} Dwg_GridFormat;
|
|
|
|
/**
|
|
Cell style 20.4.101.4
|
|
for TABLE, TABLECONTENT, CELLSTYLEMAP
|
|
*/
|
|
typedef struct _dwg_CellStyle
|
|
{
|
|
BITCODE_BL type; /* 1 cell, 2 row, 3 col, 4 fmt data, 5 table */
|
|
BITCODE_BS data_flags;
|
|
BITCODE_BL property_override_flags;
|
|
BITCODE_BL merge_flags;
|
|
BITCODE_CMC bg_color;
|
|
BITCODE_BL content_layout;
|
|
Dwg_ContentFormat content_format;
|
|
BITCODE_BS margin_override_flags;
|
|
BITCODE_BD vert_margin;
|
|
BITCODE_BD horiz_margin;
|
|
BITCODE_BD bottom_margin;
|
|
BITCODE_BD right_margin;
|
|
BITCODE_BD margin_horiz_spacing;
|
|
BITCODE_BD margin_vert_spacing;
|
|
BITCODE_BL num_borders; /* 0-6, number of edge_flags set */
|
|
Dwg_GridFormat *borders;
|
|
|
|
struct _dwg_TableRow *tablerow_parent;
|
|
struct _dwg_TableDataColumn *tabledatacolumn_parent;
|
|
} Dwg_CellStyle;
|
|
|
|
typedef struct _dwg_TableRow
|
|
{
|
|
struct _dwg_LinkedTableData *parent;
|
|
BITCODE_BL num_cells;
|
|
Dwg_TableCell *cells;
|
|
BITCODE_BL custom_data;
|
|
BITCODE_BL num_customdata_items;
|
|
Dwg_TABLE_CustomDataItem *customdata_items;
|
|
Dwg_CellStyle cellstyle;
|
|
BITCODE_BL style_id;
|
|
BITCODE_BL height;
|
|
} Dwg_TableRow;
|
|
|
|
typedef struct _dwg_TableDataColumn
|
|
{
|
|
struct _dwg_LinkedTableData *parent;
|
|
BITCODE_T name;
|
|
BITCODE_BL custom_data;
|
|
// BITCODE_TV data;
|
|
Dwg_CellStyle cellstyle;
|
|
BITCODE_BL cellstyle_id;
|
|
BITCODE_BL width;
|
|
} Dwg_TableDataColumn;
|
|
|
|
typedef struct _dwg_LinkedTableData
|
|
{
|
|
BITCODE_BL num_cols;
|
|
Dwg_TableDataColumn *cols;
|
|
BITCODE_BL num_rows;
|
|
Dwg_TableRow *rows;
|
|
BITCODE_BL num_field_refs;
|
|
BITCODE_H *field_refs;
|
|
} Dwg_LinkedTableData;
|
|
|
|
typedef struct _dwg_FormattedTableMerged
|
|
{
|
|
struct _dwg_FormattedTableData *parent;
|
|
BITCODE_BL top_row;
|
|
BITCODE_BL left_col;
|
|
BITCODE_BL bottom_row;
|
|
BITCODE_BL right_col;
|
|
} Dwg_FormattedTableMerged;
|
|
|
|
typedef struct _dwg_FormattedTableData
|
|
{
|
|
struct _dwg_object_TABLECONTENT *parent;
|
|
Dwg_CellStyle cellstyle;
|
|
BITCODE_BL num_merged_cells;
|
|
Dwg_FormattedTableMerged *merged_cells;
|
|
} Dwg_FormattedTableData;
|
|
|
|
#define TABLECONTENT_fields \
|
|
Dwg_LinkedData ldata; \
|
|
Dwg_LinkedTableData tdata; \
|
|
Dwg_FormattedTableData fdata; \
|
|
BITCODE_H tablestyle
|
|
|
|
typedef struct _dwg_object_TABLECONTENT
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
TABLECONTENT_fields;
|
|
} Dwg_Object_TABLECONTENT;
|
|
|
|
typedef struct _dwg_entity_TABLE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
//r2010+ TABLECONTENT:
|
|
TABLECONTENT_fields;
|
|
|
|
BITCODE_RC unknown_rc;
|
|
BITCODE_H unknown_h;
|
|
BITCODE_BL unknown_bl;
|
|
BITCODE_B unknown_b;
|
|
BITCODE_BL unknown_bl1;
|
|
BITCODE_3BD ins_pt; /*!< DXF 10 */
|
|
BITCODE_3BD scale; /*!< DXF 41 */
|
|
BITCODE_BB scale_flag;
|
|
BITCODE_BD rotation; /*!< DXF 50 */
|
|
BITCODE_BE extrusion; /*!< DXF 210 */
|
|
BITCODE_B has_attribs; /*!< DXF 66 */
|
|
BITCODE_BL num_owned;
|
|
BITCODE_BS flag_for_table_value; /*!< DXF 90.
|
|
Bit flags, 0x06 (0x02 + 0x04): has block,
|
|
0x10: table direction, 0 = up, 1 = down,
|
|
0x20: title suppressed.
|
|
Normally 0x06 is always set. */
|
|
BITCODE_3BD horiz_direction; /*!< DXF 11 */
|
|
BITCODE_BL num_cols; /*!< DXF 90 */
|
|
BITCODE_BL num_rows; /*!< DXF 91 */
|
|
unsigned long num_cells; /*!< computed */
|
|
BITCODE_BD* col_widths; /*!< DXF 142 */
|
|
BITCODE_BD* row_heights; /*!< DXF 141 */
|
|
Dwg_TABLE_Cell* cells;
|
|
BITCODE_B has_table_overrides;
|
|
BITCODE_BL table_flag_override; /*!< DXF 93 */
|
|
BITCODE_B title_suppressed; /*!< DXF 280 */
|
|
BITCODE_B header_suppressed; /*!< DXF 281 */
|
|
BITCODE_BS flow_direction; /*!< DXF 70 */
|
|
BITCODE_BD horiz_cell_margin; /*!< DXF 40 */
|
|
BITCODE_BD vert_cell_margin; /*!< DXF 41 */
|
|
BITCODE_CMC title_row_color; /*!< DXF 64 */
|
|
BITCODE_CMC header_row_color; /*!< DXF 64 */
|
|
BITCODE_CMC data_row_color; /*!< DXF 64 */
|
|
BITCODE_B title_row_fill_none; /*!< DXF 283 */
|
|
BITCODE_B header_row_fill_none; /*!< DXF 283 */
|
|
BITCODE_B data_row_fill_none; /*!< DXF 283 */
|
|
BITCODE_CMC title_row_fill_color; /*!< DXF 63 */
|
|
BITCODE_CMC header_row_fill_color; /*!< DXF 63 */
|
|
BITCODE_CMC data_row_fill_color; /*!< DXF 63 */
|
|
BITCODE_BS title_row_alignment; /*!< DXF 170 */
|
|
BITCODE_BS header_row_alignment; /*!< DXF 170 */
|
|
BITCODE_BS data_row_alignment; /*!< DXF 170 */
|
|
BITCODE_H title_text_style; /*!< DXF 7 */
|
|
BITCODE_H header_text_style; /*!< DXF 7 */
|
|
BITCODE_H data_text_style; /*!< DXF 7 */
|
|
BITCODE_BD title_row_height; /*!< DXF 140 */
|
|
BITCODE_BD header_row_height; /*!< DXF 140 */
|
|
BITCODE_BD data_row_height; /*!< DXF 140 */
|
|
|
|
BITCODE_B has_border_color_overrides; /*!< if DXF 94 > 0 */
|
|
BITCODE_BL border_color_overrides_flag; /*!< DXF 94 */
|
|
BITCODE_CMC title_horiz_top_color; /*!< DXF 64 if DXF 94 & 0x1 */
|
|
BITCODE_CMC title_horiz_ins_color; /*!< DXF 65 if DXF 94 & 0x2 */
|
|
BITCODE_CMC title_horiz_bottom_color; /*!< DXF 66 if DXF 94 & 0x4 */
|
|
BITCODE_CMC title_vert_left_color; /*!< DXF 63 if DXF 94 & 0x8 */
|
|
BITCODE_CMC title_vert_ins_color; /*!< DXF 68 if DXF 94 & 0x10 */
|
|
BITCODE_CMC title_vert_right_color; /*!< DXF 69 if DXF 94 & 0x20 */
|
|
BITCODE_CMC header_horiz_top_color; /*!< DXF 64 if DXF 94 & 0x40 */
|
|
BITCODE_CMC header_horiz_ins_color; /*!< DXF 65 */
|
|
BITCODE_CMC header_horiz_bottom_color; /*!< DXF 66 */
|
|
BITCODE_CMC header_vert_left_color; /*!< DXF 63 */
|
|
BITCODE_CMC header_vert_ins_color; /*!< DXF 68 */
|
|
BITCODE_CMC header_vert_right_color; /*!< DXF 69 */
|
|
BITCODE_CMC data_horiz_top_color; /*!< DXF 64 */
|
|
BITCODE_CMC data_horiz_ins_color; /*!< DXF 65 */
|
|
BITCODE_CMC data_horiz_bottom_color; /*!< DXF 66 */
|
|
BITCODE_CMC data_vert_left_color; /*!< DXF 63 */
|
|
BITCODE_CMC data_vert_ins_color; /*!< DXF 68 */
|
|
BITCODE_CMC data_vert_right_color; /*!< DXF 69 */
|
|
|
|
BITCODE_B has_border_lineweight_overrides; /*!< if DXF 95 > 0 */
|
|
BITCODE_BL border_lineweight_overrides_flag; /*!< DXF 95 */
|
|
BITCODE_BS title_horiz_top_linewt;
|
|
BITCODE_BS title_horiz_ins_linewt;
|
|
BITCODE_BS title_horiz_bottom_linewt;
|
|
BITCODE_BS title_vert_left_linewt;
|
|
BITCODE_BS title_vert_ins_linewt;
|
|
BITCODE_BS title_vert_right_linewt;
|
|
BITCODE_BS header_horiz_top_linewt;
|
|
BITCODE_BS header_horiz_ins_linewt;
|
|
BITCODE_BS header_horiz_bottom_linewt;
|
|
BITCODE_BS header_vert_left_linewt;
|
|
BITCODE_BS header_vert_ins_linewt;
|
|
BITCODE_BS header_vert_right_linewt;
|
|
BITCODE_BS data_horiz_top_linewt;
|
|
BITCODE_BS data_horiz_ins_linewt;
|
|
BITCODE_BS data_horiz_bottom_linewt;
|
|
BITCODE_BS data_vert_left_linewt;
|
|
BITCODE_BS data_vert_ins_linewt;
|
|
BITCODE_BS data_vert_right_linewt;
|
|
|
|
BITCODE_B has_border_visibility_overrides;
|
|
BITCODE_BL border_visibility_overrides_flag; /*!< DXF 96 */
|
|
BITCODE_BS title_horiz_top_visibility;
|
|
BITCODE_BS title_horiz_ins_visibility;
|
|
BITCODE_BS title_horiz_bottom_visibility;
|
|
BITCODE_BS title_vert_left_visibility;
|
|
BITCODE_BS title_vert_ins_visibility;
|
|
BITCODE_BS title_vert_right_visibility;
|
|
BITCODE_BS header_horiz_top_visibility;
|
|
BITCODE_BS header_horiz_ins_visibility;
|
|
BITCODE_BS header_horiz_bottom_visibility;
|
|
BITCODE_BS header_vert_left_visibility;
|
|
BITCODE_BS header_vert_ins_visibility;
|
|
BITCODE_BS header_vert_right_visibility;
|
|
BITCODE_BS data_horiz_top_visibility;
|
|
BITCODE_BS data_horiz_ins_visibility;
|
|
BITCODE_BS data_horiz_bottom_visibility;
|
|
BITCODE_BS data_vert_left_visibility;
|
|
BITCODE_BS data_vert_ins_visibility;
|
|
BITCODE_BS data_vert_right_visibility;
|
|
|
|
BITCODE_H block_header;
|
|
BITCODE_H first_attrib;
|
|
BITCODE_H last_attrib;
|
|
BITCODE_H* attribs;
|
|
BITCODE_H seqend;
|
|
BITCODE_H title_row_style_override;
|
|
BITCODE_H header_row_style_override;
|
|
BITCODE_H data_row_style_override;
|
|
|
|
BITCODE_BS unknown_bs;
|
|
BITCODE_3BD hor_dir;
|
|
BITCODE_BL has_break_data;
|
|
BITCODE_BL break_flag;
|
|
BITCODE_BL break_flow_direction;
|
|
BITCODE_BD break_spacing;
|
|
BITCODE_BL break_unknown1;
|
|
BITCODE_BL break_unknown2;
|
|
BITCODE_BL num_break_heights;
|
|
Dwg_TABLE_BreakHeight *break_heights;
|
|
BITCODE_BL num_break_rows;
|
|
Dwg_TABLE_BreakRow *break_rows;
|
|
|
|
} Dwg_Entity_TABLE;
|
|
|
|
#undef TABLECONTENT_fields
|
|
|
|
/**
|
|
Class TABLESTYLE (varies)
|
|
*/
|
|
|
|
typedef struct _dwg_TABLESTYLE_CellStyle
|
|
{
|
|
struct _dwg_object_TABLESTYLE *parent;
|
|
BITCODE_BL id; /* 1=title, 2=header, 3=data, 4=table.
|
|
ref TABLESTYLE. custom IDs > 100 */
|
|
BITCODE_BL type; /* 1=data, 2=label */
|
|
BITCODE_T name;
|
|
struct _dwg_CellStyle cellstyle;
|
|
} Dwg_TABLESTYLE_CellStyle;
|
|
|
|
// very similar to GridLine, or GridFormat. but no overrides, type, ltype, ...
|
|
typedef struct _dwg_TABLESTYLE_border
|
|
{
|
|
BITCODE_BSd linewt;
|
|
BITCODE_B visible;
|
|
BITCODE_CMC color;
|
|
//TODO
|
|
// BITCODE_H ltype;
|
|
// BITCODE_BD double_line_spacing;
|
|
} Dwg_TABLESTYLE_border; // child of TABLE/TABLESTYLE/...
|
|
|
|
typedef struct _dwg_TABLESTYLE_rowstyles
|
|
{
|
|
struct _dwg_object_TABLESTYLE *parent;
|
|
BITCODE_H text_style;
|
|
BITCODE_BD text_height;
|
|
BITCODE_BS text_alignment;
|
|
BITCODE_CMC text_color;
|
|
BITCODE_CMC fill_color;
|
|
BITCODE_B has_bgcolor;
|
|
|
|
// 6: top, horizontal inside, bottom, left, vertical inside, right
|
|
BITCODE_BL num_borders; // always 6
|
|
Dwg_TABLESTYLE_border *borders;
|
|
|
|
BITCODE_BL data_type; // r2007+
|
|
BITCODE_BL unit_type;
|
|
BITCODE_TU format_string;
|
|
} Dwg_TABLESTYLE_rowstyles;
|
|
|
|
typedef struct _dwg_object_TABLESTYLE
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BS class_version;
|
|
BITCODE_T name;
|
|
BITCODE_BS flags;
|
|
BITCODE_BS flow_direction;
|
|
BITCODE_BD horiz_cell_margin;
|
|
BITCODE_BD vert_cell_margin;
|
|
BITCODE_B is_title_suppressed;
|
|
BITCODE_B is_header_suppressed;
|
|
BITCODE_RC unknown_rc; //r2007+ signed
|
|
BITCODE_BL unknown_bl1;
|
|
BITCODE_BL unknown_bl2;
|
|
BITCODE_H cellstyle; //r2007+. was called template
|
|
Dwg_TABLESTYLE_CellStyle sty; //r2007+. Note: embedded struct
|
|
BITCODE_BL numoverrides; // ??
|
|
BITCODE_BL unknown_bl3;
|
|
Dwg_TABLESTYLE_CellStyle ovr; // ??
|
|
|
|
// 0: data, 1: title, 2: header
|
|
BITCODE_BL num_rowstyles; // always 3
|
|
Dwg_TABLESTYLE_rowstyles *rowstyles;
|
|
} Dwg_Object_TABLESTYLE;
|
|
|
|
/**
|
|
Class CELLSTYLEMAP (varies)
|
|
R2008+ TABLESTYLE extension class
|
|
*/
|
|
typedef struct _dwg_object_CELLSTYLEMAP
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL num_cells;
|
|
Dwg_TABLESTYLE_CellStyle *cells;
|
|
} Dwg_Object_CELLSTYLEMAP;
|
|
|
|
/* 20.4.103 TABLEGEOMETRY
|
|
r2008+ optional, == 20.4.98
|
|
*/
|
|
|
|
typedef struct _dwg_TABLEGEOMETRY_Cell
|
|
{
|
|
struct _dwg_object_TABLEGEOMETRY *parent;
|
|
BITCODE_BL geom_data_flag;
|
|
BITCODE_BD width_w_gap;
|
|
BITCODE_BD height_w_gap;
|
|
BITCODE_H tablegeometry;
|
|
BITCODE_BL num_geometry;
|
|
Dwg_CellContentGeometry *geometry;
|
|
} Dwg_TABLEGEOMETRY_Cell;
|
|
|
|
typedef struct _dwg_object_TABLEGEOMETRY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL numrows;
|
|
BITCODE_BL numcols;
|
|
BITCODE_BL num_cells; /* = num_rows * num_cols */
|
|
Dwg_TABLEGEOMETRY_Cell *cells;
|
|
} Dwg_Object_TABLEGEOMETRY;
|
|
|
|
|
|
/**
|
|
Abstract class UNDERLAYDEFINITION (varies)
|
|
Parent of {PDF,DGN,DWF}DEFINITION
|
|
*/
|
|
typedef struct _dwg_abstractobject_UNDERLAYDEFINITION
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_T filename; /*!< DXF 1, relative or absolute path to the image file */
|
|
BITCODE_T name; /*!< DXF 2, pdf: page number, dgn: default, dwf: ? */
|
|
} Dwg_Object_UNDERLAYDEFINITION;
|
|
|
|
typedef struct _dwg_abstractobject_UNDERLAYDEFINITION Dwg_Object_PDFDEFINITION;
|
|
typedef struct _dwg_abstractobject_UNDERLAYDEFINITION Dwg_Object_DGNDEFINITION;
|
|
typedef struct _dwg_abstractobject_UNDERLAYDEFINITION Dwg_Object_DWFDEFINITION;
|
|
|
|
/**
|
|
Abstract entity UNDERLAY, the reference (varies)
|
|
As IMAGE or WIPEOUT but snappable, and with holes.
|
|
Parent of {PDF,DGN,DWF}UNDERLAY
|
|
In C++ as UnderlayReference
|
|
*/
|
|
typedef struct _dwg_abstractentity_UNDERLAY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BE extrusion; /*!< DXF 210 normal */
|
|
BITCODE_3BD ins_pt; /*!< DXF 10 */
|
|
BITCODE_3BD scale; /*!< DXF 41 */
|
|
BITCODE_BD angle; /*!< DXF 50 */
|
|
BITCODE_RC flag; /*!< DXF 280: 1 is_clipped, 2 is_on, 4 is_monochrome,
|
|
8 is_adjusted_for_background, 16 is_clip_inverted,
|
|
? is_frame_visible, ? is_frame_plottable */
|
|
BITCODE_RC contrast; /*!< DXF 281 20-100, def: 100 */
|
|
BITCODE_RC fade; /*!< DXF 282 0-80, def: 0 */
|
|
BITCODE_BL num_clip_verts;
|
|
BITCODE_2RD *clip_verts; /*!< DXF 11: if 2 rectangle, > polygon */
|
|
/* Note that neither Wipeout nor RasterImage has these inverted clips, allowing one hole.
|
|
They just have an clip_mode flag for is_inverted.
|
|
GeoJSON/GIS has multiple polygons, allowing multiple nested holes. */
|
|
BITCODE_BS num_clip_inverts; /*!< DXF 170 */
|
|
BITCODE_2RD *clip_inverts; /*!< DXF 12 */
|
|
BITCODE_H definition_id; /*!< DXF 340 */
|
|
} Dwg_Entity_UNDERLAY;
|
|
|
|
typedef struct _dwg_abstractentity_UNDERLAY Dwg_Entity_PDFUNDERLAY;
|
|
typedef struct _dwg_abstractentity_UNDERLAY Dwg_Entity_DGNUNDERLAY;
|
|
typedef struct _dwg_abstractentity_UNDERLAY Dwg_Entity_DWFUNDERLAY;
|
|
|
|
/**
|
|
Class DBCOLOR (varies)
|
|
*/
|
|
typedef struct _dwg_object_DBCOLOR
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_CMC color; //62,420,430
|
|
} Dwg_Object_DBCOLOR;
|
|
|
|
/**
|
|
Class FIELDLIST AcDbField (varies)
|
|
R2018+
|
|
*/
|
|
typedef struct _dwg_FIELD_ChildValue
|
|
{
|
|
struct _dwg_object_FIELD *parent;
|
|
BITCODE_TV key; /*!< DXF 6 */
|
|
Dwg_TABLE_value value;
|
|
} Dwg_FIELD_ChildValue;
|
|
|
|
typedef struct _dwg_object_FIELD
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
/* dxf group code */
|
|
BITCODE_TV id; /* 1 */
|
|
BITCODE_TV code; /* 2,3 */
|
|
BITCODE_BL num_childs; /* 90 */
|
|
BITCODE_H *childs; /* code:3, 360 */
|
|
BITCODE_BL num_objects; /* 97 */
|
|
BITCODE_H *objects; /* code:5, 331 */
|
|
BITCODE_TV format; /* 4, until r2004 only */
|
|
BITCODE_BL evaluation_option; /* 91 */
|
|
BITCODE_BL filing_option; /* 92 */
|
|
BITCODE_BL field_state; /* 94 */
|
|
BITCODE_BL evaluation_status; /* 95 */
|
|
BITCODE_BL evaluation_error_code; /* 96 */
|
|
BITCODE_TV evaluation_error_msg; /* 300 */
|
|
Dwg_TABLE_value value;
|
|
BITCODE_TV value_string; /* 301,9 */
|
|
BITCODE_BL value_string_length; /* 98 ODA bug: TV */
|
|
BITCODE_BL num_childval; /* 93 */
|
|
Dwg_FIELD_ChildValue *childval;
|
|
} Dwg_Object_FIELD;
|
|
|
|
/**
|
|
* Object FIELDLIST (varies)
|
|
*/
|
|
typedef struct _dwg_object_FIELDLIST
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BL num_fields;
|
|
BITCODE_B unknown;
|
|
BITCODE_H *fields;
|
|
} Dwg_Object_FIELDLIST;
|
|
|
|
/**
|
|
Class GEODATA (varies)
|
|
R2009+
|
|
*/
|
|
typedef struct _dwg_GEODATA_meshpt
|
|
{
|
|
BITCODE_2RD source_pt;
|
|
BITCODE_2RD dest_pt;
|
|
} Dwg_GEODATA_meshpt;
|
|
|
|
typedef struct _dwg_GEODATA_meshface
|
|
{
|
|
BITCODE_BL face1;
|
|
BITCODE_BL face2;
|
|
BITCODE_BL face3;
|
|
} Dwg_GEODATA_meshface;
|
|
|
|
typedef struct _dwg_object_GEODATA
|
|
{ /* dxf group code */
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BL class_version;
|
|
BITCODE_H host_block;
|
|
BITCODE_BS coord_type; /* 0 unknown, 1 local grid, 2 projected grid,
|
|
3 geographic defined by latitude/longitude) */
|
|
BITCODE_3BD design_pt;
|
|
BITCODE_3BD ref_pt;
|
|
BITCODE_3BD obs_pt;
|
|
BITCODE_3BD scale_vec; // always 1.0,1.0,1.0
|
|
BITCODE_BD unit_scale_horiz;
|
|
BITCODE_BL units_value_horiz; // enum 0-20
|
|
BITCODE_BD unit_scale_vert;
|
|
BITCODE_BL units_value_vert; // enum 0-20
|
|
BITCODE_3BD up_dir;
|
|
BITCODE_2RD north_dir;
|
|
BITCODE_BL scale_est; /* None = 1, User specified scale factor = 2,
|
|
Grid scale at reference point = 3, Prismodial = 4 */
|
|
BITCODE_BD user_scale_factor;
|
|
BITCODE_B do_sea_level_corr;
|
|
BITCODE_BD sea_level_elev;
|
|
BITCODE_BD coord_proj_radius;
|
|
BITCODE_T coord_system_def;
|
|
BITCODE_T geo_rss_tag;
|
|
BITCODE_T coord_system_datum; /* obsolete */
|
|
BITCODE_T coord_system_wkt; /* obsolete */
|
|
|
|
BITCODE_T observation_from_tag;
|
|
BITCODE_T observation_to_tag;
|
|
BITCODE_T observation_coverage_tag;
|
|
BITCODE_BL num_geomesh_pts;
|
|
Dwg_GEODATA_meshpt *geomesh_pts;
|
|
BITCODE_BL num_geomesh_faces;
|
|
Dwg_GEODATA_meshface *geomesh_faces;
|
|
|
|
BITCODE_B has_civil_data;
|
|
BITCODE_B obsolete_false;
|
|
BITCODE_2RD ref_pt2d; // (y, x) of ref_pt reversed
|
|
BITCODE_3BD zero1, zero2;
|
|
BITCODE_BL unknown1;
|
|
BITCODE_BL unknown2;
|
|
BITCODE_B unknown_b;
|
|
BITCODE_BD north_dir_angle_deg;
|
|
BITCODE_BD north_dir_angle_rad;
|
|
} Dwg_Object_GEODATA;
|
|
|
|
/**
|
|
Class IDBUFFER (varies)
|
|
*/
|
|
typedef struct _dwg_object_IDBUFFER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_RC unknown;
|
|
BITCODE_BL num_obj_ids;
|
|
BITCODE_H* obj_ids;
|
|
} Dwg_Object_IDBUFFER;
|
|
|
|
/**
|
|
Classes for IMAGE (varies)
|
|
*/
|
|
|
|
typedef struct _dwg_entity_IMAGE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
// also used in WIPEOUT
|
|
BITCODE_BL class_version;
|
|
BITCODE_3BD pt0;
|
|
BITCODE_3BD uvec;
|
|
BITCODE_3BD vvec;
|
|
BITCODE_2RD size; /*!< DXF 13/23; width, height in pixel */
|
|
BITCODE_BS display_props;
|
|
BITCODE_B clipping;
|
|
BITCODE_RC brightness;
|
|
BITCODE_RC contrast;
|
|
BITCODE_RC fade;
|
|
BITCODE_B clip_mode; // 0 outside, 1 inside (inverted)
|
|
BITCODE_BS clip_boundary_type; // 1 rect, 2 polygon
|
|
BITCODE_BL num_clip_verts;
|
|
BITCODE_2RD* clip_verts;
|
|
BITCODE_H imagedef;
|
|
BITCODE_H imagedefreactor;
|
|
} Dwg_Entity_IMAGE;
|
|
|
|
/**
|
|
Class IMAGEDEF (varies)
|
|
*/
|
|
typedef struct _dwg_object_IMAGEDEF
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BL class_version;
|
|
BITCODE_2RD image_size;
|
|
BITCODE_T file_path;
|
|
BITCODE_B is_loaded;
|
|
BITCODE_RC resunits;
|
|
BITCODE_2RD pixel_size; // resolution MM/pixel
|
|
//BITCODE_H xrefctrl; /*!< r2010+ */
|
|
} Dwg_Object_IMAGEDEF;
|
|
|
|
/**
|
|
Class IMAGEDEF_REACTOR (varies)
|
|
*/
|
|
typedef struct _dwg_object_IMAGEDEF_REACTOR
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BL class_version;
|
|
} Dwg_Object_IMAGEDEF_REACTOR;
|
|
|
|
/**
|
|
Class INDEX (varies)
|
|
Registered as "AutoCAD 2000", but not seen in the wild.
|
|
*/
|
|
typedef struct _dwg_object_INDEX
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_TIMEBLL last_updated;
|
|
} Dwg_Object_INDEX;
|
|
|
|
/**
|
|
Class LAYER_INDEX (varies)
|
|
*/
|
|
typedef struct _dwg_LAYER_entry
|
|
{
|
|
struct _dwg_object_LAYER_INDEX *parent;
|
|
BITCODE_BL numlayers;
|
|
BITCODE_T name;
|
|
BITCODE_H handle;
|
|
} Dwg_LAYER_entry;
|
|
|
|
typedef struct _dwg_object_LAYER_INDEX
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_TIMEBLL last_updated;
|
|
BITCODE_BL num_entries;
|
|
Dwg_LAYER_entry* entries;
|
|
} Dwg_Object_LAYER_INDEX;
|
|
|
|
/**
|
|
Class LWPOLYLINE (77 + varies)
|
|
*/
|
|
typedef struct _dwg_entity_LWPOLYLINE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BS flag; /*!< DXF 70
|
|
512 closed, 128 plinegen, 4 constwidth, 8 elevation, 2 thickness
|
|
1 extrusion, 16 num_bulges, 1024 vertexidcount, 32 has_widths */
|
|
BITCODE_BD const_width; /*!< DXF 43 */
|
|
BITCODE_BD elevation; /*!< DXF 38 */
|
|
BITCODE_BD thickness; /*!< DXF 39 */
|
|
BITCODE_BE extrusion; /*!< DXF 210 */
|
|
BITCODE_BL num_points; /*!< DXF 90 */
|
|
BITCODE_2RD* points; /*!< DXF 10,20 */
|
|
BITCODE_BL num_bulges;
|
|
BITCODE_BD* bulges; /*!< DXF 42 */
|
|
BITCODE_BL num_vertexids; /*!< r2010+, same as num_points */
|
|
BITCODE_BL* vertexids; /*!< r2010+ DXF 91 */
|
|
BITCODE_BL num_widths;
|
|
Dwg_LWPOLYLINE_width* widths; /*!< DXF 40,41 */
|
|
} Dwg_Entity_LWPOLYLINE;
|
|
|
|
/**
|
|
Class RASTERVARIABLES (varies)
|
|
(used in conjunction with IMAGE entities)
|
|
*/
|
|
typedef struct _dwg_object_RASTERVARIABLES
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BL class_version;
|
|
BITCODE_BS image_frame;
|
|
BITCODE_BS image_quality;
|
|
BITCODE_BS units; // DXF 72, i.e. user_scale
|
|
} Dwg_Object_RASTERVARIABLES;
|
|
|
|
/**
|
|
Object SCALE (varies)
|
|
*/
|
|
typedef struct _dwg_object_SCALE
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BS flag; /* 1: is_temporary */
|
|
BITCODE_TV name;
|
|
BITCODE_BD paper_units;
|
|
BITCODE_BD drawing_units;
|
|
BITCODE_B is_unit_scale;
|
|
} Dwg_Object_SCALE;
|
|
|
|
/**
|
|
Class SORTENTSTABLE (varies)
|
|
*/
|
|
typedef struct _dwg_object_SORTENTSTABLE
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BL num_ents;
|
|
BITCODE_H* sort_ents;
|
|
BITCODE_H block_owner; // mspace or pspace
|
|
BITCODE_H* ents;
|
|
} Dwg_Object_SORTENTSTABLE;
|
|
|
|
/**
|
|
Class SPATIAL_FILTER (varies)
|
|
*/
|
|
typedef struct _dwg_object_SPATIAL_FILTER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BS num_clip_verts;
|
|
BITCODE_2RD* clip_verts;
|
|
BITCODE_BE extrusion;
|
|
BITCODE_3BD origin;
|
|
BITCODE_BS display_boundary_on;
|
|
BITCODE_BS front_clip_on;
|
|
BITCODE_BD front_clip_z;
|
|
BITCODE_BS back_clip_on;
|
|
BITCODE_BD back_clip_z;
|
|
BITCODE_BD* inverse_transform;
|
|
BITCODE_BD* transform;
|
|
} Dwg_Object_SPATIAL_FILTER;
|
|
|
|
/**
|
|
Class SPATIAL_INDEX (varies)
|
|
ODA only covers the AcDbFilter class, but misses the rest.
|
|
*/
|
|
typedef struct _dwg_object_SPATIAL_INDEX
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_TIMEBLL last_updated;
|
|
BITCODE_BD num1, num2, num3, num4, num5, num6;
|
|
BITCODE_BL num_hdls;
|
|
BITCODE_H *hdls;
|
|
BITCODE_BL bindata_size;
|
|
BITCODE_TF bindata;
|
|
} Dwg_Object_SPATIAL_INDEX;
|
|
|
|
/**
|
|
WIPEOUT (varies, 504)
|
|
R2000+, undocumented = IMAGE layover
|
|
*/
|
|
typedef struct _dwg_entity_WIPEOUT
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BL class_version;
|
|
BITCODE_3BD pt0;
|
|
BITCODE_3BD uvec;
|
|
BITCODE_3BD vvec;
|
|
BITCODE_2RD size;
|
|
BITCODE_BS display_props;
|
|
BITCODE_B clipping;
|
|
BITCODE_RC brightness;
|
|
BITCODE_RC contrast;
|
|
BITCODE_RC fade;
|
|
BITCODE_B clip_mode; // 0 outside, 1 inside (inverted)
|
|
BITCODE_BS clip_boundary_type; // 1 rect, 2 polygon
|
|
BITCODE_BL num_clip_verts;
|
|
BITCODE_2RD* clip_verts;
|
|
BITCODE_H imagedef;
|
|
BITCODE_H imagedefreactor;
|
|
} Dwg_Entity_WIPEOUT;
|
|
|
|
/**
|
|
Class WIPEOUTVARIABLES (varies, 505)
|
|
R2000+, Object bitsize: 96
|
|
*/
|
|
typedef struct _dwg_object_WIPEOUTVARIABLES
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
//BITCODE_BL class_version; /*!< DXF 90 NY */
|
|
BITCODE_BS display_frame; /*!< DXF 70 */
|
|
} Dwg_Object_WIPEOUTVARIABLES;
|
|
|
|
/* SECTIONPLANE, r2007+
|
|
* Looks like the livesection ptr from VIEW
|
|
*/
|
|
typedef struct _dwg_entity_SECTIONOBJECT
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
BITCODE_BL state; /*!< DXF 90. Plane=1, Boundary=2, Volume=4 */
|
|
BITCODE_BL flags; /*!< DXF 91. hitflags: sectionline=1, sectionlinetop=2, sectionlinebottom=4,
|
|
backline=8, backlinetop=16, backlinebottom=32, verticallinetop=64,
|
|
verticallinebottom=128.
|
|
heightflags: HeightAboveSectionLine=1, HeightBelowSectionLine=2
|
|
*/
|
|
BITCODE_T name; /*!< DXF 1 */
|
|
//BITCODE_3BD viewing_dir; /*!< normal of the 1st segment plane */
|
|
BITCODE_3BD vert_dir; /*!< DXF 10. normal to the segment line, on the plane */
|
|
BITCODE_BD top_height; /*!< DXF 40 */
|
|
BITCODE_BD bottom_height; /*!< DXF 41 */
|
|
BITCODE_BS indicator_alpha; /*!< DXF 70 */
|
|
BITCODE_CMC indicator_color; /*!< DXF 62/420 (but documented as 63/411) */
|
|
BITCODE_BL num_verts; /*!< DXF 92 */
|
|
BITCODE_3BD *verts; /*!< DXF 11 */
|
|
BITCODE_BL num_blverts; /*!< DXF 93 */
|
|
BITCODE_3BD *blverts; /*!< DXF 12 */
|
|
BITCODE_H section_settings; /*!< DXF 360 */
|
|
|
|
} Dwg_Entity_SECTIONOBJECT;
|
|
|
|
/**
|
|
Unstable
|
|
Class VISUALSTYLE (varies)
|
|
R2007+
|
|
|
|
32 types, with 3 categories: Face, Edge, Display, plus 58 props r2013+
|
|
*/
|
|
typedef struct _dwg_object_VISUALSTYLE
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_T description; /*!< DXF 2 */
|
|
BITCODE_BL style_type; /*!< DXF 70 enum 0-32: (kFlat-kEmptyStyle acgivisualstyle.h) */
|
|
BITCODE_BS ext_lighting_model; /*!< DXF 177, r2010+ ? required on has_xdata */
|
|
BITCODE_B internal_only; /*!< DXF 291, has internal_use_only flags */
|
|
BITCODE_BL face_lighting_model; /*!< DXF 71 0:Invisible 1:Visible 2:Phong 3:Gooch */
|
|
BITCODE_BS face_lighting_model_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BL face_lighting_quality; /*!< DXF 72 0:No lighting 1:Per face 2:Per vertex */
|
|
BITCODE_BS face_lighting_quality_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BL face_color_mode; /*!< DXF 73 0 = No color
|
|
1 = Object color
|
|
2 = Background color
|
|
3 = Custom color
|
|
4 = Mono color
|
|
5 = Tinted
|
|
6 = Desaturated */
|
|
BITCODE_BS face_color_mode_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BD face_opacity; /*!< DXF 40 */
|
|
BITCODE_BS face_opacity_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BD face_specular; /*!< DXF 41 */
|
|
BITCODE_BS face_specular_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BL face_modifier; /*!< DXF 90 0:No modifiers 1:Opacity 2:Specular */
|
|
BITCODE_BS face_modifier_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_CMC face_mono_color; /*!< DXF 63 + 421 */
|
|
BITCODE_BS face_mono_color_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BS edge_model; /*!< DXF 74 0:No edges 1:Isolines 2:Facet edges */
|
|
BITCODE_BS edge_model_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BL edge_style; /*!< DXF 91 */
|
|
BITCODE_BS edge_style_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_CMC edge_intersection_color; /*!< DXF 64 */
|
|
BITCODE_BS edge_intersection_color_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_CMC edge_obscured_color; /*!< DXF 65 */
|
|
BITCODE_BS edge_obscured_color_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BL edge_obscured_ltype; /*!< DXF 75 */
|
|
BITCODE_BS edge_obscured_ltype_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BL edge_intersection_ltype; /*!< DXF 175 */
|
|
BITCODE_BS edge_intersection_ltype_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BD edge_crease_angle; /*!< DXF 42 */
|
|
BITCODE_BS edge_crease_angle_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BL edge_modifier; /*!< DXF 92 */
|
|
BITCODE_BS edge_modifier_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_CMC edge_color; /*!< DXF 66 */
|
|
BITCODE_BS edge_color_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BD edge_opacity; /*!< DXF 43 */
|
|
BITCODE_BS edge_opacity_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BL edge_width; /*!< DXF 76 */
|
|
BITCODE_BS edge_width_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BL edge_overhang; /*!< DXF 77 */
|
|
BITCODE_BS edge_overhang_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BL edge_jitter; /*!< DXF 78 */
|
|
BITCODE_BS edge_jitter_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_CMC edge_silhouette_color; /*!< DXF 67 */
|
|
BITCODE_BS edge_silhouette_color_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BL edge_silhouette_width; /*!< DXF 79 */
|
|
BITCODE_BS edge_silhouette_width_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BL edge_halo_gap; /*!< DXF 170 */
|
|
BITCODE_BS edge_halo_gap_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BL edge_isolines; /*!< DXF 171 */
|
|
BITCODE_BS edge_isolines_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_B edge_do_hide_precision; /*!< DXF 290 */
|
|
BITCODE_BS edge_do_hide_precision_int;/*!< DXF 176 r2010+ */
|
|
BITCODE_BL edge_style_apply; /*!< DXF 174 */
|
|
BITCODE_BS edge_style_apply_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BL display_settings; /*!< DXF 93 flags */
|
|
BITCODE_BS display_settings_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BLd display_brightness_bl; /*!< DXF 44 <=r2007 */
|
|
BITCODE_BD display_brightness; /*!< DXF 44 r2010+ */
|
|
BITCODE_BS display_brightness_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BL display_shadow_type; /*!< DXF 173 */
|
|
BITCODE_BS display_shadow_type_int; /*!< DXF 176 r2010+ */
|
|
BITCODE_BD bd2007_45; /*!< DXF 45 r2007-only 0.0 */
|
|
|
|
BITCODE_BS num_props; /*!< r2013+ version3 58x */
|
|
/* the rest of the props:
|
|
all bool are 290, all BS/BL are 90, all BD are 40, colors 62, text 1 */
|
|
BITCODE_B b_prop1c; BITCODE_BS b_prop1c_int;
|
|
BITCODE_B b_prop1d; BITCODE_BS b_prop1d_int;
|
|
BITCODE_B b_prop1e; BITCODE_BS b_prop1e_int;
|
|
BITCODE_B b_prop1f; BITCODE_BS b_prop1f_int;
|
|
BITCODE_B b_prop20; BITCODE_BS b_prop20_int;
|
|
BITCODE_B b_prop21; BITCODE_BS b_prop21_int;
|
|
BITCODE_B b_prop22; BITCODE_BS b_prop22_int;
|
|
BITCODE_B b_prop23; BITCODE_BS b_prop23_int;
|
|
BITCODE_B b_prop24; BITCODE_BS b_prop24_int;
|
|
BITCODE_BL bl_prop25; BITCODE_BS bl_prop25_int;
|
|
BITCODE_BD bd_prop26; BITCODE_BS bd_prop26_int;
|
|
BITCODE_BD bd_prop27; BITCODE_BS bd_prop27_int;
|
|
BITCODE_BL bl_prop28; BITCODE_BS bl_prop28_int;
|
|
BITCODE_CMC c_prop29; BITCODE_BS c_prop29_int;
|
|
BITCODE_BL bl_prop2a; BITCODE_BS bl_prop2a_int;
|
|
BITCODE_BL bl_prop2b; BITCODE_BS bl_prop2b_int;
|
|
BITCODE_CMC c_prop2c; BITCODE_BS c_prop2c_int;
|
|
BITCODE_B b_prop2d; BITCODE_BS b_prop2d_int;
|
|
BITCODE_BL bl_prop2e; BITCODE_BS bl_prop2e_int;
|
|
BITCODE_BL bl_prop2f; BITCODE_BS bl_prop2f_int;
|
|
BITCODE_BL bl_prop30; BITCODE_BS bl_prop30_int;
|
|
BITCODE_B b_prop31; BITCODE_BS b_prop31_int;
|
|
BITCODE_BL bl_prop32; BITCODE_BS bl_prop32_int;
|
|
BITCODE_CMC c_prop33; BITCODE_BS c_prop33_int;
|
|
BITCODE_BD bd_prop34; BITCODE_BS bd_prop34_int;
|
|
BITCODE_BL edge_wiggle;BITCODE_BS edge_wiggle_int;
|
|
BITCODE_T strokes; BITCODE_BS strokes_int;
|
|
BITCODE_B b_prop37; BITCODE_BS b_prop37_int;
|
|
BITCODE_BD bd_prop38; BITCODE_BS bd_prop38_int;
|
|
BITCODE_BD bd_prop39; BITCODE_BS bd_prop39_int;
|
|
|
|
} Dwg_Object_VISUALSTYLE;
|
|
|
|
/**
|
|
Object LIGHTLIST (varies)
|
|
R2010+
|
|
*/
|
|
|
|
typedef struct _dwg_LIGHTLIST_light
|
|
{
|
|
struct _dwg_object_LIGHTLIST *parent;
|
|
BITCODE_T name;
|
|
BITCODE_H handle;
|
|
} Dwg_LIGHTLIST_light;
|
|
|
|
/* 2010+ */
|
|
typedef struct _dwg_object_LIGHTLIST
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL class_version;
|
|
BITCODE_BL num_lights;
|
|
Dwg_LIGHTLIST_light *lights;
|
|
} Dwg_Object_LIGHTLIST;
|
|
|
|
|
|
typedef struct _dwg_MATERIAL_color
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_RC flag; /*!< 0 Use current color, 1 Override */
|
|
BITCODE_BD factor; /*!< 0.0 - 1.0 */
|
|
BITCODE_BL rgb;
|
|
} Dwg_MATERIAL_color;
|
|
|
|
typedef struct _dwg_MATERIAL_mapper
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BD blendfactor; /*!< DXF 42 def: 1.0 */
|
|
BITCODE_BD* transmatrix; /*!< DXF 43: 16x BD */
|
|
BITCODE_T filename; /*!< DXF 3 if NULL no diffuse map */
|
|
Dwg_MATERIAL_color color1;
|
|
Dwg_MATERIAL_color color2;
|
|
BITCODE_RC source; /*!< DXF 72 0 current, 1 image file (def), 2 2nd map? */
|
|
BITCODE_RC projection; /*!< DXF 73 1 Planar (def), 2 Box, 3 Cylinder, 4 Sphere */
|
|
BITCODE_RC tiling; /*!< DXF 74 1 = Tile (def), 2 = Crop, 3 = Clamp */
|
|
BITCODE_RC autotransform; /*!< DXF 75 1 no, 2: scale to curr ent,
|
|
4: w/ current block transform */
|
|
/* marble, wood and procedural modes */
|
|
BITCODE_BS texturemode;
|
|
} Dwg_MATERIAL_mapper;
|
|
|
|
typedef struct _dwg_MATERIAL_gentexture
|
|
{
|
|
struct _dwg_object_MATERIAL *parent;
|
|
BITCODE_T genprocname;
|
|
struct _dwg_object_MATERIAL *material;
|
|
} Dwg_MATERIAL_gentexture;
|
|
|
|
/**
|
|
Object MATERIAL (varies)
|
|
Acad Naming: e.g. Materials/assetlibrary_base.fbm/shaders/AdskShaders.mi
|
|
Materials/assetlibrary_base.fbm/Mats/SolidGlass/Generic.xml
|
|
*/
|
|
typedef struct _dwg_object_MATERIAL
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_T name; /*!< DXF 1 */
|
|
BITCODE_T description; /*!< DXF 2 optional */
|
|
|
|
Dwg_MATERIAL_color ambient_color; /*!< DXF 70, 40, 90 */
|
|
Dwg_MATERIAL_color diffuse_color; /*!< DXF 71, 41, 91 */
|
|
Dwg_MATERIAL_mapper diffusemap; /*!< DXF 42, 72, 3, 73, 74, 75, 43 */
|
|
|
|
BITCODE_BD specular_gloss_factor; /*!< DXF 44 def: 0.5 */
|
|
Dwg_MATERIAL_color specular_color; /*!< DXF 76, 45, 92 */
|
|
Dwg_MATERIAL_mapper specularmap; /*!< DXF 46, 77, 4, 78, 79, 170, 47 */
|
|
|
|
//?? BD reflection_depth
|
|
//reflection_glossy_samples
|
|
Dwg_MATERIAL_mapper reflectionmap; /*!< DXF 48, 171, 6, 172, 173, 174, 49 */
|
|
|
|
BITCODE_BD opacity_percent; /*!< DXF 140 def: 1.0 */
|
|
Dwg_MATERIAL_mapper opacitymap; /*!< DXF 141, 175, 7, 176, 177, 178, 142 */
|
|
|
|
//BITCODE_B bump_enable
|
|
//?BD bump_amount
|
|
Dwg_MATERIAL_mapper bumpmap; /*!< DXF 143, 179, 8, 270, 271, 272, 144 */
|
|
|
|
BITCODE_BD refraction_index; /*!< DXF 145 def: 1.0 */
|
|
//?? BD refraction_depth
|
|
//?? BD refraction_translucency_weight
|
|
//?? refraction_glossy_samples
|
|
Dwg_MATERIAL_mapper refractionmap; /*!< DXF 146, 273, 9, 274, 275, 276, 147 */
|
|
|
|
BITCODE_BD color_bleed_scale; /*!< DXF 460 */
|
|
BITCODE_BD indirect_bump_scale; /*!< DXF 461 */
|
|
BITCODE_BD reflectance_scale; /*!< DXF 462 */
|
|
BITCODE_BD transmittance_scale; /*!< DXF 463 */
|
|
BITCODE_B two_sided_material; /*!< DXF 290 */
|
|
BITCODE_BD luminance; /*!< DXF 464 */
|
|
BITCODE_BS luminance_mode; /*!< DXF 270 */
|
|
BITCODE_BD translucence; /*!< DXF 148 */
|
|
BITCODE_BD self_illumination; /*!< DXF 149 */
|
|
BITCODE_BD reflectivity; /*!< DXF 468 */
|
|
BITCODE_BL illumination_model; /*!< DXF 93 */
|
|
BITCODE_BL channel_flags; /*!< DXF 94 */
|
|
BITCODE_BL mode; /*!< DXF 282 */
|
|
|
|
BITCODE_T genprocname; /*!< DXF 300 */
|
|
BITCODE_BS genproctype;
|
|
BITCODE_B genprocvalbool; /*!< DXF 291 */
|
|
BITCODE_BS genprocvalint; /*!< DXF 271 */
|
|
BITCODE_BD genprocvalreal; /*!< DXF 469 */
|
|
BITCODE_T genprocvaltext; /*!< DXF 301 */
|
|
BITCODE_CMC genprocvalcolor; /*!< DXF 62 */
|
|
BITCODE_B genproctableend; /*!< DXF 292 */
|
|
BITCODE_BS num_gentextures;
|
|
Dwg_MATERIAL_gentexture* gentextures;
|
|
|
|
#if 0
|
|
BITCODE_BS normalmap_method; /*!< DXF 271 */
|
|
BITCODE_BD normalmap_strength; /*!< DXF 465 def: 1.0 */
|
|
Dwg_MATERIAL_mapper normalmap; /*!< DXF 42, 72, 3, 73, 74, 75, 43 */
|
|
BITCODE_B is_anonymous; /*!< DXF 293 */
|
|
BITCODE_BS global_illumination; /*!< DXF 272 */
|
|
BITCODE_BS final_gather; /*!< DXF 273 */
|
|
#endif
|
|
//? BD backface_cull
|
|
//? BD self_illum_luminance
|
|
//? BD self_illum_color_temperature
|
|
} Dwg_Object_MATERIAL;
|
|
|
|
/**
|
|
Object OBJECT_PTR (varies) UNKNOWN FIELDS
|
|
yet unsorted, and unused.
|
|
*/
|
|
typedef struct _dwg_object_OBJECT_PTR
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
} Dwg_Object_OBJECT_PTR;
|
|
|
|
/**
|
|
Entity LIGHT (varies)
|
|
UNSTABLE, now complete
|
|
*/
|
|
typedef struct _dwg_entity_LIGHT
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
BITCODE_T name; /*!< DXF 1 */
|
|
BITCODE_BL type; /*!< DXF 70, distant = 1; point = 2; spot = 3 */
|
|
BITCODE_B status; /*!< DXF 290, on or off */
|
|
BITCODE_CMC light_color; /*!< DXF 63 + 421. r2000: 90 for rgb */
|
|
BITCODE_B plot_glyph; /*!< DXF 291 */
|
|
BITCODE_BD intensity; /*!< DXF 40 */
|
|
BITCODE_3BD position; /*!< DXF 10 */
|
|
BITCODE_3BD target; /*!< DXF 11 */
|
|
BITCODE_BL attenuation_type; /*!< DXF 72. None=0, Inverse Linear=1,
|
|
Inverse Square=2 */
|
|
BITCODE_B use_attenuation_limits; /*!< DXF 292 */
|
|
BITCODE_BD attenuation_start_limit; /*!< DXF 41 */
|
|
BITCODE_BD attenuation_end_limit; /*!< DXF 42 */
|
|
BITCODE_BD hotspot_angle; /*!< DXF 50 */
|
|
BITCODE_BD falloff_angle; /*!< DXF 51, with type=spot */
|
|
BITCODE_B cast_shadows; /*!< DXF 293 */
|
|
BITCODE_BL shadow_type; /*!< DXF 73, ray_traced=0, shadow_maps=1 */
|
|
BITCODE_BS shadow_map_size; /*!< DXF 91 in pixel: 64,128,256,...4096 */
|
|
BITCODE_RC shadow_map_softness; /*!< DXF 280 1-10 (num pixels blend into) */
|
|
|
|
BITCODE_B is_photometric; /* if LIGHTINGUNITS == "2" */
|
|
BITCODE_B has_photometric_data;
|
|
BITCODE_B has_webfile; /*!< DXF 290 */
|
|
BITCODE_T webfile; /*!< DXF 300 IES file */
|
|
BITCODE_BS physical_intensity_method; /*!< DXF 70 */
|
|
BITCODE_BD physical_intensity; /*!< DXF 40 */
|
|
BITCODE_BD illuminance_dist; /*!< DXF 41 */
|
|
BITCODE_BS lamp_color_type; /*!< DXF 71 0: in kelvin, 1: as preset */
|
|
BITCODE_BD lamp_color_temp; /*!< DXF 42 Temperature in Kelvin */
|
|
BITCODE_BS lamp_color_preset; /*!< DXF 72 */
|
|
BITCODE_BL lamp_color_rgb; /*!< if lamp_color_preset is Custom */
|
|
BITCODE_3BD web_rotation; /*!< DXF 43-45 rotation offset in XYZ Euler angles */
|
|
BITCODE_BS extlight_shape; /*!< DXF 73: 0 linear, 1 rect, 2 disk, 3 cylinder, 4 sphere */
|
|
BITCODE_BD extlight_length; /*!< DXF 46 */
|
|
BITCODE_BD extlight_width; /*!< DXF 47 */
|
|
BITCODE_BD extlight_radius; /*!< DXF 48 */
|
|
BITCODE_BS webfile_type; /*!< DXF 74 */
|
|
BITCODE_BS web_symetry; /*!< DXF 75 */
|
|
BITCODE_BS has_target_grip; /*!< DXF 76
|
|
if the light displays a target grip for orienting
|
|
the light */
|
|
BITCODE_BD web_flux; /*!< DXF 49 */
|
|
BITCODE_BD web_angle1; /*!< DXF 50 */
|
|
BITCODE_BD web_angle2; /*!< DXF 51 */
|
|
BITCODE_BD web_angle3; /*!< DXF 52 */
|
|
BITCODE_BD web_angle4; /*!< DXF 53 */
|
|
BITCODE_BD web_angle5; /*!< DXF 54 */
|
|
BITCODE_BS glyph_display_type; /*!< DXF 77 0:auto, 1:on, 2:off */
|
|
} Dwg_Entity_LIGHT;
|
|
|
|
/**
|
|
Entity CAMERA (varies) UNKNOWN FIELDS
|
|
not DWG persistent. yet unsorted, and unused.
|
|
*/
|
|
typedef struct _dwg_entity_CAMERA
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
BITCODE_H view;
|
|
} Dwg_Entity_CAMERA;
|
|
|
|
/**
|
|
Entity GEOPOSITIONMARKER (varies)
|
|
*/
|
|
typedef struct _dwg_entity_GEOPOSITIONMARKER
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
BITCODE_BS class_version; /*!< DXF 90 point, lat_lon, mylocation */
|
|
BITCODE_3BD position; /*!< DXF 10 */
|
|
BITCODE_BD radius; /*!< DXF 40 */
|
|
BITCODE_BD landing_gap; /*!< DXF 40 */
|
|
BITCODE_T notes; /*!< DXF 1 */
|
|
BITCODE_RC text_alignment; /*!< DXF 70 0 left, 1 center, 2 right */
|
|
BITCODE_B mtext_visible; /*!< DXF 290 */
|
|
BITCODE_B enable_frame_text; /*!< DXF 290 */
|
|
struct _dwg_object *mtext;
|
|
} Dwg_Entity_GEOPOSITIONMARKER;
|
|
|
|
/**
|
|
Object GEOMAPIMAGE (varies), LiveMap image overlay.
|
|
yet unsorted, and unused.
|
|
*/
|
|
typedef struct _dwg_object_GEOMAPIMAGE
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL class_version; // 90
|
|
BITCODE_3BD pt0; // 10
|
|
BITCODE_2RD size; // 13
|
|
BITCODE_BS display_props; // 70
|
|
BITCODE_B clipping; // 280 i.e. clipping_enabled
|
|
BITCODE_RC brightness; // 281
|
|
BITCODE_RC contrast; // 282
|
|
BITCODE_RC fade; // 283
|
|
BITCODE_BD rotation;
|
|
//?
|
|
//BITCODE_3BD origin;
|
|
BITCODE_BD image_width;
|
|
BITCODE_BD image_height;
|
|
BITCODE_T name;
|
|
BITCODE_BD image_file;
|
|
BITCODE_BD image_visibility;
|
|
BITCODE_BS transparency;
|
|
BITCODE_BD height;
|
|
BITCODE_BD width;
|
|
BITCODE_B show_rotation;
|
|
BITCODE_BD scale_factor;
|
|
BITCODE_BS geoimage_brightness;
|
|
BITCODE_BS geoimage_contrast;
|
|
BITCODE_BS geoimage_fade;
|
|
BITCODE_BS geoimage_position;
|
|
BITCODE_BS geoimage_width;
|
|
BITCODE_BS geoimage_height;
|
|
} Dwg_Object_GEOMAPIMAGE;
|
|
|
|
/**
|
|
Entity HELIX (varies) UNSTABLE
|
|
subclass of SPLINE
|
|
*/
|
|
typedef struct _dwg_entity_HELIX
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
// AcDbSpline
|
|
BITCODE_BS flag; /* computed */
|
|
BITCODE_BS scenario; /* 1 spline, 2 bezier */
|
|
BITCODE_BS degree; /* 2 quadratic, 3 cubic */
|
|
BITCODE_BL splineflags; /* 2013+: method fit points = 1, CV frame show = 2, closed = 4 */
|
|
BITCODE_BL knotparam; /* 2013+: Chord = 0, Square root = 1, Uniform = 2, Custom = 15 */
|
|
BITCODE_BD fit_tol;
|
|
BITCODE_3BD beg_tan_vec;
|
|
BITCODE_3BD end_tan_vec;
|
|
BITCODE_B rational;
|
|
BITCODE_B closed_b;
|
|
BITCODE_B periodic;
|
|
BITCODE_B weighted; /* bit 4 of 70 */
|
|
BITCODE_BD knot_tol;
|
|
BITCODE_BD ctrl_tol;
|
|
BITCODE_BS num_fit_pts;
|
|
BITCODE_3DPOINT* fit_pts;
|
|
BITCODE_BL num_knots;
|
|
BITCODE_BD* knots;
|
|
BITCODE_BL num_ctrl_pts;
|
|
Dwg_SPLINE_control_point* ctrl_pts;
|
|
// AcDbHelix
|
|
BITCODE_BL major_version; /*!< DXF 90: 27 */
|
|
BITCODE_BL maint_version; /*!< DXF 91: 1 */
|
|
BITCODE_3BD axis_base_pt; /*!< DXF 10 */
|
|
BITCODE_3BD start_pt; /*!< DXF 11 */
|
|
BITCODE_3BD axis_vector; /*!< DXF 12 */
|
|
BITCODE_BD radius; /*!< DXF 40 */
|
|
BITCODE_BD turns; /*!< DXF 41 */
|
|
BITCODE_BD turn_height; /*!< DXF 42 */
|
|
BITCODE_B handedness; /*!< DXF 290: 0: left, 1: right (twist) */
|
|
BITCODE_RC constraint_type; /*!< DXF 280: 0: turn_height, 1: turns, 2: height */
|
|
|
|
} Dwg_Entity_HELIX;
|
|
|
|
// TODO ACSH_SWEEP_CLASS has different names,
|
|
// ACIS (sweep:options) even more so. ACIS key names are weird though, Acad didn't take them.
|
|
#define SWEEPOPTIONS_fields \
|
|
BITCODE_BD draft_angle; /*!< DXF 42 */ \
|
|
BITCODE_BD draft_start_distance; /*!< DXF 43 */ \
|
|
BITCODE_BD draft_end_distance; /*!< DXF 44 */ \
|
|
BITCODE_BD twist_angle; /*!< DXF 45 */ \
|
|
BITCODE_BD scale_factor; /*!< DXF 48 */ \
|
|
BITCODE_BD align_angle; /*!< DXF 49 */ \
|
|
BITCODE_BD* sweep_entity_transmatrix; /*!< DXF 46: 16x BD */ \
|
|
BITCODE_BD* path_entity_transmatrix; /*!< DXF 47: 16x BD */ \
|
|
BITCODE_B is_solid; /*!< DXF 290 */ \
|
|
BITCODE_BS sweep_alignment_flags; /*!< DXF 70. \
|
|
0=No alignment, 1=Align sweep entity to path, \
|
|
2=Translate sweep entity to path, \
|
|
3=Translate path to sweep entity */ \
|
|
BITCODE_BS path_flags; /*!< DXF 71 */ \
|
|
BITCODE_B align_start; /*!< DXF 292 */ \
|
|
BITCODE_B bank; /*!< DXF 293 */ \
|
|
BITCODE_B base_point_set; /*!< DXF 294 */ \
|
|
BITCODE_B sweep_entity_transform_computed; /*!< DXF 295 */ \
|
|
BITCODE_B path_entity_transform_computed; /*!< DXF 296 */ \
|
|
BITCODE_3BD reference_vector_for_controlling_twist; /*!< DXF 11 */ \
|
|
BITCODE_H sweep_entity; \
|
|
BITCODE_H path_entity
|
|
|
|
/**
|
|
Entity EXTRUDEDSURFACE (varies)
|
|
in DXF encrypted.
|
|
*/
|
|
typedef struct _dwg_entity_EXTRUDEDSURFACE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
_3DSOLID_FIELDS;
|
|
//? sweep_profile, taper_angle
|
|
BITCODE_BS modeler_format_version; /*!< DXF 70 */
|
|
BITCODE_BL bindata_size; // 90
|
|
BITCODE_TF bindata; // 310|1
|
|
BITCODE_BS u_isolines; /*!< DXF 71 */
|
|
BITCODE_BS v_isolines; /*!< DXF 72 */
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
SWEEPOPTIONS_fields;
|
|
//BITCODE_BD height;
|
|
BITCODE_3BD sweep_vector; /*!< DXF 10 */
|
|
BITCODE_BD* sweep_transmatrix; /*!< DXF 40: 16x BD */
|
|
} Dwg_Entity_EXTRUDEDSURFACE;
|
|
|
|
/**
|
|
Entity SWEPTSURFACE (varies)
|
|
*/
|
|
typedef struct _dwg_entity_SWEPTSURFACE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
_3DSOLID_FIELDS;
|
|
BITCODE_BS modeler_format_version; /*!< DXF 70 */
|
|
BITCODE_BS u_isolines; /*!< DXF 71 */
|
|
BITCODE_BS v_isolines; /*!< DXF 72 */
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
|
|
BITCODE_BL sweep_entity_id; // 90
|
|
BITCODE_BL sweepdata_size;
|
|
BITCODE_TF sweepdata;
|
|
BITCODE_BL path_entity_id;
|
|
BITCODE_BL pathdata_size;
|
|
BITCODE_TF pathdata;
|
|
SWEEPOPTIONS_fields;
|
|
} Dwg_Entity_SWEPTSURFACE;
|
|
|
|
/**
|
|
Entity LOFTEDSURFACE (varies)
|
|
*/
|
|
typedef struct _dwg_entity_LOFTEDSURFACE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
_3DSOLID_FIELDS;
|
|
BITCODE_BS modeler_format_version; /*!< DXF 70 */
|
|
BITCODE_BS u_isolines; /*!< DXF 71 */
|
|
BITCODE_BS v_isolines; /*!< DXF 72 */
|
|
//BITCODE_BL class_version; /*!< DXF 90 */
|
|
BITCODE_BD* loft_entity_transmatrix; /*!< DXF 40: 16x BD */
|
|
BITCODE_BL plane_normal_lofting_type; /*!< DXF 70 */
|
|
BITCODE_BD start_draft_angle; /*!< DXF 41 */
|
|
BITCODE_BD end_draft_angle; /*!< DXF 42 */
|
|
BITCODE_BD start_draft_magnitude; /*!< DXF 43 */
|
|
BITCODE_BD end_draft_magnitude; /*!< DXF 44 */
|
|
BITCODE_B arc_length_parameterization; // 290
|
|
BITCODE_B no_twist; // 291
|
|
BITCODE_B align_direction; // 292
|
|
BITCODE_B simple_surfaces; // 293
|
|
BITCODE_B closed_surfaces; // 294
|
|
BITCODE_B solid; // 295
|
|
BITCODE_B ruled_surface; // 296
|
|
BITCODE_B virtual_guide; // 297
|
|
|
|
BITCODE_BS num_cross_sections;
|
|
BITCODE_BS num_guide_curves;
|
|
BITCODE_H *cross_sections;
|
|
BITCODE_H *guide_curves;
|
|
BITCODE_H path_curve;
|
|
} Dwg_Entity_LOFTEDSURFACE;
|
|
|
|
/**
|
|
Entity NURBSURFACE (varies)
|
|
*/
|
|
typedef struct _dwg_entity_NURBSURFACE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
_3DSOLID_FIELDS;
|
|
// AcDbSurface
|
|
BITCODE_BS u_isolines; /*!< DXF 71 */
|
|
BITCODE_BS v_isolines; /*!< DXF 72 */
|
|
// AcDbNurbSurface
|
|
BITCODE_BS short170; /* DXF 170 */
|
|
BITCODE_B cv_hull_display; /* DXF 290 */
|
|
BITCODE_3BD uvec1; /* DXF 10 */
|
|
BITCODE_3BD vvec1; /* DXF 11 */
|
|
BITCODE_3BD uvec2; /* DXF 12 */
|
|
BITCODE_3BD vvec2; /* DXF 13 */
|
|
} Dwg_Entity_NURBSURFACE;
|
|
|
|
/**
|
|
Entity PLANESURFACE (varies)
|
|
*/
|
|
typedef struct _dwg_entity_PLANESURFACE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
_3DSOLID_FIELDS;
|
|
BITCODE_BS modeler_format_version; /*!< DXF 70 */
|
|
BITCODE_BS u_isolines; /*!< DXF 71 */
|
|
BITCODE_BS v_isolines; /*!< DXF 72 */
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
|
|
} Dwg_Entity_PLANESURFACE;
|
|
|
|
/**
|
|
Entity REVOLVEDSURFACE (varies)
|
|
*/
|
|
typedef struct _dwg_entity_REVOLVEDSURFACE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
_3DSOLID_FIELDS;
|
|
BITCODE_BS modeler_format_version; /*!< DXF 70 */
|
|
BITCODE_BS u_isolines; /*!< DXF 71 */
|
|
BITCODE_BS v_isolines; /*!< DXF 72 */
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
|
|
BITCODE_BL id; // 90
|
|
BITCODE_3BD axis_point; // 10
|
|
BITCODE_3BD axis_vector; // 11
|
|
BITCODE_BD revolve_angle; // 40
|
|
BITCODE_BD start_angle; // 41
|
|
BITCODE_BD* revolved_entity_transmatrix; // 42
|
|
BITCODE_BD draft_angle; // 43
|
|
BITCODE_BD draft_start_distance; // 44
|
|
BITCODE_BD draft_end_distance; // 45
|
|
BITCODE_BD twist_angle; // 46
|
|
BITCODE_B solid; // 290
|
|
BITCODE_B close_to_axis; // 291
|
|
|
|
} Dwg_Entity_REVOLVEDSURFACE;
|
|
|
|
/**
|
|
Entity MESH (varies)
|
|
Types: Sphere|Cylinder|Cone|Torus|Box|Wedge|Pyramid
|
|
*/
|
|
typedef struct _dwg_MESH_edge
|
|
{
|
|
struct _dwg_entity_MESH *parent;
|
|
BITCODE_BL idxfrom; // index from
|
|
BITCODE_BL idxto; // index to
|
|
} Dwg_MESH_edge;
|
|
|
|
typedef struct _dwg_entity_MESH
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
BITCODE_BS dlevel; /*!< DXF 71 (2) */
|
|
BITCODE_B is_watertight; /*!< DXF 72 (0) */
|
|
BITCODE_BL num_subdiv_vertex; /*!< DXF 91 (0) */
|
|
BITCODE_3DPOINT* subdiv_vertex;/*!< DXF 10 ?? */
|
|
BITCODE_BL num_vertex; /*!< DXF 92 (14) */
|
|
BITCODE_3DPOINT* vertex; /*!< DXF 10 */
|
|
BITCODE_BL num_faces; /*!< DXF 93 (30) */
|
|
BITCODE_BL* faces; /*!< DXF 90 */
|
|
BITCODE_BL num_edges; /*!< DXF 94 (19) */
|
|
Dwg_MESH_edge* edges; /*!< DXF 90 */
|
|
BITCODE_BL num_crease; /*!< DXF 95 (19) */
|
|
BITCODE_BD* crease; /*!< DXF 140 */
|
|
BITCODE_B unknown_b1;
|
|
BITCODE_B unknown_b2;
|
|
} Dwg_Entity_MESH;
|
|
|
|
/**
|
|
Object SUN (varies), unstable
|
|
wrongly documented by ACAD DXF as entity
|
|
*/
|
|
typedef struct _dwg_object_SUN
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
BITCODE_B is_on; /*!< DXF 290 */
|
|
BITCODE_CMC color; /*!< DXF 60, 421 */
|
|
BITCODE_BD intensity; /*!< DXF 40 */
|
|
BITCODE_B has_shadow; /*!< DXF 291 */
|
|
BITCODE_BL julian_day; /*!< DXF 91 */
|
|
BITCODE_BL msecs; /*!< DXF 92 */
|
|
BITCODE_B is_dst; /*!< DXF 292 */
|
|
BITCODE_BL shadow_type; /*!< DXF 70 */
|
|
BITCODE_BS shadow_mapsize; /*!< DXF 71 */
|
|
BITCODE_RC shadow_softness; /*!< DXF 280 */
|
|
} Dwg_Object_SUN;
|
|
|
|
typedef struct _dwg_SUNSTUDY_Dates
|
|
{
|
|
BITCODE_BL julian_day;
|
|
BITCODE_BL msecs; //seconds past midnight
|
|
} Dwg_SUNSTUDY_Dates;
|
|
|
|
/**
|
|
Object SUNSTUDY (varies)
|
|
--enable-debug only
|
|
*/
|
|
typedef struct _dwg_object_SUNSTUDY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
BITCODE_T setup_name; /*!< DXF 1 */
|
|
BITCODE_T description; /*!< DXF 2 */
|
|
BITCODE_BL output_type; /*!< DXF 70 */
|
|
BITCODE_T sheet_set_name; /*!< DXF 3 */
|
|
BITCODE_B use_subset; /*!< DXF 290 */
|
|
BITCODE_T sheet_subset_name; /*!< DXF 3 */
|
|
BITCODE_B select_dates_from_calendar; /*!< DXF 291 */
|
|
BITCODE_BL num_dates; /*!< DXF 91 */
|
|
Dwg_SUNSTUDY_Dates* dates; /*!< DXF 90[] */
|
|
BITCODE_B select_range_of_dates; /*!< DXF 292 */
|
|
BITCODE_BL start_time; /*!< DXF 93 */
|
|
BITCODE_BL end_time; /*!< DXF 94 */
|
|
BITCODE_BL interval; /*!< DXF 95 */
|
|
BITCODE_BL num_hours; /*!< DXF 73 */
|
|
BITCODE_B* hours; /*!< DXF 290 */
|
|
BITCODE_BL shade_plot_type; /*!< DXF 74 */
|
|
BITCODE_BL numvports; /*!< DXF 75 */
|
|
BITCODE_BL numrows; /*!< DXF 76 */
|
|
BITCODE_BL numcols; /*!< DXF 77 */
|
|
BITCODE_BD spacing; /*!< DXF 40 */
|
|
BITCODE_B lock_viewports; /*!< DXF 293 */
|
|
BITCODE_B label_viewports; /*!< DXF 294 */
|
|
|
|
BITCODE_H page_setup_wizard; /*!< 5 DXF 340 */
|
|
BITCODE_H view; /*!< DXF 341 */
|
|
BITCODE_H visualstyle; /*!< DXF 342 */
|
|
BITCODE_H text_style; /*!< DXF 343 */
|
|
} Dwg_Object_SUNSTUDY;
|
|
|
|
typedef struct _dwg_DATATABLE_row
|
|
{
|
|
struct _dwg_DATATABLE_column *parent;
|
|
Dwg_TABLE_value value;
|
|
} Dwg_DATATABLE_row;
|
|
|
|
typedef struct _dwg_DATATABLE_column
|
|
{
|
|
struct _dwg_object_DATATABLE *parent;
|
|
BITCODE_BL type; /* DXF 92 */
|
|
BITCODE_T text; /* DXF 2 */
|
|
Dwg_DATATABLE_row *rows;
|
|
} Dwg_DATATABLE_column;
|
|
|
|
/**
|
|
Object DATATABLE (varies)
|
|
--enable-debug only
|
|
*/
|
|
typedef struct _dwg_object_DATATABLE
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BS flags; /* DXF 70 */
|
|
BITCODE_BL num_cols; /* DXF 90 */
|
|
BITCODE_BL num_rows; /* DXF 91 */
|
|
BITCODE_T table_name; /* DXF 1 */
|
|
Dwg_DATATABLE_column *cols;
|
|
} Dwg_Object_DATATABLE;
|
|
|
|
/**
|
|
Object DATALINK (varies)
|
|
*/
|
|
typedef struct _dwg_DATALINK_customdata
|
|
{
|
|
struct _dwg_object_DATALINK *parent;
|
|
BITCODE_H target; // 330
|
|
BITCODE_T text; // 304
|
|
} Dwg_DATALINK_customdata;
|
|
|
|
typedef struct _dwg_object_DATALINK
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BS class_version; /*<! DXF 70 1 */
|
|
BITCODE_T data_adapter;/*<! DXF 1 */
|
|
BITCODE_T description;/*<! DXF 300 */
|
|
BITCODE_T tooltip; /*<! DXF 301 */
|
|
BITCODE_T connection_string; /*<! DXF 302 */
|
|
BITCODE_BL option; /*<! DXF 90 2 */
|
|
BITCODE_BL update_option;/*<! DXF 91 1179649 */
|
|
BITCODE_BL bl92; /*<! DXF 92 1 */
|
|
BITCODE_BS year; /*<! DXF 170 */
|
|
BITCODE_BS month; /*<! DXF 171 */
|
|
BITCODE_BS day; /*<! DXF 172 */
|
|
BITCODE_BS hour; /*<! DXF 173 */
|
|
BITCODE_BS minute; /*<! DXF 174 */
|
|
BITCODE_BS seconds; /*<! DXF 175 */
|
|
BITCODE_BS msec; /*<! DXF 176 */
|
|
BITCODE_BS path_option; /*<! DXF 177 1 */
|
|
BITCODE_BL bl93; /*<! DXF 93 0 */
|
|
BITCODE_T update_status;/*<! DXF 304 */
|
|
BITCODE_BL num_customdata; // 94
|
|
Dwg_DATALINK_customdata *customdata; // 330 + 304
|
|
BITCODE_H hardowner; /*<! DXF 360 */
|
|
} Dwg_Object_DATALINK;
|
|
|
|
/**
|
|
Object DIMASSOC (varies) DEBUGGING
|
|
--enable-debug only
|
|
*/
|
|
typedef struct _dwg_DIMASSOC_Ref
|
|
{
|
|
struct _dwg_object_DIMASSOC *parent;
|
|
BITCODE_T classname; /*!< DXF 1 constant */
|
|
BITCODE_RC osnap_type; /*!< DXF 72 */
|
|
BITCODE_BD osnap_dist; /*!< DXF 40 */
|
|
BITCODE_3BD osnap_pt; /*!< DXF 10-30 */
|
|
BITCODE_BS num_xrefs;
|
|
BITCODE_H *xrefs; /*!< DXF 331 the geometry objects, 1 or 2 */
|
|
BITCODE_BS main_subent_type; /*!< DXF 73 */
|
|
BITCODE_BL main_gsmarker; /*!< DXF 91 */
|
|
BITCODE_BS num_xrefpaths;
|
|
BITCODE_T *xrefpaths; /*!< DXF 301 */
|
|
BITCODE_B has_lastpt_ref; /*!< DXF 75 */
|
|
BITCODE_3BD lastpt_ref; /*!< DXF ?? */
|
|
BITCODE_BL num_intsectobj; /*!< DXF 74 */
|
|
BITCODE_H* intsectobj; /*!< DXF 332 the intersection objects, 1 or 2 */
|
|
} Dwg_DIMASSOC_Ref;
|
|
|
|
typedef struct _dwg_object_DIMASSOC
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_H dimensionobj;
|
|
BITCODE_BL associativity; /*!< DXF 90, bitmask 0-15*/
|
|
BITCODE_B trans_space_flag; /*!< DXF 70 boolean */
|
|
BITCODE_RC rotated_type; /*!< DXF 71 */
|
|
Dwg_DIMASSOC_Ref *ref; /* 1-4x, with possible holes,
|
|
depend. on associativity bitmask */
|
|
} Dwg_Object_DIMASSOC;
|
|
|
|
typedef struct _dwg_ACTIONBODY
|
|
{
|
|
struct _dwg_object_ASSOCNETWORK *parent;
|
|
BITCODE_T evaluatorid;
|
|
BITCODE_T expression;
|
|
BITCODE_BL value; //resbuf
|
|
} Dwg_ACTIONBODY;
|
|
|
|
typedef struct _dwg_EvalVariant
|
|
{
|
|
BITCODE_BS code; /* the DXF code */
|
|
union {
|
|
BITCODE_BD bd;
|
|
BITCODE_BL bl;
|
|
BITCODE_BS bs;
|
|
BITCODE_RC rc;
|
|
BITCODE_T text;
|
|
BITCODE_H handle;
|
|
} u;
|
|
} Dwg_EvalVariant;
|
|
|
|
typedef struct _dwg_VALUEPARAM_vars
|
|
{
|
|
//struct _dwg_VALUEPARAM *parent;
|
|
Dwg_EvalVariant value;
|
|
BITCODE_H handle;
|
|
} Dwg_VALUEPARAM_vars;
|
|
|
|
typedef struct _dwg_VALUEPARAM
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL class_version; /* 0 */
|
|
BITCODE_T name;
|
|
BITCODE_BL unit_type;
|
|
BITCODE_BL num_vars; // input vars
|
|
Dwg_VALUEPARAM_vars *vars;
|
|
BITCODE_H controlled_objdep;
|
|
} Dwg_VALUEPARAM;
|
|
|
|
/* AcDbAssocParamBasedActionBody */
|
|
typedef struct _dwg_ASSOCPARAMBASEDACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL version; /* 90 0 */
|
|
BITCODE_BL minor; /* 90 0 */
|
|
BITCODE_BL num_deps; /* 90 1 */
|
|
BITCODE_H *deps; /* 360 */
|
|
BITCODE_BL l4; /* 90: 0 */
|
|
BITCODE_BL l5; /* 90 */
|
|
BITCODE_H assocdep; /* 330 */
|
|
BITCODE_BL num_values; /* 90 */
|
|
Dwg_VALUEPARAM *values;
|
|
} Dwg_ASSOCPARAMBASEDACTIONBODY;
|
|
|
|
typedef struct _dwg_ASSOCACTION_Deps
|
|
{
|
|
struct _dwg_object_ASSOCACTION *parent;
|
|
BITCODE_B is_owned; // with AssocNewtwork means code 3 (hardowned) or 4 (softptr)
|
|
BITCODE_H dep;
|
|
} Dwg_ASSOCACTION_Deps;
|
|
|
|
#define ASSOCACTION_fields \
|
|
/* until r2010: 1, 2013+: 2 */ \
|
|
BITCODE_BS class_version; /* 90 */ \
|
|
/* 0 WellDefined, 1 UnderConstrained, 2 OverConstrained, \
|
|
3 Inconsistent, 4 NotEvaluated, 5 NotAvailable, \
|
|
6 RejectedByClient */ \
|
|
BITCODE_BL geometry_status; /* 90 */ \
|
|
BITCODE_H owningnetwork; /* 330 */ \
|
|
BITCODE_H actionbody; /* 360 */ \
|
|
BITCODE_BL action_index; /* 90 */ \
|
|
BITCODE_BL max_assoc_dep_index; /* 90 */ \
|
|
BITCODE_BL num_deps; /* 90 */ \
|
|
Dwg_ASSOCACTION_Deps *deps; /* 330 or 360 */ \
|
|
BITCODE_BL num_owned_params; /* 90 */ \
|
|
BITCODE_H *owned_params; /* 360 */ \
|
|
BITCODE_BL num_values; /* 90 */ \
|
|
Dwg_VALUEPARAM *values
|
|
|
|
// AcDbAssocDependency
|
|
typedef struct _dwg_object_ASSOCDEPENDENCY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BS class_version; /*<! DXF 90 */
|
|
BITCODE_BL status; /*<! DXF 90 */
|
|
BITCODE_B is_read_dep; /*<! DXF 290 */
|
|
BITCODE_B is_write_dep; /*<! DXF 290 */
|
|
BITCODE_B is_attached_to_object; /*<! DXF 290 */
|
|
BITCODE_B is_delegating_to_owning_action; /*<! DXF 290 */
|
|
BITCODE_BLd order; /*<! DXF 90 */
|
|
BITCODE_H dep_on; /*<! DXF 330 */
|
|
BITCODE_B has_name; /*<! DXF 290 */
|
|
BITCODE_T name; /*<! DXF 1 */
|
|
BITCODE_BLd depbodyid; /*<! DXF 90 */
|
|
BITCODE_H readdep; /*<! DXF 330 */
|
|
BITCODE_H dep_body; /*<! DXF 360 */
|
|
BITCODE_H node; /*<! DXF 330 */
|
|
} Dwg_Object_ASSOCDEPENDENCY;
|
|
|
|
#define ASSOCPERSSUBENTID_fields \
|
|
BITCODE_T classname; /* DXF 1 */ \
|
|
BITCODE_B dependent_on_compound_object /* DXF 290 */
|
|
|
|
#define ASSOCEDGEPERSSUBENTID_fields \
|
|
BITCODE_T classname; /* DXF 1 */ \
|
|
BITCODE_B has_classname; \
|
|
BITCODE_BL bl1; \
|
|
BITCODE_BS class_version; \
|
|
BITCODE_BL index1; \
|
|
BITCODE_BL index2; \
|
|
BITCODE_B dependent_on_compound_object /* DXF 290 */
|
|
|
|
#define ASSOCINDEXPERSSUBENTID_fields \
|
|
BITCODE_T classname; /* DXF 1 */ \
|
|
BITCODE_B has_classname; \
|
|
BITCODE_BL bl1; \
|
|
BITCODE_BS class_version; \
|
|
BITCODE_BL subent_type; \
|
|
BITCODE_BL subent_index; \
|
|
BITCODE_B dependent_on_compound_object /* DXF 290 */
|
|
|
|
typedef struct _dwg_object_ASSOCVALUEDEPENDENCY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_Object_ASSOCDEPENDENCY assocdep;
|
|
} Dwg_Object_ASSOCVALUEDEPENDENCY;
|
|
|
|
// stable
|
|
typedef struct _dwg_object_ASSOCGEOMDEPENDENCY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_Object_ASSOCDEPENDENCY assocdep;
|
|
// AcDbAssocGeomDependency
|
|
BITCODE_BS class_version; /*<! DXF 90 0 */
|
|
BITCODE_B enabled; /*<! DXF 290 1 */
|
|
ASSOCPERSSUBENTID_fields;
|
|
} Dwg_Object_ASSOCGEOMDEPENDENCY;
|
|
|
|
typedef struct _dwg_object_ASSOCACTION
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCACTION_fields;
|
|
} Dwg_Object_ASSOCACTION;
|
|
|
|
/**
|
|
Object ASSOCNETWORK (varies)
|
|
subclass of AcDbAssocAction
|
|
Object1 --ReadDep--> Action1 --WriteDep1--> Object2 --ReadDep--> Action2 ...
|
|
extdict: ACAD_ASSOCNETWORK
|
|
*/
|
|
typedef struct _dwg_object_ASSOCNETWORK
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCACTION_fields;
|
|
BITCODE_BS network_version; // DXF 90, always 0
|
|
BITCODE_BL network_action_index; // 90
|
|
BITCODE_BL num_actions; // 90
|
|
Dwg_ASSOCACTION_Deps *actions; // 330 or 360
|
|
BITCODE_BL num_owned_actions;
|
|
BITCODE_H *owned_actions; // 4. 330
|
|
} Dwg_Object_ASSOCNETWORK;
|
|
|
|
/* BITCODE_BS status;90: 0 uptodate, 1 changed_directly, 2 changed_transitive,
|
|
3 ChangedNoDifference, 4 FailedToEvaluate, 5 Erased, 6 Suppressed
|
|
7 Unresolved */
|
|
#define ASSOCACTIONPARAM_fields \
|
|
BITCODE_BS is_r2013; \
|
|
BITCODE_BL aap_version; /* DXF 90 */ \
|
|
BITCODE_T name /* DXF 1 */
|
|
|
|
#define ASSOCACTIONBODY_fields \
|
|
BITCODE_BL aab_version /* DXF 90. r2013+: 2, earlier 1 */
|
|
|
|
/* Constraints still in work: */
|
|
typedef struct _dwg_CONSTRAINTGROUPNODE
|
|
{
|
|
struct _dwg_object_ASSOC2DCONSTRAINTGROUP *parent;
|
|
BITCODE_BL nodeid;
|
|
BITCODE_RC status;
|
|
BITCODE_BL num_connections;
|
|
BITCODE_BL *connections;
|
|
} Dwg_CONSTRAINTGROUPNODE;
|
|
|
|
#define ACGEOMCONSTRAINT_fields \
|
|
Dwg_CONSTRAINTGROUPNODE node; \
|
|
BITCODE_BL ownerid; /* DXF 90 */ \
|
|
BITCODE_B is_implied; /* DXF 290 */ \
|
|
BITCODE_B is_active; /* DXF 290 */
|
|
|
|
#define ACCONSTRAINTGEOMETRY_fields(node) \
|
|
Dwg_CONSTRAINTGROUPNODE node; \
|
|
BITCODE_H geom_dep; /* 4, 330 */ \
|
|
BITCODE_BL nodeid /* 90 */
|
|
|
|
#define ACCONSTRAINTPOINT_fields(node) \
|
|
ACCONSTRAINTGEOMETRY_fields (node); \
|
|
SUBCLASS (AcConstraintPoint); \
|
|
BITCODE_3BD point /* 10 */
|
|
|
|
#define ACCONSTRAINTIMPLICITPOINT_fields(node) \
|
|
ACCONSTRAINTPOINT_fields (node); \
|
|
/*SUBCLASS (AcConstraintImplicitPoint);*/ \
|
|
BITCODE_RC point_type; /* 280 */ \
|
|
BITCODE_BLd point_idx; /* 90 default: -1 */ \
|
|
BITCODE_BLd curve_id /* 90 default: 0 */
|
|
|
|
#define ACEXPLICITCONSTRAINT_fields \
|
|
ACGEOMCONSTRAINT_fields; \
|
|
BITCODE_H value_dep; /* 3, 340 */ \
|
|
BITCODE_H dim_dep /* 3, 340 */
|
|
|
|
#define ACANGLECONSTRAINT_fields \
|
|
ACEXPLICITCONSTRAINT_fields; \
|
|
BITCODE_RC sector_type /* 280 */
|
|
|
|
#define ACPARALLELCONSTRAINT_fields \
|
|
ACGEOMCONSTRAINT_fields; \
|
|
BITCODE_BLd datum_line_idx /* 90 */
|
|
|
|
#define ACDISTANCECONSTRAINT_fields \
|
|
ACEXPLICITCONSTRAINT_fields; \
|
|
BITCODE_RC dir_type; /* 280 if has_distance */ \
|
|
BITCODE_3BD distance /* 10 */
|
|
|
|
#define ACCONSTRAINEDELLIPSE_fields \
|
|
ACGEOMCONSTRAINT_fields; \
|
|
BITCODE_3BD center; /* 10 */ \
|
|
BITCODE_3BD sm_axis; /* 11 */ \
|
|
BITCODE_BD axis_ratio /* 40 i.e RadiusRatio */
|
|
|
|
#define ACCONSTRAINEDBOUNDEDELLIPSE_fields \
|
|
ACCONSTRAINEDELLIPSE_fields; \
|
|
BITCODE_3BD start_pt; /* 10 */ \
|
|
BITCODE_3BD end_pt /* 11 */
|
|
|
|
typedef struct _dwg_object_ASSOC2DCONSTRAINTGROUP
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCACTION_fields;
|
|
|
|
BITCODE_BL version; // 90 1
|
|
BITCODE_B b1; // 70 0
|
|
BITCODE_3BD workplane[3]; // 3x10 workplane
|
|
BITCODE_H h1; // 360
|
|
BITCODE_BL num_actions;// 90
|
|
BITCODE_H* actions; // 360
|
|
BITCODE_BL num_nodes; // 90 9
|
|
Dwg_CONSTRAINTGROUPNODE *nodes;
|
|
} Dwg_Object_ASSOC2DCONSTRAINTGROUP;
|
|
|
|
typedef struct _dwg_object_ASSOCVARIABLE
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BS av_class_version;
|
|
ASSOCACTION_fields;
|
|
BITCODE_T name;
|
|
BITCODE_T t58;
|
|
BITCODE_T evaluator;
|
|
BITCODE_T desc;
|
|
Dwg_EvalVariant value;
|
|
BITCODE_B has_t78;
|
|
BITCODE_T t78;
|
|
BITCODE_B b290;
|
|
} Dwg_Object_ASSOCVARIABLE;
|
|
|
|
// NodeInfo
|
|
typedef struct _dwg_EVAL_Node
|
|
{
|
|
struct _dwg_object_EVALUATION_GRAPH *parent;
|
|
BITCODE_BL id; /* 91 */
|
|
BITCODE_BL edge_flags; // 93, always 32
|
|
BITCODE_BLd nextid; // 95
|
|
BITCODE_H evalexpr; // 360
|
|
BITCODE_BLd node[4]; // 4x 92, def: 4x -1
|
|
BITCODE_B active_cycles;
|
|
} Dwg_EVAL_Node;
|
|
|
|
// EdgeInfo
|
|
typedef struct _dwg_EVAL_Edge
|
|
{
|
|
struct _dwg_object_EVALUATION_GRAPH *parent;
|
|
BITCODE_BL id; /* 92 */
|
|
BITCODE_BLd nextid; /* 93 */
|
|
BITCODE_BLd e1; /* 94 */
|
|
BITCODE_BLd e2; /* 91 */
|
|
BITCODE_BLd e3; /* 91 */
|
|
BITCODE_BLd out_edge[5]; /* 5x 92 */
|
|
} Dwg_EVAL_Edge;
|
|
|
|
typedef struct _dwg_object_EVALUATION_GRAPH
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL major;
|
|
BITCODE_BL minor;
|
|
BITCODE_BLd first_nodeid; // 96
|
|
BITCODE_BLd first_nodeid_copy; // 97
|
|
BITCODE_BL num_nodes;
|
|
Dwg_EVAL_Node *nodes;
|
|
BITCODE_B has_graph;
|
|
BITCODE_BL num_edges;
|
|
Dwg_EVAL_Edge *edges;
|
|
} Dwg_Object_EVALUATION_GRAPH;
|
|
|
|
// stable
|
|
typedef struct _dwg_object_DYNAMICBLOCKPURGEPREVENTER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BS flag; /*!< DXF 70 0 */
|
|
BITCODE_H block;
|
|
} Dwg_Object_DYNAMICBLOCKPURGEPREVENTER;
|
|
|
|
typedef struct _dwg_object_PERSUBENTMGR
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL class_version; /*!< DXF 90 2 */
|
|
BITCODE_BL unknown_0; /*!< DXF 90 0 */
|
|
BITCODE_BL unknown_2; /*!< DXF 90 2 */
|
|
BITCODE_BL numassocsteps; /*!< DXF 90 3 from ASSOCPERSSUBENTMANAGER */
|
|
BITCODE_BL numassocsubents; /*!< DXF 90 0 from ASSOCPERSSUBENTMANAGER */
|
|
BITCODE_BL num_steps; /*!< DXF 90 1 */
|
|
BITCODE_BL *steps; /*!< DXF 90 */
|
|
BITCODE_BL num_subents; /*!< DXF 90 */
|
|
BITCODE_BL *subents; /*!< DXF 90 types/handles? */
|
|
} Dwg_Object_PERSUBENTMGR;
|
|
|
|
// The dynamic variant of above. May be frozen as static PERSUBENTMGR
|
|
// TODO subentities
|
|
typedef struct _dwg_object_ASSOCPERSSUBENTMANAGER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL class_version; /*!< DXF 90 1 or r2013+ 2 */
|
|
BITCODE_BL unknown_3; /*!< DXF 90 always 3 */
|
|
BITCODE_BL unknown_0; /*!< DXF 90 always 0 */
|
|
BITCODE_BL unknown_2; /*!< DXF 90 always 2 */
|
|
BITCODE_BL num_steps; /*!< DXF 90 3 */
|
|
BITCODE_BL num_subents; /*!< DXF 90 5 */
|
|
BITCODE_BL *steps; /*!< DXF 90 */
|
|
BITCODE_BL *subents; /*!< FIXME: subent struct */
|
|
|
|
BITCODE_BL unknown_bl6; /*!< DXF 90 5 */
|
|
BITCODE_BL unknown_bl6a; /*!< DXF 90 0 */
|
|
BITCODE_BL unknown_bl7a; /*!< DXF 90 3 */
|
|
BITCODE_BL unknown_bl7; /*!< DXF 90 2 */
|
|
BITCODE_BL unknown_bl8; /*!< DXF 90 2 */
|
|
BITCODE_BL unknown_bl9; /*!< DXF 90 2 */
|
|
BITCODE_BL unknown_bl10; /*!< DXF 90 21 */
|
|
BITCODE_BL unknown_bl11; /*!< DXF 90 0 */
|
|
BITCODE_BL unknown_bl12; /*!< DXF 90 0 */
|
|
BITCODE_BL unknown_bl13; /*!< DXF 90 0 */
|
|
BITCODE_BL unknown_bl14; /*!< DXF 90 0 */
|
|
BITCODE_BL unknown_bl15; /*!< DXF 90 1 */
|
|
BITCODE_BL unknown_bl16; /*!< DXF 90 3 */
|
|
BITCODE_BL unknown_bl17; /*!< DXF 90 1 */
|
|
BITCODE_BL unknown_bl18; /*!< DXF 90 1000000000 */
|
|
BITCODE_BL unknown_bl19; /*!< DXF 90 1001 */
|
|
BITCODE_BL unknown_bl20; /*!< DXF 90 1 */
|
|
BITCODE_BL unknown_bl21; /*!< DXF 90 1000000000 */
|
|
BITCODE_BL unknown_bl22; /*!< DXF 90 51001 */
|
|
BITCODE_BL unknown_bl23; /*!< DXF 90 1 */
|
|
BITCODE_BL unknown_bl24; /*!< DXF 90 1000000000 */
|
|
BITCODE_BL unknown_bl25; /*!< DXF 90 351001 */
|
|
BITCODE_BL unknown_bl26; /*!< DXF 90 0 */
|
|
BITCODE_BL unknown_bl27; /*!< DXF 90 0 */
|
|
BITCODE_BL unknown_bl28; /*!< DXF 90 0 */
|
|
BITCODE_BL unknown_bl29; /*!< DXF 90 900 */
|
|
BITCODE_BL unknown_bl30; /*!< DXF 90 0 */
|
|
BITCODE_BL unknown_bl31; /*!< DXF 90 900 */
|
|
BITCODE_BL unknown_bl32; /*!< DXF 90 0 */
|
|
BITCODE_BL unknown_bl33; /*!< DXF 90 2 */
|
|
BITCODE_BL unknown_bl34; /*!< DXF 90 2 */
|
|
BITCODE_BL unknown_bl35; /*!< DXF 90 3 0100000011 */
|
|
BITCODE_BL unknown_bl36; /*!< DXF 90 0 */
|
|
BITCODE_B unknown_b37; /*!< DXF 290 0 */
|
|
} Dwg_Object_ASSOCPERSSUBENTMANAGER;
|
|
|
|
|
|
|
|
#define ASSOCPARAMBASEDACTIONBODY_fields \
|
|
Dwg_ASSOCPARAMBASEDACTIONBODY pab
|
|
|
|
#define ASSOCCOMPOUNDACTIONPARAM_fields \
|
|
BITCODE_BS class_version; \
|
|
BITCODE_BS bs1; \
|
|
BITCODE_BL num_params; \
|
|
BITCODE_H *params; \
|
|
BITCODE_B has_child_param; \
|
|
BITCODE_BS child_status; \
|
|
BITCODE_BL child_id; \
|
|
BITCODE_H child_param; \
|
|
BITCODE_H h330_2; \
|
|
BITCODE_BL bl2; \
|
|
BITCODE_H h330_3
|
|
|
|
typedef struct _dwg_object_ASSOCACTIONPARAM
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCACTIONPARAM_fields;
|
|
} Dwg_Object_ASSOCACTIONPARAM;
|
|
|
|
/**
|
|
Object ASSOCOSNAPPOINTREFACTIONPARAM (varies)
|
|
Action parameter that owns other AcDbAssocActionParameters,
|
|
allowing the representation of hierarchical structures of action parameters.
|
|
*/
|
|
typedef struct _dwg_object_ASSOCOSNAPPOINTREFACTIONPARAM
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCACTIONPARAM_fields;
|
|
ASSOCCOMPOUNDACTIONPARAM_fields;
|
|
BITCODE_BS status;
|
|
BITCODE_RC osnap_mode;
|
|
BITCODE_BD param; // 40 -1.0
|
|
} Dwg_Object_ASSOCOSNAPPOINTREFACTIONPARAM;
|
|
|
|
typedef struct _dwg_object_ASSOCPOINTREFACTIONPARAM
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCACTIONPARAM_fields;
|
|
ASSOCCOMPOUNDACTIONPARAM_fields;
|
|
} Dwg_Object_ASSOCPOINTREFACTIONPARAM;
|
|
|
|
typedef struct _dwg_object_ASSOCASMBODYACTIONPARAM
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCACTIONPARAM_fields;
|
|
/* AcDbAssocSingleDependencyActionParam */
|
|
BITCODE_BL asdap_class_version; // 0
|
|
BITCODE_H dep;
|
|
/* AcDbAssocAsmbodyActionParam */
|
|
BITCODE_BL class_version;
|
|
_3DSOLID_FIELDS;
|
|
} Dwg_Object_ASSOCASMBODYACTIONPARAM;
|
|
|
|
typedef struct _dwg_object_ASSOCCOMPOUNDACTIONPARAM
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCACTIONPARAM_fields;
|
|
ASSOCCOMPOUNDACTIONPARAM_fields;
|
|
} Dwg_Object_ASSOCCOMPOUNDACTIONPARAM;
|
|
|
|
typedef struct _dwg_object_ASSOCOBJECTACTIONPARAM
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCACTIONPARAM_fields;
|
|
/* AcDbAssocSingleDependencyActionParam */
|
|
BITCODE_BL asdap_class_version; // 0
|
|
BITCODE_H dep;
|
|
/* AcDbAssocObjectActionParam */
|
|
BITCODE_BS class_version; /* DXF 90: 0 */
|
|
} Dwg_Object_ASSOCOBJECTACTIONPARAM;
|
|
|
|
typedef struct _dwg_object_ASSOCEDGEACTIONPARAM
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCACTIONPARAM_fields;
|
|
/* AcDbAssocSingleDependencyActionParam */
|
|
BITCODE_BL asdap_class_version; // 0
|
|
BITCODE_H dep;
|
|
/* AcDbAssocEdgeActionParam */
|
|
BITCODE_BL class_version;
|
|
BITCODE_H param;
|
|
BITCODE_B has_action;
|
|
BITCODE_BL action_type;
|
|
BITCODE_H subent;
|
|
} Dwg_Object_ASSOCEDGEACTIONPARAM;
|
|
|
|
typedef struct _dwg_object_ASSOCFACEACTIONPARAM
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCACTIONPARAM_fields;
|
|
/* AcDbAssocSingleDependencyActionParam */
|
|
BITCODE_BL asdap_class_version; // 0
|
|
BITCODE_H dep;
|
|
/* AcDbAssocFaceActionParam */
|
|
BITCODE_BL class_version;
|
|
BITCODE_BL index;
|
|
} Dwg_Object_ASSOCFACEACTIONPARAM;
|
|
|
|
typedef struct _dwg_object_ASSOCPATHACTIONPARAM
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCACTIONPARAM_fields;
|
|
ASSOCCOMPOUNDACTIONPARAM_fields;
|
|
/* AcDbAssocPathActionParam */
|
|
BITCODE_BL version; /*!< DXF 90 */
|
|
} Dwg_Object_ASSOCPATHACTIONPARAM;
|
|
|
|
typedef struct _dwg_object_ASSOCVERTEXACTIONPARAM
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCACTIONPARAM_fields;
|
|
/* AcDbAssocSingleDependencyActionParam */
|
|
BITCODE_BL asdap_class_version; // 0
|
|
BITCODE_H dep;
|
|
/* AcDbAssocFaceActionParam */
|
|
BITCODE_BL class_version;
|
|
BITCODE_3BD pt;
|
|
} Dwg_Object_ASSOCVERTEXACTIONPARAM;
|
|
|
|
// inlined
|
|
typedef struct _dwg_ASSOCARRAYITEM
|
|
{
|
|
struct _dwg_abstractobject_ASSOCARRAYPARAMETERS *parent;
|
|
BITCODE_BL class_version; // 0
|
|
BITCODE_BL itemloc[3];
|
|
BITCODE_BL flags; /* 2: has_relative_transform
|
|
16: has_h2
|
|
*/
|
|
int is_default_transmatrix; /* computed */
|
|
BITCODE_3BD x_dir; /* DXF 11 */
|
|
BITCODE_BD *transmatrix; /* 16x BD 40 */
|
|
BITCODE_BD *rel_transform; /* 16x BD 40 */
|
|
int has_h1; /* computed */
|
|
BITCODE_H h1;
|
|
BITCODE_H h2;
|
|
} Dwg_ASSOCARRAYITEM;
|
|
|
|
#define ASSOCARRAYPARAMETERS_fields \
|
|
BITCODE_BL aap_version; \
|
|
BITCODE_BL num_items; \
|
|
BITCODE_T classname; \
|
|
Dwg_ASSOCARRAYITEM *items
|
|
|
|
typedef struct _dwg_abstractobject_ASSOCARRAYPARAMETERS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCARRAYPARAMETERS_fields;
|
|
BITCODE_BL numitems;
|
|
BITCODE_BL numrows;
|
|
BITCODE_BL numlevels;
|
|
} Dwg_Object_ASSOCARRAYPARAMETERS;
|
|
|
|
typedef struct _dwg_abstractobject_ASSOCARRAYPARAMETERS Dwg_Object_ASSOCARRAYMODIFYPARAMETERS;
|
|
typedef struct _dwg_abstractobject_ASSOCARRAYPARAMETERS Dwg_Object_ASSOCARRAYPATHPARAMETERS;
|
|
typedef struct _dwg_abstractobject_ASSOCARRAYPARAMETERS Dwg_Object_ASSOCARRAYPOLARPARAMETERS;
|
|
typedef struct _dwg_abstractobject_ASSOCARRAYPARAMETERS Dwg_Object_ASSOCARRAYRECTANGULARPARAMETERS;
|
|
|
|
typedef struct _dwg_object_ASSOCRESTOREENTITYSTATEACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCACTIONBODY_fields;
|
|
/* AcDbAssocRestoreEntityStateActionBody */
|
|
BITCODE_BL class_version;
|
|
BITCODE_H entity;
|
|
} Dwg_Object_ASSOCRESTOREENTITYSTATEACTIONBODY;
|
|
|
|
/* AcDbAssocSurfaceActionBody */
|
|
typedef struct _dwg_ASSOCSURFACEACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL version; /*!< DXF 90 */
|
|
BITCODE_B is_semi_assoc; /*!< DXF 290 */
|
|
BITCODE_BL l2; /*!< DXF 90 */
|
|
BITCODE_B is_semi_ovr; /*!< DXF 290 is_semi_associativity_satisfied_override */
|
|
BITCODE_BS grip_status; /*!< DXF 70 */
|
|
BITCODE_H assocdep; /* ASSOCDEPENDENCY */
|
|
} Dwg_ASSOCSURFACEACTIONBODY;
|
|
|
|
#define ASSOCPATHBASEDSURFACEACTIONBODY_fields \
|
|
ASSOCACTIONBODY_fields; \
|
|
Dwg_ASSOCPARAMBASEDACTIONBODY pab; \
|
|
Dwg_ASSOCSURFACEACTIONBODY sab; \
|
|
/* AcDbAssocPathBasedSurfaceActionBody */ \
|
|
BITCODE_BL pbsab_status /*!< DXF 90 */
|
|
|
|
typedef struct _dwg_object_ASSOCEXTENDSURFACEACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCPATHBASEDSURFACEACTIONBODY_fields;
|
|
// AcDbAssocExtendSurfaceActionBody
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
BITCODE_RC option; /*!< DXF 280 edge_extension_type */
|
|
} Dwg_Object_ASSOCEXTENDSURFACEACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCEXTRUDEDSURFACEACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCPATHBASEDSURFACEACTIONBODY_fields;
|
|
// AcDbAssocExtrudedSurfaceActionBody
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
} Dwg_Object_ASSOCEXTRUDEDSURFACEACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCPLANESURFACEACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCPATHBASEDSURFACEACTIONBODY_fields;
|
|
// AcDbAssocPlaneSurfaceActionBody
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
} Dwg_Object_ASSOCPLANESURFACEACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCLOFTEDSURFACEACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCPATHBASEDSURFACEACTIONBODY_fields;
|
|
// AcDbAssocLoftedSurfaceActionBody
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
} Dwg_Object_ASSOCLOFTEDSURFACEACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCNETWORKSURFACEACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCPATHBASEDSURFACEACTIONBODY_fields;
|
|
// AcDbAssocNetworkSurfaceActionBody
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
} Dwg_Object_ASSOCNETWORKSURFACEACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCOFFSETSURFACEACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCPATHBASEDSURFACEACTIONBODY_fields;
|
|
// AcDbAssocOffsetSurfaceActionBody
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
BITCODE_B b1; /*!< DXF 290 */
|
|
} Dwg_Object_ASSOCOFFSETSURFACEACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCREVOLVEDSURFACEACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCPATHBASEDSURFACEACTIONBODY_fields;
|
|
// AcDbAssocRevolvedSurfaceActionBody
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
} Dwg_Object_ASSOCREVOLVEDSURFACEACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCSWEPTSURFACEACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCPATHBASEDSURFACEACTIONBODY_fields;
|
|
// AcDbAssocSweptSurfaceActionBody
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
} Dwg_Object_ASSOCSWEPTSURFACEACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCEDGECHAMFERACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCPATHBASEDSURFACEACTIONBODY_fields;
|
|
} Dwg_Object_ASSOCEDGECHAMFERACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCEDGEFILLETACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCPATHBASEDSURFACEACTIONBODY_fields;
|
|
} Dwg_Object_ASSOCEDGEFILLETACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCTRIMSURFACEACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCPATHBASEDSURFACEACTIONBODY_fields;
|
|
// AcDbAssocTrimSurfaceActionBody
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
BITCODE_B b1; /*!< DXF 290 */
|
|
BITCODE_B b2; /*!< DXF 290 */
|
|
BITCODE_BD distance; /*!< DXF 40 */
|
|
} Dwg_Object_ASSOCTRIMSURFACEACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCBLENDSURFACEACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCPATHBASEDSURFACEACTIONBODY_fields;
|
|
// AcDbAssocBlendSurfaceActionBody
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
BITCODE_B b1; /*!< DXF 290 */
|
|
BITCODE_B b2; /*!< DXF 291 */
|
|
BITCODE_B b3; /*!< DXF 292 */
|
|
BITCODE_B b4; /*!< DXF 293 */
|
|
BITCODE_B b5; /*!< DXF 294 */
|
|
BITCODE_BS blend_options; /*!< DXF 72 */
|
|
BITCODE_BS bs2; /*!< DXF 73 */
|
|
} Dwg_Object_ASSOCBLENDSURFACEACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCFILLETSURFACEACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCPATHBASEDSURFACEACTIONBODY_fields;
|
|
// AcDbAssocFilletSurfaceActionBody
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
BITCODE_BS status; /*!< DXF 70 */
|
|
BITCODE_2RD pt1; /*!< DXF 10 */
|
|
BITCODE_2RD pt2; /*!< DXF 10 */
|
|
} Dwg_Object_ASSOCFILLETSURFACEACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCPATCHSURFACEACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCPATHBASEDSURFACEACTIONBODY_fields;
|
|
// AcDbAssocPatchSurfaceActionBody
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
} Dwg_Object_ASSOCPATCHSURFACEACTIONBODY;
|
|
|
|
#define ASSOCANNOTATIONACTIONBODY_fields \
|
|
BITCODE_BS aaab_version; \
|
|
BITCODE_H assoc_dep; \
|
|
BITCODE_BS aab_version; \
|
|
BITCODE_H actionbody
|
|
|
|
typedef struct _dwg_ASSOCACTIONBODY_action
|
|
{
|
|
struct _dwg_object_ASSOCMLEADERACTIONBODY *parent;
|
|
BITCODE_BL depid;
|
|
BITCODE_H dep;
|
|
} Dwg_ASSOCACTIONBODY_action;
|
|
|
|
typedef struct _dwg_object_ASSOCMLEADERACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCANNOTATIONACTIONBODY_fields;
|
|
Dwg_ASSOCPARAMBASEDACTIONBODY pab;
|
|
BITCODE_BL class_version; // 90 0
|
|
BITCODE_BL num_actions;
|
|
Dwg_ASSOCACTIONBODY_action *actions;
|
|
} Dwg_Object_ASSOCMLEADERACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCALIGNEDDIMACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCANNOTATIONACTIONBODY_fields;
|
|
Dwg_ASSOCPARAMBASEDACTIONBODY pab;
|
|
BITCODE_BL class_version; // 90 0
|
|
BITCODE_H r_node; // 330
|
|
BITCODE_H d_node; // 330
|
|
} Dwg_Object_ASSOCALIGNEDDIMACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOC3POINTANGULARDIMACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCANNOTATIONACTIONBODY_fields;
|
|
Dwg_ASSOCPARAMBASEDACTIONBODY pab;
|
|
BITCODE_BS class_version; /*!< DXF 90 */
|
|
BITCODE_H r_node; /*!< DXF 330 */
|
|
BITCODE_H d_node; /*!< DXF 330 */
|
|
BITCODE_H assocdep; /*!< DXF 330 */
|
|
} Dwg_Object_ASSOC3POINTANGULARDIMACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCORDINATEDIMACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCANNOTATIONACTIONBODY_fields;
|
|
Dwg_ASSOCPARAMBASEDACTIONBODY pab;
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
BITCODE_H r_node; /*!< DXF 330 */
|
|
BITCODE_H d_node; /*!< DXF 330 */
|
|
} Dwg_Object_ASSOCORDINATEDIMACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCROTATEDDIMACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCANNOTATIONACTIONBODY_fields;
|
|
Dwg_ASSOCPARAMBASEDACTIONBODY pab;
|
|
BITCODE_BS class_version; /*!< DXF 90 */
|
|
BITCODE_H r_node; /*!< DXF 330 */
|
|
BITCODE_H d_node; /*!< DXF 330 */
|
|
} Dwg_Object_ASSOCROTATEDDIMACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCDIMDEPENDENCYBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BS adb_version; // 90 1
|
|
BITCODE_BS dimbase_version; // 90 1
|
|
BITCODE_T name; // 1
|
|
BITCODE_BS class_version; // 90 1
|
|
} Dwg_Object_ASSOCDIMDEPENDENCYBODY;
|
|
|
|
typedef struct _dwg_object_BLOCKPARAMDEPENDENCYBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BS adb_version; // 90 1
|
|
BITCODE_BS dimbase_version; // 90 1
|
|
BITCODE_T name; // 1
|
|
BITCODE_BS class_version; // 90 0
|
|
} Dwg_Object_BLOCKPARAMDEPENDENCYBODY;
|
|
|
|
typedef struct _dwg_ARRAYITEMLOCATOR
|
|
{
|
|
struct _dwg_object_ASSOCARRAYMODIFYACTIONBODY *parent;
|
|
BITCODE_BL itemloc[3];
|
|
} Dwg_ARRAYITEMLOCATOR;
|
|
|
|
#define ASSOCARRAYACTIONBODY_fields \
|
|
ASSOCACTIONBODY_fields; \
|
|
Dwg_ASSOCPARAMBASEDACTIONBODY pab; \
|
|
BITCODE_BL aaab_version; \
|
|
BITCODE_T paramblock; /* classname, i.e. AcDbAssocArrayPolarParameters */ \
|
|
BITCODE_BD *transmatrix
|
|
|
|
typedef struct _dwg_object_ASSOCARRAYACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCARRAYACTIONBODY_fields;
|
|
} Dwg_Object_ASSOCARRAYACTIONBODY;
|
|
|
|
typedef struct _dwg_object_ASSOCARRAYMODIFYACTIONBODY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
ASSOCARRAYACTIONBODY_fields;
|
|
BITCODE_BS status;
|
|
BITCODE_BL num_items;
|
|
Dwg_ARRAYITEMLOCATOR *items;
|
|
} Dwg_Object_ASSOCARRAYMODIFYACTIONBODY;
|
|
|
|
/* A node in the EVALUATION_GRAPH */
|
|
typedef struct _dwg_EvalExpr
|
|
{
|
|
BITCODE_BLd parentid; /* -1 if none */
|
|
BITCODE_BL major;
|
|
BITCODE_BL minor;
|
|
BITCODE_BSd value_code; // compare to EvalVariant
|
|
union
|
|
{
|
|
BITCODE_BD num40;
|
|
BITCODE_2RD pt2d;
|
|
BITCODE_3BD pt3d;
|
|
BITCODE_T text1;
|
|
BITCODE_BL long90;
|
|
BITCODE_H handle91;
|
|
BITCODE_BS short70;
|
|
} value;
|
|
BITCODE_BL nodeid;
|
|
} Dwg_EvalExpr;
|
|
|
|
typedef struct _dwg_ACSH_SubentMaterial
|
|
{
|
|
BITCODE_BL major;
|
|
BITCODE_BL minor;
|
|
BITCODE_BL reflectance;
|
|
BITCODE_BL displacement;
|
|
} Dwg_ACSH_SubentMaterial;
|
|
|
|
// on body, face or edge
|
|
typedef struct _dwg_ACSH_SubentColor
|
|
{
|
|
BITCODE_BL major;
|
|
BITCODE_BL minor;
|
|
BITCODE_BL transparency;
|
|
BITCODE_BL bl93;
|
|
BITCODE_B is_face_variable;
|
|
} Dwg_ACSH_SubentColor;
|
|
|
|
typedef struct _dwg_ACSH_HistoryNode
|
|
{
|
|
BITCODE_BL major; //33
|
|
BITCODE_BL minor; //29
|
|
BITCODE_BD *trans; //last 16x nums 40-55
|
|
BITCODE_CMC color; /*!< DXF 62 */
|
|
BITCODE_BL step_id; /*!< DXF 92 */
|
|
BITCODE_H material; /*!< DXF 347 */
|
|
} Dwg_ACSH_HistoryNode;
|
|
|
|
//#define Dwg_EvalExpr evalexpr Dwg_EvalExpr evalexpr
|
|
|
|
typedef struct _dwg_object_ACSH_HISTORY_CLASS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL major;
|
|
BITCODE_BL minor;
|
|
BITCODE_H owner;
|
|
BITCODE_BL h_nodeid; // the last nodeid, i.e. num_nodes
|
|
BITCODE_B show_history;
|
|
BITCODE_B record_history;
|
|
} Dwg_Object_ACSH_HISTORY_CLASS;
|
|
|
|
// i.e. planesurf?
|
|
typedef struct _dwg_object_ACSH_BOX_CLASS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_EvalExpr evalexpr;
|
|
Dwg_ACSH_HistoryNode history_node;
|
|
// AcDbShPrimitive
|
|
// AcDbShBox
|
|
BITCODE_BL major; /*!< DXF 90 (33) */
|
|
BITCODE_BL minor; /*!< DXF 91 (29) */
|
|
BITCODE_BD length; /*!< DXF 40 1300.0 (length?) */
|
|
BITCODE_BD width; /*!< DXF 41 20.0 (width?) */
|
|
BITCODE_BD height; /*!< DXF 42 420.0 (height?) */
|
|
|
|
} Dwg_Object_ACSH_BOX_CLASS;
|
|
|
|
typedef struct _dwg_object_ACSH_WEDGE_CLASS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_EvalExpr evalexpr;
|
|
Dwg_ACSH_HistoryNode history_node;
|
|
// AcDbShPrimitive
|
|
// AcDbShWedge
|
|
BITCODE_BL major; /*!< DXF 90 (33) */
|
|
BITCODE_BL minor; /*!< DXF 91 (29) */
|
|
BITCODE_BD length; /*!< DXF 40 1300.0 (length?) */
|
|
BITCODE_BD width; /*!< DXF 41 20.0 (width?) */
|
|
BITCODE_BD height; /*!< DXF 42 420.0 (height?) */
|
|
|
|
} Dwg_Object_ACSH_WEDGE_CLASS;
|
|
|
|
typedef struct _dwg_object_ACSH_BOOLEAN_CLASS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_EvalExpr evalexpr;
|
|
Dwg_ACSH_HistoryNode history_node;
|
|
// AcDbShPrimitive
|
|
// AcDbShBoolean
|
|
BITCODE_BL major; /*!< DXF 90 */
|
|
BITCODE_BL minor; /*!< DXF 91 */
|
|
BITCODE_RCd operation; /*!< DXF 280 */
|
|
BITCODE_BL operand1; /*!< DXF 92 */
|
|
BITCODE_BL operand2; /*!< DXF 93 */
|
|
} Dwg_Object_ACSH_BOOLEAN_CLASS;
|
|
|
|
typedef struct _dwg_object_ACSH_BREP_CLASS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
_3DSOLID_FIELDS;
|
|
Dwg_EvalExpr evalexpr;
|
|
Dwg_ACSH_HistoryNode history_node;
|
|
// AcDbShPrimitive
|
|
// AcDbShBrep
|
|
BITCODE_BL major; /*!< DXF 90 */
|
|
BITCODE_BL minor; /*!< DXF 91 */
|
|
|
|
} Dwg_Object_ACSH_BREP_CLASS;
|
|
|
|
typedef struct _dwg_object_ACSH_SWEEP_CLASS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_EvalExpr evalexpr;
|
|
Dwg_ACSH_HistoryNode history_node;
|
|
// AcDbShPrimitive
|
|
// AcDbShSweepBase
|
|
BITCODE_BL major; /*!< DXF 90 */
|
|
BITCODE_BL minor; /*!< DXF 91 */
|
|
BITCODE_3BD direction; /*!< DXF 10 */
|
|
BITCODE_BL bl92; /*!< DXF 92 */
|
|
BITCODE_BL shsw_text_size; /*!< DXF 90 */
|
|
BITCODE_TF shsw_text; /*!< DXF 310 */
|
|
BITCODE_BL shsw_bl93; /*!< DXF 93 */
|
|
BITCODE_BL shsw_text2_size; /*!< DXF 90 */
|
|
BITCODE_TF shsw_text2; /*!< DXF 310 */
|
|
// compare to SWEEPOPTIONS_fields
|
|
BITCODE_BD draft_angle; /*!< DXF 42 0.0 */
|
|
BITCODE_BD start_draft_dist; /*!< DXF 43 0.0 */
|
|
BITCODE_BD end_draft_dist; /*!< DXF 44 0.0 */
|
|
BITCODE_BD scale_factor; /*!< DXF 45 1.0 */
|
|
BITCODE_BD twist_angle; /*!< DXF 48 0.0 */
|
|
BITCODE_BD align_angle; /*!< DXF 49 0.0 */
|
|
BITCODE_BD* sweepentity_transform; /*!< DXF 46 16x */
|
|
BITCODE_BD* pathentity_transform; /*!< DXF 47 16x */
|
|
BITCODE_RC align_option; /*!< DXF 70 2 */
|
|
BITCODE_RC miter_option; /*!< DXF 71 2 */
|
|
BITCODE_B has_align_start; /*!< DXF 290 1 */
|
|
BITCODE_B bank; /*!< DXF 292 1 */
|
|
BITCODE_B check_intersections; /*!< DXF 293 0 */
|
|
BITCODE_B shsw_b294; /*!< DXF 294 1 */
|
|
BITCODE_B shsw_b295; /*!< DXF 295 1 */
|
|
BITCODE_B shsw_b296; /*!< DXF 296 1 */
|
|
BITCODE_3BD pt2; /*!< DXF 11 0,0,0 */
|
|
|
|
// AcDbShSweep
|
|
|
|
} Dwg_Object_ACSH_SWEEP_CLASS;
|
|
|
|
typedef struct _dwg_object_ACSH_EXTRUSION_CLASS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_EvalExpr evalexpr;
|
|
Dwg_ACSH_HistoryNode history_node;
|
|
// AcDbShPrimitive
|
|
// AcDbShSweepBase
|
|
BITCODE_BL major; /*!< DXF 90 */
|
|
BITCODE_BL minor; /*!< DXF 91 */
|
|
BITCODE_3BD direction; /*!< DXF 10 */
|
|
BITCODE_BL bl92; /*!< DXF 92 */
|
|
BITCODE_BL shsw_text_size; /*!< DXF 90 */
|
|
BITCODE_TF shsw_text; /*!< DXF 310 */
|
|
BITCODE_BL shsw_bl93; /*!< DXF 93 */
|
|
BITCODE_BL shsw_text2_size; /*!< DXF 90 */
|
|
BITCODE_TF shsw_text2; /*!< DXF 310 */
|
|
// compare to SWEEPOPTIONS_fields
|
|
BITCODE_BD draft_angle; /*!< DXF 42 0.0 */
|
|
BITCODE_BD start_draft_dist; /*!< DXF 43 0.0 */
|
|
BITCODE_BD end_draft_dist; /*!< DXF 44 0.0 */
|
|
BITCODE_BD scale_factor; /*!< DXF 45 1.0 */
|
|
BITCODE_BD twist_angle; /*!< DXF 48 0.0 */
|
|
BITCODE_BD align_angle; /*!< DXF 49 0.0 */
|
|
BITCODE_BD* sweepentity_transform; /*!< DXF 46 16x */
|
|
BITCODE_BD* pathentity_transform; /*!< DXF 47 16x */
|
|
BITCODE_RC align_option; /*!< DXF 70 2 */
|
|
BITCODE_RC miter_option; /*!< DXF 71 2 */
|
|
BITCODE_B has_align_start; /*!< DXF 290 1 */
|
|
BITCODE_B bank; /*!< DXF 292 1 */
|
|
BITCODE_B check_intersections; /*!< DXF 293 0 */
|
|
BITCODE_B shsw_b294; /*!< DXF 294 1 */
|
|
BITCODE_B shsw_b295; /*!< DXF 295 1 */
|
|
BITCODE_B shsw_b296; /*!< DXF 296 1 */
|
|
BITCODE_3BD pt2; /*!< DXF 11 0,0,0 */
|
|
|
|
// AcDbShExtrusion
|
|
} Dwg_Object_ACSH_EXTRUSION_CLASS;
|
|
|
|
typedef struct _dwg_object_ACSH_LOFT_CLASS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_EvalExpr evalexpr;
|
|
Dwg_ACSH_HistoryNode history_node;
|
|
// AcDbShPrimitive
|
|
// AcDbShLoft
|
|
BITCODE_BL major; /*!< DXF 90 */
|
|
BITCODE_BL minor; /*!< DXF 91 */
|
|
BITCODE_BL num_crosssects; /*!< DXF 92 */
|
|
BITCODE_H *crosssects;
|
|
BITCODE_BL num_guides; /*!< DXF 95 */
|
|
BITCODE_H *guides;
|
|
} Dwg_Object_ACSH_LOFT_CLASS;
|
|
|
|
typedef struct _dwg_object_ACSH_FILLET_CLASS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_EvalExpr evalexpr;
|
|
Dwg_ACSH_HistoryNode history_node;
|
|
// AcDbShPrimitive
|
|
// AcDbShFillet
|
|
BITCODE_BL major; /*!< DXF 90 */
|
|
BITCODE_BL minor; /*!< DXF 91 */
|
|
BITCODE_BL bl92; /*!< DXF 92 */
|
|
BITCODE_BL num_edges; /*!< DXF 93 */
|
|
BITCODE_BL *edges; /*!< DXF 94 */
|
|
BITCODE_BL num_radiuses; /*!< DXF 95 */
|
|
BITCODE_BL num_startsetbacks; /*!< DXF 96 */
|
|
BITCODE_BL num_endsetbacks; /*!< DXF 97 */
|
|
BITCODE_BD *radiuses; /*!< DXF 41 */
|
|
BITCODE_BD *startsetbacks; /*!< DXF 42 */
|
|
BITCODE_BD *endsetbacks; /*!< DXF 43 */
|
|
|
|
} Dwg_Object_ACSH_FILLET_CLASS;
|
|
|
|
typedef struct _dwg_object_ACSH_CHAMFER_CLASS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_EvalExpr evalexpr;
|
|
Dwg_ACSH_HistoryNode history_node;
|
|
// AcDbShPrimitive
|
|
// AcDbShChamfer
|
|
BITCODE_BL major; /*!< DXF 90 */
|
|
BITCODE_BL minor; /*!< DXF 91 */
|
|
BITCODE_BL bl92; /*!< DXF 92, flat or edge chamfer options? */
|
|
BITCODE_BD base_dist; /*!< DXF 41 (left_range?) */
|
|
BITCODE_BD other_dist;/*!< DXF 42 (right_range or -1)? */
|
|
BITCODE_BL num_edges; /*!< DXF 93 */
|
|
BITCODE_BL *edges; /*!< DXF 94 */
|
|
BITCODE_BL bl95; /*!< DXF 95 probably our nodeid */
|
|
} Dwg_Object_ACSH_CHAMFER_CLASS;
|
|
|
|
typedef struct _dwg_object_ACSH_CYLINDER_CLASS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_EvalExpr evalexpr;
|
|
Dwg_ACSH_HistoryNode history_node;
|
|
// AcDbShPrimitive
|
|
// AcDbShCylinder
|
|
BITCODE_BL major; /*!< DXF 90 */
|
|
BITCODE_BL minor; /*!< DXF 91 */
|
|
BITCODE_BD height; /*!< DXF 40 */
|
|
BITCODE_BD major_radius;/*!< DXF 41 */
|
|
BITCODE_BD minor_radius;/*!< DXF 42 */
|
|
BITCODE_BD x_radius; /*!< DXF 43 */
|
|
} Dwg_Object_ACSH_CYLINDER_CLASS;
|
|
|
|
typedef struct _dwg_object_ACSH_CONE_CLASS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_EvalExpr evalexpr;
|
|
Dwg_ACSH_HistoryNode history_node;
|
|
// AcDbShPrimitive
|
|
// AcDbShCone
|
|
BITCODE_BL major; /*!< DXF 90 */
|
|
BITCODE_BL minor; /*!< DXF 91 */
|
|
BITCODE_BD height; /*!< DXF 40 */
|
|
BITCODE_BD major_radius; /*!< DXF 41 */
|
|
BITCODE_BD minor_radius; /*!< DXF 42 */
|
|
BITCODE_BD x_radius; /*!< DXF 43 */
|
|
} Dwg_Object_ACSH_CONE_CLASS;
|
|
|
|
typedef struct _dwg_object_ACSH_PYRAMID_CLASS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_EvalExpr evalexpr;
|
|
Dwg_ACSH_HistoryNode history_node;
|
|
// AcDbShPrimitive
|
|
// AcDbShPyramid
|
|
BITCODE_BL major; /*!< DXF 90 */
|
|
BITCODE_BL minor; /*!< DXF 91 */
|
|
BITCODE_BD height; /*!< DXF 40 */
|
|
BITCODE_BL sides; /*!< DXF 92 */
|
|
BITCODE_BD radius; /*!< DXF 41 */
|
|
BITCODE_BD topradius; /*!< DXF 42 */
|
|
} Dwg_Object_ACSH_PYRAMID_CLASS;
|
|
|
|
typedef struct _dwg_object_ACSH_SPHERE_CLASS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_EvalExpr evalexpr;
|
|
Dwg_ACSH_HistoryNode history_node;
|
|
// AcDbShPrimitive
|
|
// AcDbShTorus
|
|
BITCODE_BL major; /*!< DXF 90 */
|
|
BITCODE_BL minor; /*!< DXF 91 */
|
|
BITCODE_BD radius; /*!< DXF 40 */
|
|
|
|
} Dwg_Object_ACSH_SPHERE_CLASS;
|
|
|
|
typedef struct _dwg_object_ACSH_TORUS_CLASS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_EvalExpr evalexpr;
|
|
Dwg_ACSH_HistoryNode history_node;
|
|
// AcDbShPrimitive
|
|
// AcDbShTorus
|
|
BITCODE_BL major; /*!< DXF 90 */
|
|
BITCODE_BL minor; /*!< DXF 91 */
|
|
BITCODE_BD major_radius; /*!< DXF 40 */
|
|
BITCODE_BD minor_radius; /*!< DXF 41 */
|
|
|
|
} Dwg_Object_ACSH_TORUS_CLASS;
|
|
|
|
typedef struct _dwg_object_ACSH_REVOLVE_CLASS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_EvalExpr evalexpr;
|
|
Dwg_ACSH_HistoryNode history_node;
|
|
// AcDbShPrimitive
|
|
// AcDbShRevolve?
|
|
BITCODE_BL major; /*!< DXF 90 */
|
|
BITCODE_BL minor; /*!< DXF 91 */
|
|
BITCODE_3BD axis_pt; /*!< DXF 10 */
|
|
BITCODE_2RD direction; /*!< DXF 11 */
|
|
BITCODE_BD revolve_angle; /*!< DXF 40 */
|
|
BITCODE_BD start_angle; /*!< DXF 41 */
|
|
BITCODE_BD draft_angle; /*!< DXF 43 */
|
|
BITCODE_BD bd44; /*!< DXF 44 */
|
|
BITCODE_BD bd45; /*!< DXF 45 */
|
|
BITCODE_BD twist_angle; /*!< DXF 46 */
|
|
BITCODE_B b290; /*!< DXF 290 */
|
|
BITCODE_B is_close_to_axis; /*!< DXF 291 */
|
|
BITCODE_H sweep_entity;
|
|
|
|
} Dwg_Object_ACSH_REVOLVE_CLASS;
|
|
|
|
// called COORDINATION_MODEL in the DXF docs
|
|
typedef struct _dwg_entity_NAVISWORKSMODEL
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
// AcDbNavisworksModel
|
|
BITCODE_BS flags; /*!< DXF 70 */
|
|
BITCODE_H definition; /*!< DXF 340 */
|
|
BITCODE_BD *transmatrix; /*!< DXF 40 */
|
|
BITCODE_BD unitfactor; /*!< DXF 40 */
|
|
} Dwg_Entity_NAVISWORKSMODEL;
|
|
|
|
typedef struct _dwg_object_NAVISWORKSMODELDEF
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
// AcDbNavisworksModelDef
|
|
BITCODE_BS flags; /*!< DXF 70 */
|
|
BITCODE_T path; /*!< DXF 1 */
|
|
BITCODE_B status; /*!< DXF 290 */
|
|
BITCODE_3BD min_extent; /*!< DXF 10 */
|
|
BITCODE_3BD max_extent; /*!< DXF 11 */
|
|
BITCODE_B host_drawing_visibility; /*!< DXF 290 */
|
|
} Dwg_Object_NAVISWORKSMODELDEF;
|
|
|
|
#define RENDERSETTINGS_fields \
|
|
/* AcDbRenderSettings */ \
|
|
BITCODE_BL class_version; /*!< DXF 90, default: 1 */ \
|
|
BITCODE_T name; /*!< DXF 1 */ \
|
|
BITCODE_B fog_enabled; /*!< DXF 290 */ \
|
|
BITCODE_B fog_background_enabled; /*!< DXF 290 */ \
|
|
BITCODE_B backfaces_enabled; /*!< DXF 290 */ \
|
|
BITCODE_B environ_image_enabled; /*!< DXF 290 */ \
|
|
BITCODE_T environ_image_filename; /*!< DXF 1 */ \
|
|
BITCODE_T description; /*!< DXF 1 */ \
|
|
BITCODE_BL display_index; /*!< DXF 290 */ \
|
|
BITCODE_B has_predefined /*!< DXF 290, r2013 only */
|
|
|
|
/**
|
|
Class RENDERSETTINGS (varies)
|
|
*/
|
|
typedef struct _dwg_object_RENDERSETTINGS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
RENDERSETTINGS_fields;
|
|
} Dwg_Object_RENDERSETTINGS;
|
|
|
|
/**
|
|
Class MENTALRAYRENDERSETTINGS (varies)
|
|
Unstable
|
|
*/
|
|
typedef struct _dwg_object_MENTALRAYRENDERSETTINGS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
RENDERSETTINGS_fields;
|
|
// AcDbMentalRayRenderSettings
|
|
BITCODE_BL mr_version; /*!< DXF 90, always 2 */
|
|
BITCODE_BL sampling1; /*!< DXF 90 */
|
|
BITCODE_BL sampling2; /*!< DXF 90 */
|
|
BITCODE_BS sampling_mr_filter; /*!< DXF 70 */
|
|
BITCODE_BD sampling_filter1; /*!< DXF 40 */
|
|
BITCODE_BD sampling_filter2; /*!< DXF 40 */
|
|
BITCODE_BD sampling_contrast_color1; /*!< DXF 40 */
|
|
BITCODE_BD sampling_contrast_color2; /*!< DXF 40 */
|
|
BITCODE_BD sampling_contrast_color3; /*!< DXF 40 */
|
|
BITCODE_BD sampling_contrast_color4; /*!< DXF 40 */
|
|
BITCODE_BS shadow_mode; /*!< DXF 70 */
|
|
BITCODE_B shadow_maps_enabled; /*!< DXF 290 */
|
|
BITCODE_B ray_tracing_enabled; /*!< DXF 290 */
|
|
BITCODE_BL ray_trace_depth1; /*!< DXF 90 */
|
|
BITCODE_BL ray_trace_depth2; /*!< DXF 90 */
|
|
BITCODE_BL ray_trace_depth3; /*!< DXF 90 */
|
|
BITCODE_B global_illumination_enabled;/*!< DXF 290 */
|
|
BITCODE_BL gi_sample_count; /*!< DXF 90 */
|
|
BITCODE_B gi_sample_radius_enabled; /*!< DXF 290 */
|
|
BITCODE_BD gi_sample_radius; /*!< DXF 40 */
|
|
BITCODE_BL gi_photons_per_light; /*!< DXF 90 */
|
|
BITCODE_BL photon_trace_depth1; /*!< DXF 90 */
|
|
BITCODE_BL photon_trace_depth2; /*!< DXF 90 */
|
|
BITCODE_BL photon_trace_depth3; /*!< DXF 90 */
|
|
BITCODE_B final_gathering_enabled; /*!< DXF 290 */
|
|
BITCODE_BL fg_ray_count; /*!< DXF 90 */
|
|
BITCODE_B fg_sample_radius_state1; /*!< DXF 290 */
|
|
BITCODE_B fg_sample_radius_state2; /*!< DXF 290 */
|
|
BITCODE_B fg_sample_radius_state3; /*!< DXF 290 */
|
|
BITCODE_BD fg_sample_radius1; /*!< DXF 40 */
|
|
BITCODE_BD fg_sample_radius2; /*!< DXF 40 */
|
|
BITCODE_BD light_luminance_scale; /*!< DXF 40 */
|
|
BITCODE_BS diagnostics_mode; /*!< DXF 70 */
|
|
BITCODE_BS diagnostics_grid_mode; /*!< DXF 70 */
|
|
BITCODE_BD diagnostics_grid_float; /*!< DXF 40 */
|
|
BITCODE_BS diagnostics_photon_mode; /*!< DXF 70 */
|
|
BITCODE_BS diagnostics_bsp_mode; /*!< DXF 70 */
|
|
BITCODE_B export_mi_enabled; /*!< DXF 290 */
|
|
BITCODE_T mr_description; /*!< DXF 1 */
|
|
BITCODE_BL tile_size; /*!< DXF 90 */
|
|
BITCODE_BS tile_order; /*!< DXF 70 */
|
|
BITCODE_BL memory_limit; /*!< DXF 90 */
|
|
BITCODE_B diagnostics_samples_mode; /*!< DXF 290 */
|
|
BITCODE_BD energy_multiplier; /*!< DXF 40 */
|
|
} Dwg_Object_MENTALRAYRENDERSETTINGS;
|
|
|
|
/**
|
|
Class RAPIDRTRENDERSETTINGS (varies)
|
|
*/
|
|
typedef struct _dwg_object_RAPIDRTRENDERSETTINGS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
RENDERSETTINGS_fields;
|
|
// AcDbRapidRTRenderSettings
|
|
BITCODE_BL rapidrt_version; /*!< DXF 90 */
|
|
BITCODE_BL render_target; /*!< DXF 70 */
|
|
BITCODE_BL render_level; /*!< DXF 90 */
|
|
BITCODE_BL render_time; /*!< DXF 90 */
|
|
BITCODE_BL lighting_model; /*!< DXF 70 */
|
|
BITCODE_BL filter_type; /*!< DXF 70 */
|
|
BITCODE_BD filter_width; /*!< DXF 40 */
|
|
BITCODE_BD filter_height; /*!< DXF 40 */
|
|
} Dwg_Object_RAPIDRTRENDERSETTINGS;
|
|
|
|
/**
|
|
Class RENDERENVIRONMENT (varies)
|
|
*/
|
|
typedef struct _dwg_object_RENDERENVIRONMENT
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BL class_version; /*!< DXF 90, default: 1 */
|
|
BITCODE_B fog_enabled; /*!< DXF 290 */
|
|
BITCODE_B fog_background_enabled; /*!< DXF 290 */
|
|
BITCODE_RC fog_color_r; /*!< DXF 280 */
|
|
BITCODE_RC fog_color_g; /*!< DXF 280 */
|
|
BITCODE_RC fog_color_b; /*!< DXF 280 */
|
|
BITCODE_BD fog_density_near; /*!< DXF 40 */
|
|
BITCODE_BD fog_density_far; /*!< DXF 40 */
|
|
BITCODE_BD fog_distance_near; /*!< DXF 40 */
|
|
BITCODE_BD fog_distance_far; /*!< DXF 40 */
|
|
BITCODE_B environ_image_enabled; /*!< DXF 290 */
|
|
BITCODE_T environ_image_filename; /*!< DXF 1 */
|
|
} Dwg_Object_RENDERENVIRONMENT;
|
|
|
|
/**
|
|
Class RENDERGLOBAL (varies)
|
|
*/
|
|
typedef struct _dwg_object_RENDERGLOBAL
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
BITCODE_BL procedure; /*!< DXF 90 */
|
|
BITCODE_BL destination; /*!< DXF 90 */
|
|
BITCODE_B save_enabled; /*!< DXF 290 */
|
|
BITCODE_T save_filename; /*!< DXF 1 */
|
|
BITCODE_BL image_width; /*!< DXF 90 */
|
|
BITCODE_BL image_height; /*!< DXF 90 */
|
|
BITCODE_B predef_presets_first; /*!< DXF 290 */
|
|
BITCODE_B highlevel_info; /*!< DXF 290 */
|
|
} Dwg_Object_RENDERGLOBAL;
|
|
|
|
/**
|
|
Class RENDERENTRY (varies)
|
|
*/
|
|
typedef struct _dwg_object_RENDERENTRY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL class_version; /*!< DXF 90 */
|
|
BITCODE_T image_file_name; /*!< DXF 1 */
|
|
BITCODE_T preset_name; /*!< DXF 1 */
|
|
BITCODE_T view_name; /*!< DXF 1 */
|
|
BITCODE_BL dimension_x; /*!< DXF 90 */
|
|
BITCODE_BL dimension_y; /*!< DXF 90 */
|
|
BITCODE_BS start_year; /*!< DXF 70 */
|
|
BITCODE_BS start_month; /*!< DXF 70 */
|
|
BITCODE_BS start_day; /*!< DXF 70 */
|
|
BITCODE_BS start_minute; /*!< DXF 70 */
|
|
BITCODE_BS start_second; /*!< DXF 70 */
|
|
BITCODE_BS start_msec; /*!< DXF 70 */
|
|
BITCODE_BD render_time; /*!< DXF 40 */
|
|
BITCODE_BL memory_amount; /*!< DXF 90 */
|
|
BITCODE_BL material_count; /*!< DXF 90 */
|
|
BITCODE_BL light_count; /*!< DXF 90 */
|
|
BITCODE_BL triangle_count; /*!< DXF 90 */
|
|
BITCODE_BL display_index; /*!< DXF 90 */
|
|
} Dwg_Object_RENDERENTRY;
|
|
|
|
/**
|
|
Class MOTIONPATH (varies)
|
|
Maybe all the Camera paths are under ACAD_NAMEDPATH, but there's also ACAD_MOTION
|
|
*/
|
|
typedef struct _dwg_object_MOTIONPATH
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
// AcDbMotionPath
|
|
BITCODE_BS class_version; /*!< DXF 90, default: 1 */
|
|
BITCODE_H camera_path; /*!< DXF 340 */
|
|
BITCODE_H target_path; /*!< DXF 340 */
|
|
BITCODE_H viewtable; /*!< DXF 340 */
|
|
BITCODE_BS frames; /*!< DXF 90 number of frames? default 30 */
|
|
BITCODE_BS frame_rate; /*!< DXF 90 per second, default 30 */
|
|
BITCODE_B corner_decel; /*!< DXF 290 */
|
|
} Dwg_Object_MOTIONPATH;
|
|
|
|
/**
|
|
Class ACDBCURVEPATH (varies)
|
|
*/
|
|
typedef struct _dwg_object_CURVEPATH
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
// AcDbCurvePath, child of AcDbNamedPath
|
|
BITCODE_BS class_version; /*!< DXF 90, default: 1 */
|
|
BITCODE_H entity; /*!< DXF 340 */
|
|
} Dwg_Object_CURVEPATH;
|
|
|
|
/**
|
|
Class ACDBPOINTPATH (varies)
|
|
*/
|
|
typedef struct _dwg_object_POINTPATH
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
// AcDbPointPath, child of AcDbNamedPath
|
|
BITCODE_BS class_version; /*!< DXF 90, default: 1 */
|
|
BITCODE_3BD point; /*!< DXF 10 */
|
|
} Dwg_Object_POINTPATH;
|
|
|
|
// not in DXF
|
|
typedef struct _dwg_object_TVDEVICEPROPERTIES
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL flags; /* 1: double_buffer, 2: blocks_cache, 4: multithreaded, 8: sw_hlr
|
|
16: discard_backfaces, 32: ttf_cache, 64: dyn_subenthlt, 128: force_partial_update
|
|
256: clear_screen, 512: use_visual_styles (bit 9) 1024: use_overlay_buffers,
|
|
2048: scene_graph, 4096: composite_meta_files, ??: create_gl_context (bit 13)
|
|
delay_scenegraphproc (bit 14),
|
|
*/
|
|
BITCODE_BS max_regen_threads;
|
|
BITCODE_BL use_lut_palette;
|
|
BITCODE_BLL alt_hlt;
|
|
BITCODE_BLL alt_hltcolor;
|
|
BITCODE_BLL geom_shader_usage;
|
|
// ver > 3
|
|
BITCODE_BL blending_mode;
|
|
//ver 2 or >4:
|
|
BITCODE_BD antialiasing_level;
|
|
BITCODE_BD bd2;
|
|
} Dwg_Object_TVDEVICEPROPERTIES;
|
|
|
|
typedef struct _dwg_object_SKYLIGHT_BACKGROUND
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL class_version; /*!< DXF 90, default 1 */
|
|
BITCODE_H sunid; /*!< DXF 340 */
|
|
} Dwg_Object_SKYLIGHT_BACKGROUND;
|
|
|
|
typedef struct _dwg_object_SOLID_BACKGROUND
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL class_version; /*!< DXF 90, default 1 */
|
|
BITCODE_BLx color; /*!< DXF 90 */
|
|
} Dwg_Object_SOLID_BACKGROUND;
|
|
|
|
typedef struct _dwg_object_IMAGE_BACKGROUND
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL class_version; /*!< DXF 90, default 1 */
|
|
BITCODE_T filename; /*!< DXF 300 */
|
|
BITCODE_B fit_to_screen; /*!< DXF 290 */
|
|
BITCODE_B maintain_aspect_ratio; /*!< DXF 291 */
|
|
BITCODE_B use_tiling; /*!< DXF 292 */
|
|
BITCODE_2BD offset; /*!< DXF 140,141 */
|
|
BITCODE_2BD scale; /*!< DXF 142,143 */
|
|
} Dwg_Object_IMAGE_BACKGROUND;
|
|
|
|
// Image Based Lightning
|
|
typedef struct _dwg_object_IBL_BACKGROUND
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL class_version; /*!< DXF 90, default 2 */
|
|
BITCODE_B enable; /*!< DXF 290 */
|
|
BITCODE_T name; /*!< DXF 1 */
|
|
BITCODE_BD rotation; /*!< DXF 40, normalized -180 +180, in degrees */
|
|
BITCODE_B display_image; /*!< DXF 290 */
|
|
BITCODE_H secondary_background;/*!< DXF 340 */
|
|
} Dwg_Object_IBL_BACKGROUND;
|
|
|
|
typedef struct _dwg_object_GRADIENT_BACKGROUND
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL class_version; /*!< DXF 90, default 1 */
|
|
BITCODE_BLx color_top; /*!< DXF 90 */
|
|
BITCODE_BLx color_middle; /*!< DXF 91 */
|
|
BITCODE_BLx color_bottom; /*!< DXF 91 */
|
|
BITCODE_BD horizon; /*!< DXF 140 */
|
|
BITCODE_BD height; /*!< DXF 141 */
|
|
BITCODE_BD rotation; /*!< DXF 142 */
|
|
} Dwg_Object_GRADIENT_BACKGROUND;
|
|
|
|
typedef struct _dwg_object_GROUND_PLANE_BACKGROUND
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL class_version; /*!< DXF 90, default 1 */
|
|
BITCODE_BLx color_sky_zenith; /*!< DXF 90 */
|
|
BITCODE_BLx color_sky_horizon; /*!< DXF 91 */
|
|
BITCODE_BLx color_underground_horizon;/*!< DXF 92 */
|
|
BITCODE_BLx color_underground_azimuth;/*!< DXF 93 */
|
|
BITCODE_BLx color_near; /*!< DXF 94 groundplane */
|
|
BITCODE_BLx color_far; /*!< DXF 95 groundplane */
|
|
} Dwg_Object_GROUND_PLANE_BACKGROUND;
|
|
|
|
/**
|
|
* Class AcDbAnnotScaleObjectContextData (varies)
|
|
* for MTEXT, TEXT, MLEADER, LEADER, BLKREF, ALDIM (AlignedDimension), MTEXTATTRIBUTE, ...
|
|
* R2010+
|
|
* 20.4.89 SubClass AcDbObjectContextData (varies)
|
|
*/
|
|
#define OBJECTCONTEXTDATA_fields \
|
|
struct _dwg_object_object *parent; \
|
|
BITCODE_BS class_version; /*!< r2010+ =4, before 3 */ \
|
|
BITCODE_B is_default /* 290 */
|
|
|
|
#define ANNOTSCALEOBJECTCONTEXTDATA_fields \
|
|
OBJECTCONTEXTDATA_fields; \
|
|
BITCODE_H scale /*!< DXF 340 */
|
|
|
|
typedef struct _dwg_object_ANNOTSCALEOBJECTCONTEXTDATA
|
|
{
|
|
ANNOTSCALEOBJECTCONTEXTDATA_fields;
|
|
} Dwg_Object_ANNOTSCALEOBJECTCONTEXTDATA;
|
|
|
|
typedef struct _dwg_CONTEXTDATA_dict
|
|
{
|
|
struct _dwg_CONTEXTDATA_submgr *parent;
|
|
BITCODE_T text;
|
|
BITCODE_H itemhandle;
|
|
} Dwg_CONTEXTDATA_dict;
|
|
|
|
typedef struct _dwg_CONTEXTDATA_submgr
|
|
{
|
|
struct _dwg_object_CONTEXTDATAMANAGER *parent;
|
|
BITCODE_H handle;
|
|
BITCODE_BL num_entries;
|
|
Dwg_CONTEXTDATA_dict *entries;
|
|
} Dwg_CONTEXTDATA_submgr;
|
|
|
|
/**
|
|
* R2010+
|
|
* A special DICTIONARY
|
|
*/
|
|
typedef struct _dwg_object_CONTEXTDATAMANAGER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_H objectcontext;
|
|
BITCODE_BL num_submgrs;
|
|
Dwg_CONTEXTDATA_submgr *submgrs;
|
|
} Dwg_Object_CONTEXTDATAMANAGER;
|
|
|
|
#define TEXTOBJECTCONTEXTDATA_fields \
|
|
BITCODE_BS horizontal_mode; /*<! DXF 70, default 0 */ \
|
|
BITCODE_BD rotation; /*!< DXF 50, default 0.0 or 90.0 */ \
|
|
BITCODE_2RD ins_pt; /*!< DXF 10-20 */ \
|
|
BITCODE_2RD alignment_pt /*!< DXF 11-21 */
|
|
|
|
/**
|
|
* R2010+
|
|
*/
|
|
typedef struct _dwg_object_TEXTOBJECTCONTEXTDATA
|
|
{
|
|
ANNOTSCALEOBJECTCONTEXTDATA_fields;
|
|
TEXTOBJECTCONTEXTDATA_fields;
|
|
} Dwg_Object_TEXTOBJECTCONTEXTDATA;
|
|
|
|
/**
|
|
* R2010+
|
|
*/
|
|
typedef struct _dwg_object_MTEXTOBJECTCONTEXTDATA
|
|
{
|
|
ANNOTSCALEOBJECTCONTEXTDATA_fields;
|
|
BITCODE_BL attachment; /*<! DXF 70 */
|
|
BITCODE_3BD ins_pt; /*!< DXF 10 */
|
|
BITCODE_3BD x_axis_dir; /*!< DXF 11 */
|
|
BITCODE_BD rect_height; /*!< DXF 40 */
|
|
BITCODE_BD rect_width; /*!< DXF 41 */
|
|
BITCODE_BD extents_width; /*!< DXF 42 */
|
|
BITCODE_BD extents_height; /*!< DXF 43 */
|
|
BITCODE_BL column_type; /*!< DXF 71 0: none, 1: static, 2: dynamic. Note: BS in MTEXT! */
|
|
BITCODE_BD column_width; /*!< DXF 44 */
|
|
BITCODE_BD gutter; /*!< DXF 45 */
|
|
BITCODE_B auto_height; /*!< DXF 73 */
|
|
BITCODE_B flow_reversed; /*!< DXF 74 */
|
|
BITCODE_BL num_column_heights;/*!< DXF 72 or numfragments */
|
|
BITCODE_BD *column_heights; /*!< DXF 46 if dynamic and not auto_height */
|
|
} Dwg_Object_MTEXTOBJECTCONTEXTDATA;
|
|
|
|
// subclass AcDbDimensionObjectContextData
|
|
typedef struct _dwg_OCD_Dimension
|
|
{
|
|
BITCODE_B b293; /*!< DXF 293 */
|
|
BITCODE_2RD def_pt; /*!< DXF 10-30 */
|
|
BITCODE_B is_def_textloc; /*<! DXF 294 if def_pt is default */
|
|
BITCODE_BD text_rotation; /*!< DXF 140 */
|
|
BITCODE_H block; /*!< DXF 2 */
|
|
BITCODE_B dimtofl; /*!< DXF 298 */
|
|
BITCODE_B dimosxd; /*!< DXF 291 */
|
|
BITCODE_B dimatfit; /*!< DXF 70 */
|
|
BITCODE_B dimtix; /*!< DXF 292 */
|
|
BITCODE_B dimtmove; /*!< DXF 71 */
|
|
BITCODE_RC override_code; /*!< DXF 280 */
|
|
BITCODE_B has_arrow2; /*!< DXF 295 */
|
|
BITCODE_B flip_arrow2; /*!< DXF 296 */
|
|
BITCODE_B flip_arrow1; /*!< DXF 297 */
|
|
} Dwg_OCD_Dimension;
|
|
|
|
/**
|
|
* for ALDIM (AlignedDimension)
|
|
* R2010+
|
|
*/
|
|
typedef struct _dwg_object_ALDIMOBJECTCONTEXTDATA
|
|
{
|
|
ANNOTSCALEOBJECTCONTEXTDATA_fields;
|
|
Dwg_OCD_Dimension dimension;
|
|
// AcDbAlignedDimensionObjectContextData
|
|
BITCODE_3BD dimline_pt; /*!< DXF 11-31 */
|
|
} Dwg_Object_ALDIMOBJECTCONTEXTDATA;
|
|
|
|
/**
|
|
* for ANGDIM (AngularDimension)
|
|
* R2010+
|
|
*/
|
|
typedef struct _dwg_object_ANGDIMOBJECTCONTEXTDATA
|
|
{
|
|
ANNOTSCALEOBJECTCONTEXTDATA_fields;
|
|
Dwg_OCD_Dimension dimension;
|
|
// AcDbAngularDimensionObjectContextData
|
|
BITCODE_3BD arc_pt; /*!< DXF 11-31 */
|
|
} Dwg_Object_ANGDIMOBJECTCONTEXTDATA;
|
|
|
|
/**
|
|
* for DMDIM (DiametricDimension)
|
|
* R2010+
|
|
*/
|
|
typedef struct _dwg_object_DMDIMOBJECTCONTEXTDATA
|
|
{
|
|
ANNOTSCALEOBJECTCONTEXTDATA_fields;
|
|
Dwg_OCD_Dimension dimension;
|
|
// AcDbDiametricDimensionObjectContextData
|
|
BITCODE_3BD first_arc_pt; /*!< DXF 11-31 */
|
|
BITCODE_3BD def_pt; /*!< DXF 12-32 */
|
|
} Dwg_Object_DMDIMOBJECTCONTEXTDATA;
|
|
|
|
/**
|
|
* for ORDDIM (OrdinateDimension)
|
|
* R2010+
|
|
*/
|
|
typedef struct _dwg_object_ORDDIMOBJECTCONTEXTDATA
|
|
{
|
|
ANNOTSCALEOBJECTCONTEXTDATA_fields;
|
|
Dwg_OCD_Dimension dimension;
|
|
// AcDbOrdinateDimensionObjectContextData
|
|
BITCODE_3BD feature_location_pt; /*!< DXF 11-31 = origin */
|
|
BITCODE_3BD leader_endpt; /*!< DXF 12-32 */
|
|
} Dwg_Object_ORDDIMOBJECTCONTEXTDATA;
|
|
|
|
/**
|
|
* for RADIM (Radial Dimension)
|
|
* R2010+
|
|
*/
|
|
typedef struct _dwg_object_RADIMOBJECTCONTEXTDATA
|
|
{
|
|
ANNOTSCALEOBJECTCONTEXTDATA_fields;
|
|
Dwg_OCD_Dimension dimension;
|
|
// AcDbRadialDimensionObjectContextData
|
|
BITCODE_3BD first_arc_pt; /*!< DXF 11-31 */
|
|
} Dwg_Object_RADIMOBJECTCONTEXTDATA;
|
|
|
|
/**
|
|
* for RADIMLG (Large Radial Dimension)
|
|
* R2010+
|
|
*/
|
|
typedef struct _dwg_object_RADIMLGOBJECTCONTEXTDATA
|
|
{
|
|
ANNOTSCALEOBJECTCONTEXTDATA_fields;
|
|
Dwg_OCD_Dimension dimension;
|
|
// AcDbRadialDimensionLargeObjectContextData
|
|
BITCODE_3BD ovr_center; /*!< DXF 12-32 */
|
|
BITCODE_3BD jog_point; /*!< DXF 13-33 */
|
|
} Dwg_Object_RADIMLGOBJECTCONTEXTDATA;
|
|
|
|
typedef struct _dwg_object_MTEXTATTRIBUTEOBJECTCONTEXTDATA
|
|
{
|
|
ANNOTSCALEOBJECTCONTEXTDATA_fields;
|
|
TEXTOBJECTCONTEXTDATA_fields;
|
|
// MTEXTATTR
|
|
BITCODE_B enable_context;
|
|
Dwg_Object_SCALE context;
|
|
} Dwg_Object_MTEXTATTRIBUTEOBJECTCONTEXTDATA;
|
|
|
|
typedef struct _dwg_object_MLEADEROBJECTCONTEXTDATA
|
|
{
|
|
ANNOTSCALEOBJECTCONTEXTDATA_fields;
|
|
// ...??
|
|
} Dwg_Object_MLEADEROBJECTCONTEXTDATA;
|
|
|
|
typedef struct _dwg_object_LEADEROBJECTCONTEXTDATA
|
|
{
|
|
ANNOTSCALEOBJECTCONTEXTDATA_fields;
|
|
BITCODE_BL num_points; /*< DXF 70 */
|
|
BITCODE_3DPOINT* points; /*!< DXF 10 */
|
|
BITCODE_B b290; /*!< DXF 290 */
|
|
BITCODE_3DPOINT x_direction; /*!< DXF 11 */
|
|
BITCODE_3DPOINT inspt_offset; /*!< DXF 12 */
|
|
BITCODE_3DPOINT endptproj; /*!< DXF 13 */
|
|
} Dwg_Object_LEADEROBJECTCONTEXTDATA;
|
|
|
|
typedef struct _dwg_object_BLKREFOBJECTCONTEXTDATA
|
|
{
|
|
ANNOTSCALEOBJECTCONTEXTDATA_fields;
|
|
BITCODE_BD rotation; /* 50 */
|
|
BITCODE_3BD ins_pt; /* 10 */
|
|
BITCODE_3BD scale_factor; /* 42-44 */
|
|
} Dwg_Object_BLKREFOBJECTCONTEXTDATA;
|
|
|
|
typedef struct _dwg_object_FCFOBJECTCONTEXTDATA
|
|
{
|
|
ANNOTSCALEOBJECTCONTEXTDATA_fields;
|
|
BITCODE_3BD location; /*!< DXF 10-30 */
|
|
BITCODE_3BD horiz_dir; /*!< DXF 11-31 */
|
|
} Dwg_Object_FCFOBJECTCONTEXTDATA;
|
|
|
|
typedef struct _dwg_object_DETAILVIEWSTYLE
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
// AcDbModelDocViewStyle
|
|
BITCODE_BS mdoc_class_version; /*!< DXF 70 0 */
|
|
BITCODE_T desc;
|
|
BITCODE_B is_modified_for_recompute;
|
|
BITCODE_T display_name;
|
|
BITCODE_BL viewstyle_flags; /* DXF 90. 1: cannot_rename */
|
|
// AcDbDetailViewStyle
|
|
BITCODE_BS class_version; /*!< DXF 70 0 */
|
|
BITCODE_BL flags;
|
|
BITCODE_H identifier_style;
|
|
BITCODE_CMC identifier_color;
|
|
BITCODE_BD identifier_height;
|
|
BITCODE_T identifier_exclude_characters;
|
|
BITCODE_BD identifier_offset;
|
|
BITCODE_RC identifier_placement;
|
|
BITCODE_H arrow_symbol;
|
|
BITCODE_CMC arrow_symbol_color;
|
|
BITCODE_BD arrow_symbol_size;
|
|
BITCODE_H boundary_ltype;
|
|
BITCODE_BLd boundary_linewt;
|
|
BITCODE_CMC boundary_line_color;
|
|
BITCODE_H viewlabel_text_style;
|
|
BITCODE_CMC viewlabel_text_color;
|
|
BITCODE_BD viewlabel_text_height;
|
|
BITCODE_BL viewlabel_attachment;
|
|
BITCODE_BD viewlabel_offset;
|
|
BITCODE_BL viewlabel_alignment;
|
|
BITCODE_T viewlabel_pattern;
|
|
BITCODE_H connection_ltype;
|
|
BITCODE_BLd connection_linewt;
|
|
BITCODE_CMC connection_line_color;
|
|
BITCODE_H borderline_ltype;
|
|
BITCODE_BLd borderline_linewt;
|
|
BITCODE_CMC borderline_color;
|
|
BITCODE_RC model_edge;
|
|
} Dwg_Object_DETAILVIEWSTYLE;
|
|
|
|
typedef struct _dwg_object_SECTIONVIEWSTYLE
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
|
|
// AcDbModelDocViewStyle
|
|
BITCODE_BS mdoc_class_version; /*!< DXF 70 0 */
|
|
BITCODE_T desc;
|
|
BITCODE_B is_modified_for_recompute;
|
|
BITCODE_T display_name;
|
|
BITCODE_BL viewstyle_flags; /* DXF 90. 1: cannot_rename */
|
|
// AcDbSectionViewStyle
|
|
BITCODE_BS class_version; /*!< DXF 70 0 */
|
|
BITCODE_BL flags; /* DXF 90. 1: is_continuous_labeling, 2: show_arrowheads,
|
|
4: show_viewlabel, 8: show_all_plane_lines,
|
|
0x10: show_all_bend_identifiers,
|
|
0x20 show_end_and_bend_lines, 0x40: show_hatching ... */
|
|
BITCODE_H identifier_style;
|
|
BITCODE_CMC identifier_color;
|
|
BITCODE_BD identifier_height;
|
|
BITCODE_H arrow_start_symbol;
|
|
BITCODE_H arrow_end_symbol;
|
|
BITCODE_CMC arrow_symbol_color;
|
|
BITCODE_BD arrow_symbol_size;
|
|
BITCODE_T identifier_exclude_characters;
|
|
BITCODE_BLd identifier_position;
|
|
BITCODE_BD identifier_offset;
|
|
BITCODE_BLd arrow_position;
|
|
BITCODE_BD arrow_symbol_extension_length;
|
|
BITCODE_H plane_ltype;
|
|
BITCODE_BLd plane_linewt;
|
|
BITCODE_CMC plane_line_color;
|
|
BITCODE_H bend_ltype;
|
|
BITCODE_BLd bend_linewt;
|
|
BITCODE_CMC bend_line_color;
|
|
BITCODE_BD bend_line_length;
|
|
BITCODE_BD end_line_overshoot;
|
|
BITCODE_BD end_line_length;
|
|
BITCODE_H viewlabel_text_style;
|
|
BITCODE_CMC viewlabel_text_color;
|
|
BITCODE_BD viewlabel_text_height;
|
|
BITCODE_BL viewlabel_attachment;
|
|
BITCODE_BD viewlabel_offset;
|
|
BITCODE_BL viewlabel_alignment;
|
|
BITCODE_T viewlabel_pattern;
|
|
BITCODE_CMC hatch_color;
|
|
BITCODE_CMC hatch_bg_color;
|
|
BITCODE_T hatch_pattern;
|
|
BITCODE_BD hatch_scale;
|
|
BITCODE_BLd hatch_transparency;
|
|
// see flags:
|
|
//BITCODE_B is_continuous_labeling;
|
|
//BITCODE_B show_arrowheads;
|
|
//BITCODE_B show_viewlabel;
|
|
//BITCODE_B show_end_and_bend_lines;
|
|
//BITCODE_B show_hatching;
|
|
BITCODE_B unknown_b1;
|
|
BITCODE_B unknown_b2;
|
|
BITCODE_BL num_hatch_angles;
|
|
BITCODE_BD *hatch_angles;
|
|
} Dwg_Object_SECTIONVIEWSTYLE;
|
|
|
|
typedef struct _dwg_object_SECTION_MANAGER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_B is_live; /*!< DXF 70 */
|
|
BITCODE_BS num_sections; /*!< DXF 90 */
|
|
BITCODE_H *sections; /*!< DXF 330 */
|
|
} Dwg_Object_SECTION_MANAGER;
|
|
|
|
typedef struct _dwg_SECTION_geometrysettings
|
|
{
|
|
struct _dwg_SECTION_typesettings *parent;
|
|
BITCODE_BL num_geoms; /* DXF 90 */
|
|
BITCODE_BL hexindex; /* DXF 91 */
|
|
BITCODE_BL flags; /* DXF 92. 2: hatchvisible, 4: is_hiddenline, 8: has_division_lines */
|
|
BITCODE_CMC color; /* DXF 62 */
|
|
BITCODE_T layer; /* DXF 8 Default: 0 */
|
|
BITCODE_T ltype; /* DXF 6 Default: Continuous */
|
|
BITCODE_BD ltype_scale; /* DXF 40 */
|
|
BITCODE_T plotstyle; /* DXF 1 Default: ByColor */
|
|
BITCODE_BLd linewt; /* DXF 370 */
|
|
BITCODE_BS face_transparency; /* DXF 70 */
|
|
BITCODE_BS edge_transparency; /* DXF 71 */
|
|
BITCODE_BS hatch_type; /* DXF 72 */
|
|
BITCODE_T hatch_pattern; /* DXF 2 */
|
|
BITCODE_BD hatch_angle; /* DXF 41 */
|
|
BITCODE_BD hatch_spacing; /* DXF 42 */
|
|
BITCODE_BD hatch_scale; /* DXF 43 */
|
|
} Dwg_SECTION_geometrysettings;
|
|
|
|
typedef struct _dwg_SECTION_typesettings
|
|
{
|
|
struct _dwg_object_SECTION_SETTINGS *parent;
|
|
BITCODE_BS type; /*!< DXF 90: type: live=1, 2d=2, 3d=4 */
|
|
BITCODE_BS generation; /*!< DXF 91: source and destination flags.
|
|
sourceall=1, sourceselected=2.
|
|
destnewblock=16, destreplaceblock=32, destfile=64
|
|
*/
|
|
/* or geometry: intersectionboundary=1, intersectionfill=2, fg_geom=4, bg_geom=8
|
|
curvetangencylines=16 */
|
|
BITCODE_BL num_sources;
|
|
BITCODE_H *sources;
|
|
BITCODE_H destblock;
|
|
BITCODE_T destfile;
|
|
BITCODE_BL num_geom;
|
|
Dwg_SECTION_geometrysettings *geom;
|
|
} Dwg_SECTION_typesettings;
|
|
|
|
// Unstable
|
|
typedef struct _dwg_object_SECTION_SETTINGS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BS curr_type; /* DXF 90 */
|
|
BITCODE_BL num_types; /* DXF 91 */
|
|
Dwg_SECTION_typesettings *types;
|
|
} Dwg_Object_SECTION_SETTINGS;
|
|
|
|
typedef struct _dwg_object_LAYERFILTER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL num_names;
|
|
BITCODE_T *names;
|
|
} Dwg_Object_LAYERFILTER;
|
|
|
|
typedef struct _dwg_entity_ARCALIGNEDTEXT
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
BITCODE_D2T text_size; /*!< DXF 42 */
|
|
BITCODE_D2T xscale; /*!< DXF 41 */
|
|
BITCODE_D2T char_spacing; /*!< DXF 43 */
|
|
BITCODE_T style; /*!< DXF 7 */
|
|
BITCODE_T t2; /*!< DXF 2 */
|
|
BITCODE_T t3; /*!< DXF 3 */
|
|
BITCODE_T text_value; /*!< DXF 1 */
|
|
BITCODE_D2T offset_from_arc; /*!< DXF 44 */
|
|
BITCODE_D2T right_offset; /*!< DXF 45 */
|
|
BITCODE_D2T left_offset; /*!< DXF 46 */
|
|
BITCODE_3BD center; /*!< DXF 10 */
|
|
BITCODE_BD radius; /*!< DXF 40 */
|
|
BITCODE_BD start_angle; /*!< DXF 50 */
|
|
BITCODE_BD end_angle; /*!< DXF 51 */
|
|
BITCODE_3BD extrusion; /*!< DXF 210 */
|
|
BITCODE_BL color; /*!< DXF 90 */
|
|
BITCODE_BS is_reverse; /*!< DXF 70 */
|
|
BITCODE_BS text_direction; /*!< DXF 71 */
|
|
BITCODE_BS alignment; /*!< DXF 72 */
|
|
BITCODE_BS text_position; /*!< DXF 73 */
|
|
BITCODE_BS font_19; /*!< DXF 74 */
|
|
BITCODE_BS bs2; /*!< DXF 75 */
|
|
BITCODE_BS is_underlined; /*!< DXF 76 */
|
|
BITCODE_BS bs1; /*!< DXF 77 */
|
|
BITCODE_BS font; /*!< DXF 78 */
|
|
BITCODE_BS is_shx; /*!< DXF 79 */
|
|
BITCODE_BS wizard_flag; /*!< DXF 280 */
|
|
BITCODE_H arc_handle; /*!< DXF 330 */
|
|
} Dwg_Entity_ARCALIGNEDTEXT;
|
|
|
|
// Remote Text with external src or Diesel expr
|
|
typedef struct _dwg_entity_RTEXT
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
BITCODE_3BD pt; /*!< DXF 10 */
|
|
BITCODE_BE extrusion; /*!< DXF 210 */
|
|
BITCODE_BD rotation; /*!< DXF 50 */
|
|
BITCODE_BD height; /*!< DXF 50 */
|
|
BITCODE_BS flags; /*!< DXF 70 */
|
|
BITCODE_T text_value; /*!< DXF 1 */
|
|
BITCODE_H style; /*!< DXF 7 */
|
|
} Dwg_Entity_RTEXT;
|
|
|
|
typedef struct _dwg_entity_LAYOUTPRINTCONFIG
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
BITCODE_BS class_version; /* 2 */
|
|
// ...
|
|
BITCODE_BS flag; /*!< DXF 93 0 */
|
|
} Dwg_Entity_LAYOUTPRINTCONFIG;
|
|
|
|
typedef struct _dwg_object_ACMECOMMANDHISTORY
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BS class_version;
|
|
//?
|
|
} Dwg_Object_ACMECOMMANDHISTORY;
|
|
|
|
typedef struct _dwg_object_ACMESCOPE
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BS class_version;
|
|
//?
|
|
} Dwg_Object_ACMESCOPE;
|
|
|
|
typedef struct _dwg_object_ACMESTATEMGR
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BS class_version;
|
|
//?
|
|
} Dwg_Object_ACMESTATEMGR;
|
|
|
|
typedef struct _dwg_object_CSACDOCUMENTOPTIONS
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BS class_version;
|
|
//?
|
|
} Dwg_Object_CSACDOCUMENTOPTIONS;
|
|
|
|
|
|
// dynamic blocks:
|
|
|
|
#define BLOCKELEMENT_fields \
|
|
Dwg_EvalExpr evalexpr; \
|
|
BITCODE_T name; \
|
|
BITCODE_BL be_major; \
|
|
BITCODE_BL be_minor; \
|
|
BITCODE_BL eed1071
|
|
|
|
#define BLOCKPARAMETER_fields \
|
|
BLOCKELEMENT_fields; \
|
|
BITCODE_B show_properties; /* DXF 280 */ \
|
|
BITCODE_B chain_actions /* DXF 281 */
|
|
|
|
#define BLOCKACTION_fields \
|
|
BLOCKELEMENT_fields; \
|
|
BITCODE_3BD display_location; \
|
|
BITCODE_BL num_actions; \
|
|
BITCODE_BL *actions; \
|
|
BITCODE_BL num_deps; \
|
|
BITCODE_H *deps
|
|
|
|
// XY action params
|
|
#define BLOCKACTION_doubles_fields \
|
|
BITCODE_BD action_offset_x; \
|
|
BITCODE_BD action_offset_y; \
|
|
BITCODE_BD angle_offset
|
|
|
|
#define BLOCKGRIP_fields \
|
|
BLOCKELEMENT_fields; \
|
|
BITCODE_BL bg_bl91; \
|
|
BITCODE_BL bg_bl92; \
|
|
BITCODE_3BD bg_location; \
|
|
BITCODE_B bg_insert_cycling; \
|
|
BITCODE_BLd bg_insert_cycling_weight
|
|
|
|
// same as BLOCKACTION_connectionpts
|
|
typedef struct _dwg_BLOCKPARAMETER_connection {
|
|
BITCODE_BL code;
|
|
BITCODE_T name;
|
|
} Dwg_BLOCKPARAMETER_connection;
|
|
|
|
typedef struct _dwg_BLOCKPARAMETER_PropInfo {
|
|
BITCODE_BL num_connections;
|
|
Dwg_BLOCKPARAMETER_connection *connections;
|
|
} Dwg_BLOCKPARAMETER_PropInfo;
|
|
|
|
typedef struct _dwg_BLOCKPARAMVALUESET {
|
|
BITCODE_T desc;
|
|
BITCODE_BL flags;
|
|
BITCODE_BD minimum;
|
|
BITCODE_BD maximum;
|
|
BITCODE_BD increment;
|
|
BITCODE_BS num_valuelist;
|
|
BITCODE_BD *valuelist;
|
|
} Dwg_BLOCKPARAMVALUESET;
|
|
|
|
#define BLOCK1PTPARAMETER_fields \
|
|
BLOCKPARAMETER_fields; \
|
|
BITCODE_3BD def_pt; \
|
|
BITCODE_BL num_propinfos; /* 2 */ \
|
|
Dwg_BLOCKPARAMETER_PropInfo prop1; \
|
|
Dwg_BLOCKPARAMETER_PropInfo prop2
|
|
|
|
#define BLOCK2PTPARAMETER_fields \
|
|
BLOCKPARAMETER_fields; \
|
|
BITCODE_3BD def_basept; \
|
|
BITCODE_3BD def_endpt; \
|
|
Dwg_BLOCKPARAMETER_PropInfo prop1; \
|
|
Dwg_BLOCKPARAMETER_PropInfo prop2; \
|
|
Dwg_BLOCKPARAMETER_PropInfo prop3; \
|
|
Dwg_BLOCKPARAMETER_PropInfo prop4; \
|
|
BITCODE_BL *prop_states; \
|
|
BITCODE_BS parameter_base_location; \
|
|
BITCODE_3BD upd_basept; \
|
|
BITCODE_3BD basept; \
|
|
BITCODE_3BD upd_endpt; \
|
|
BITCODE_3BD endpt
|
|
|
|
typedef struct _dwg_BLOCKACTION_connectionpts
|
|
{
|
|
BITCODE_BL code;
|
|
BITCODE_T name;
|
|
} Dwg_BLOCKACTION_connectionpts;
|
|
|
|
#define BLOCKACTION_WITHBASEPT_fields(n) \
|
|
BLOCKACTION_fields; \
|
|
BITCODE_3BD offset; \
|
|
Dwg_BLOCKACTION_connectionpts conn_pts[n]; \
|
|
BITCODE_B dependent; \
|
|
BITCODE_3BD base_pt
|
|
/* BITCODE_3BD stretch_pt */
|
|
|
|
#define BLOCKPARAMVALUESET_fields \
|
|
Dwg_BLOCKPARAMVALUESET value_set
|
|
|
|
#define BLOCKCONSTRAINTPARAMETER_fields \
|
|
BLOCK2PTPARAMETER_fields; \
|
|
BITCODE_H dependency
|
|
|
|
#define BLOCKLINEARCONSTRAINTPARAMETER_fields \
|
|
BLOCKCONSTRAINTPARAMETER_fields; \
|
|
BITCODE_T expr_name; \
|
|
BITCODE_T expr_description; \
|
|
BITCODE_BD value; \
|
|
BLOCKPARAMVALUESET_fields
|
|
|
|
typedef struct _dwg_BLOCKVISIBILITYPARAMETER_state
|
|
{
|
|
struct _dwg_object_BLOCKVISIBILITYPARAMETER *parent;
|
|
BITCODE_T name; /* DXF 301 */
|
|
BITCODE_BL num_blocks; /* DXF 94 */
|
|
BITCODE_H *blocks; /* DXF 332 */
|
|
BITCODE_BL num_params; /* DXF 95 */
|
|
BITCODE_H *params; /* DXF 333 BLOCKVISIBILITYPARAMETER objects */
|
|
} Dwg_BLOCKVISIBILITYPARAMETER_state;
|
|
|
|
typedef struct _dwg_object_BLOCKVISIBILITYPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCK1PTPARAMETER_fields;
|
|
BITCODE_B is_initialized; // DXF 281
|
|
BITCODE_B unknown_bool; // DXF 91, history_compression, history_required or is_visible?
|
|
BITCODE_T blockvisi_name; // DXF 301
|
|
BITCODE_T blockvisi_desc; // DXF 302
|
|
BITCODE_BL num_blocks; // DXF 93
|
|
BITCODE_H *blocks; // DXF 331
|
|
BITCODE_BL num_states; // DXF 92
|
|
Dwg_BLOCKVISIBILITYPARAMETER_state *states;
|
|
//BITCODE_T cur_state_name;
|
|
//BITCODE_BL cur_state;
|
|
} Dwg_Object_BLOCKVISIBILITYPARAMETER;
|
|
|
|
typedef struct _dwg_object_BLOCKVISIBILITYGRIP
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKGRIP_fields;
|
|
// AcDbBlockVisibilityGrip
|
|
} Dwg_Object_BLOCKVISIBILITYGRIP;
|
|
|
|
typedef struct _dwg_object_BLOCKGRIPLOCATIONCOMPONENT
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_EvalExpr evalexpr;
|
|
// AcDbBlockGripExpr
|
|
BITCODE_BL grip_type;
|
|
BITCODE_T grip_expr; // one of: X Y UpdatedX UpdatedY DisplacementX DisplacementY
|
|
} Dwg_Object_BLOCKGRIPLOCATIONCOMPONENT;
|
|
|
|
typedef struct _dwg_object_BREAKDATA
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL num_pointrefs;
|
|
BITCODE_H *pointrefs;
|
|
BITCODE_H dimref;
|
|
} Dwg_Object_BREAKDATA;
|
|
|
|
typedef struct _dwg_object_BREAKPOINTREF
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
// XrefFullSubendPath ??
|
|
} Dwg_Object_BREAKPOINTREF;
|
|
|
|
typedef struct _dwg_entity_FLIPGRIPENTITY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
//BLOCKGRIP_fields;
|
|
// ??
|
|
} Dwg_Entity_FLIPGRIPENTITY;
|
|
|
|
typedef struct _dwg_entity_LINEARGRIPENTITY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
//BLOCKGRIP_fields;
|
|
// ??
|
|
} Dwg_Entity_LINEARGRIPENTITY;
|
|
|
|
typedef struct _dwg_entity_POLARGRIPENTITY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
//BLOCKGRIP_fields;
|
|
// ??
|
|
} Dwg_Entity_POLARGRIPENTITY;
|
|
|
|
typedef struct _dwg_entity_ROTATIONGRIPENTITY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
//BLOCKGRIP_fields;
|
|
// ??
|
|
} Dwg_Entity_ROTATIONGRIPENTITY;
|
|
|
|
typedef struct _dwg_entity_VISIBILITYGRIPENTITY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
//BLOCKGRIP_fields;
|
|
// ??
|
|
} Dwg_Entity_VISIBILITYGRIPENTITY;
|
|
|
|
typedef struct _dwg_entity_XYGRIPENTITY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
//BLOCKGRIP_fields;
|
|
// ??
|
|
} Dwg_Entity_XYGRIPENTITY;
|
|
|
|
typedef struct _dwg_entity_ALIGNMENTPARAMETERENTITY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
// ??
|
|
} Dwg_Entity_ALIGNMENTPARAMETERENTITY;
|
|
|
|
typedef struct _dwg_entity_BASEPOINTPARAMETERENTITY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
// ??
|
|
} Dwg_Entity_BASEPOINTPARAMETERENTITY;
|
|
|
|
typedef struct _dwg_entity_FLIPPARAMETERENTITY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
// ??
|
|
} Dwg_Entity_FLIPPARAMETERENTITY;
|
|
|
|
typedef struct _dwg_entity_LINEARPARAMETERENTITY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
// ??
|
|
} Dwg_Entity_LINEARPARAMETERENTITY;
|
|
|
|
typedef struct _dwg_entity_POINTPARAMETERENTITY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
// ??
|
|
} Dwg_Entity_POINTPARAMETERENTITY;
|
|
|
|
typedef struct _dwg_entity_ROTATIONPARAMETERENTITY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
// ??
|
|
} Dwg_Entity_ROTATIONPARAMETERENTITY;
|
|
|
|
typedef struct _dwg_entity_VISIBILITYPARAMETERENTITY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
// ??
|
|
} Dwg_Entity_VISIBILITYPARAMETERENTITY;
|
|
|
|
typedef struct _dwg_entity_XYPARAMETERENTITY
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
// ??
|
|
} Dwg_Entity_XYPARAMETERENTITY;
|
|
|
|
typedef struct _dwg_object_BLOCKALIGNMENTGRIP
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKGRIP_fields;
|
|
BITCODE_3BD orientation;
|
|
} Dwg_Object_BLOCKALIGNMENTGRIP;
|
|
|
|
typedef struct _dwg_object_BLOCKALIGNMENTPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCK2PTPARAMETER_fields;
|
|
BITCODE_B align_perpendicular; /* DXF 280 */
|
|
} Dwg_Object_BLOCKALIGNMENTPARAMETER;
|
|
|
|
typedef struct _dwg_object_BLOCKANGULARCONSTRAINTPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKCONSTRAINTPARAMETER_fields;
|
|
BITCODE_3BD center_pt; /* DXF 1011 */
|
|
BITCODE_3BD end_pt; /* DXF 1012 */
|
|
BITCODE_T expr_name; /* DXF 305 */
|
|
BITCODE_T expr_description; /* DXF 306 */
|
|
BITCODE_BD angle; /* DXF 140, offset is the result */
|
|
BITCODE_B orientation_on_both_grips; /* DXF 280 */
|
|
BLOCKPARAMVALUESET_fields;
|
|
} Dwg_Object_BLOCKANGULARCONSTRAINTPARAMETER;
|
|
|
|
typedef struct _dwg_object_BLOCKDIAMETRICCONSTRAINTPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKCONSTRAINTPARAMETER_fields;
|
|
BITCODE_T expr_name; /* DXF 305, a copy of the EvalExpr name */
|
|
BITCODE_T expr_description; /* DXF 306 */
|
|
BITCODE_BD distance; /* DXF 140 */
|
|
BITCODE_B orientation_on_both_grips; /* DXF 280 */
|
|
BLOCKPARAMVALUESET_fields;
|
|
} Dwg_Object_BLOCKDIAMETRICCONSTRAINTPARAMETER;
|
|
|
|
typedef struct _dwg_object_BLOCKRADIALCONSTRAINTPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKCONSTRAINTPARAMETER_fields;
|
|
BITCODE_T expr_name; /* DXF 305, a copy of the EvalExpr name */
|
|
BITCODE_T expr_description; /* DXF 306 */
|
|
BITCODE_BD distance; /* DXF 140 */
|
|
BLOCKPARAMVALUESET_fields;
|
|
} Dwg_Object_BLOCKRADIALCONSTRAINTPARAMETER;
|
|
|
|
typedef struct _dwg_object_BLOCKARRAYACTION
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKACTION_fields;
|
|
Dwg_BLOCKACTION_connectionpts conn_pts[4]; /*!< DXF 92-95, 301-304 */
|
|
BITCODE_BD column_offset; /*!< DXF 140 */
|
|
BITCODE_BD row_offset; /*!< DXF 141 */
|
|
} Dwg_Object_BLOCKARRAYACTION;
|
|
|
|
typedef struct _dwg_object_BLOCKBASEPOINTPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCK1PTPARAMETER_fields;
|
|
BITCODE_3BD pt; /* DXF 1011 */
|
|
BITCODE_3BD base_pt; /* DXF 1012 */
|
|
} Dwg_Object_BLOCKBASEPOINTPARAMETER;
|
|
|
|
typedef struct _dwg_object_BLOCKFLIPACTION
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKACTION_fields;
|
|
Dwg_BLOCKACTION_connectionpts conn_pts[4]; /*!< DXF 92-95, 301-304 */
|
|
BLOCKACTION_doubles_fields;
|
|
} Dwg_Object_BLOCKFLIPACTION;
|
|
|
|
typedef struct _dwg_object_BLOCKFLIPGRIP
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKGRIP_fields;
|
|
BITCODE_BL combined_state;
|
|
BITCODE_3BD orientation;
|
|
BITCODE_BS upd_state;
|
|
BITCODE_BS state;
|
|
} Dwg_Object_BLOCKFLIPGRIP;
|
|
|
|
typedef struct _dwg_object_BLOCKFLIPPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCK2PTPARAMETER_fields;
|
|
BITCODE_T flip_label; /*!< DXF 305 */
|
|
BITCODE_T flip_label_desc; /*!< DXF 306 */
|
|
BITCODE_T base_state_label; /*!< DXF 307 */
|
|
BITCODE_T flipped_state_label;/*!< DXF 308 */
|
|
BITCODE_3BD def_label_pt; /*!< DXF 1012 */
|
|
BITCODE_BL bl96; /*!< DXF 96 */
|
|
BITCODE_T tooltip; /*!< DXF 309 */
|
|
} Dwg_Object_BLOCKFLIPPARAMETER;
|
|
|
|
typedef struct _dwg_object_BLOCKALIGNEDCONSTRAINTPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKLINEARCONSTRAINTPARAMETER_fields;
|
|
} Dwg_Object_BLOCKALIGNEDCONSTRAINTPARAMETER;
|
|
|
|
typedef struct _dwg_object_BLOCKLINEARCONSTRAINTPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKLINEARCONSTRAINTPARAMETER_fields;
|
|
} Dwg_Object_BLOCKLINEARCONSTRAINTPARAMETER;
|
|
|
|
typedef struct _dwg_object_BLOCKHORIZONTALCONSTRAINTPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKLINEARCONSTRAINTPARAMETER_fields;
|
|
} Dwg_Object_BLOCKHORIZONTALCONSTRAINTPARAMETER;
|
|
|
|
typedef struct _dwg_object_BLOCKVERTICALCONSTRAINTPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKLINEARCONSTRAINTPARAMETER_fields;
|
|
} Dwg_Object_BLOCKVERTICALCONSTRAINTPARAMETER;
|
|
|
|
typedef struct _dwg_object_BLOCKLINEARGRIP
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKGRIP_fields;
|
|
BITCODE_3BD orientation; /* DXF 140,141,142 */
|
|
} Dwg_Object_BLOCKLINEARGRIP;
|
|
|
|
typedef struct _dwg_object_BLOCKLINEARPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCK2PTPARAMETER_fields;
|
|
BITCODE_T distance_name; /*!< DXF 305 */
|
|
BITCODE_T distance_desc; /*!< DXF 306 */
|
|
BITCODE_BD distance; /*!< DXF 306 */
|
|
BLOCKPARAMVALUESET_fields;
|
|
} Dwg_Object_BLOCKLINEARPARAMETER;
|
|
|
|
typedef struct _dwg_BLOCKLOOKUPACTION_lut
|
|
{
|
|
struct _dwg_object_BLOCKLOOKUPACTION *parent;
|
|
Dwg_BLOCKACTION_connectionpts conn_pts[3]; /*!< DXF 94-96, 303-305*/
|
|
BITCODE_B b282;
|
|
BITCODE_B b281;
|
|
} Dwg_BLOCKLOOKUPACTION_lut;
|
|
|
|
typedef struct _dwg_object_BLOCKLOOKUPACTION
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKACTION_fields;
|
|
BITCODE_BL numelems; /* computed */
|
|
BITCODE_BL numrows; /* DXF 92 */
|
|
BITCODE_BL numcols; /* DXF 93 */
|
|
Dwg_BLOCKLOOKUPACTION_lut *lut;
|
|
BITCODE_T *exprs;
|
|
BITCODE_B b280;
|
|
} Dwg_Object_BLOCKLOOKUPACTION;
|
|
|
|
typedef struct _dwg_object_BLOCKLOOKUPGRIP
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKGRIP_fields;
|
|
} Dwg_Object_BLOCKLOOKUPGRIP;
|
|
|
|
typedef struct _dwg_object_BLOCKLOOKUPPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCK1PTPARAMETER_fields;
|
|
BITCODE_T lookup_name; /*!< DXF 303 */
|
|
BITCODE_T lookup_desc; /*!< DXF 304 */
|
|
BITCODE_BL index; /*!< DXF 94 ?? */
|
|
BITCODE_T unknown_t;
|
|
} Dwg_Object_BLOCKLOOKUPPARAMETER;
|
|
|
|
typedef struct _dwg_object_BLOCKMOVEACTION
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKACTION_fields;
|
|
Dwg_BLOCKACTION_connectionpts conn_pts[2]; /*!< DXF 92-93, 301-302 */
|
|
BLOCKACTION_doubles_fields;
|
|
} Dwg_Object_BLOCKMOVEACTION;
|
|
|
|
typedef struct _dwg_object_BLOCKPOINTPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCK1PTPARAMETER_fields;
|
|
BITCODE_T position_name; /* DXF 303 */
|
|
BITCODE_T position_desc; /* DXF 304 */
|
|
BITCODE_3BD def_label_pt; /* DXF 1011 */
|
|
} Dwg_Object_BLOCKPOINTPARAMETER;
|
|
|
|
typedef struct _dwg_object_BLOCKPOLARGRIP
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKGRIP_fields;
|
|
} Dwg_Object_BLOCKPOLARGRIP;
|
|
|
|
typedef struct _dwg_object_BLOCKPOLARPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCK2PTPARAMETER_fields;
|
|
BITCODE_T angle_name; /*!< DXF 305 */
|
|
BITCODE_T angle_desc; /*!< DXF 306 */
|
|
BITCODE_T distance_name; /*!< DXF 305 */
|
|
BITCODE_T distance_desc; /*!< DXF 306 */
|
|
BITCODE_BD offset; /*!< DXF 140 */
|
|
Dwg_BLOCKPARAMVALUESET angle_value_set;
|
|
Dwg_BLOCKPARAMVALUESET distance_value_set;
|
|
//BITCODE_3BD base_angle_pt;
|
|
} Dwg_Object_BLOCKPOLARPARAMETER;
|
|
|
|
typedef struct _dwg_object_BLOCKPOLARSTRETCHACTION
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKACTION_fields;
|
|
Dwg_BLOCKACTION_connectionpts conn_pts[6]; /*!< DXF 92-97, 301-306 */
|
|
BITCODE_BL num_pts; // 72
|
|
BITCODE_2RD *pts; // 10
|
|
BITCODE_BL num_hdls; // 72
|
|
BITCODE_H *hdls; // 331
|
|
BITCODE_BS *shorts; // 74
|
|
BITCODE_BL num_codes; // 75
|
|
BITCODE_BL *codes; // 76
|
|
// ??
|
|
} Dwg_Object_BLOCKPOLARSTRETCHACTION;
|
|
|
|
typedef struct _dwg_object_BLOCKPROPERTIESTABLE
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
// ??
|
|
} Dwg_Object_BLOCKPROPERTIESTABLE;
|
|
|
|
typedef struct _dwg_object_BLOCKPROPERTIESTABLEGRIP
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKGRIP_fields;
|
|
} Dwg_Object_BLOCKPROPERTIESTABLEGRIP;
|
|
|
|
typedef struct _dwg_object_BLOCKREPRESENTATION
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BS flag;
|
|
BITCODE_H block;
|
|
} Dwg_Object_BLOCKREPRESENTATION;
|
|
|
|
typedef struct _dwg_object_BLOCKROTATEACTION
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKACTION_WITHBASEPT_fields(3);
|
|
} Dwg_Object_BLOCKROTATEACTION;
|
|
|
|
typedef struct _dwg_object_BLOCKROTATIONGRIP
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKGRIP_fields;
|
|
} Dwg_Object_BLOCKROTATIONGRIP;
|
|
|
|
typedef struct _dwg_object_BLOCKROTATIONPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCK2PTPARAMETER_fields;
|
|
BITCODE_3BD def_base_angle_pt;
|
|
BITCODE_T angle_name; /*!< DXF 305 */
|
|
BITCODE_T angle_desc; /*!< DXF 306 */
|
|
BITCODE_BD angle; /*!< DXF 306 */
|
|
Dwg_BLOCKPARAMVALUESET angle_value_set;
|
|
//BITCODE_3BD base_angle_pt;
|
|
} Dwg_Object_BLOCKROTATIONPARAMETER;
|
|
|
|
typedef struct _dwg_object_BLOCKSCALEACTION
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKACTION_WITHBASEPT_fields(5);
|
|
} Dwg_Object_BLOCKSCALEACTION;
|
|
|
|
typedef struct _dwg_BLOCKSTRETCHACTION_handles {
|
|
struct _dwg_object_BLOCKSTRETCHACTION *parent;
|
|
BITCODE_H hdl; // 331
|
|
BITCODE_BS shrt; // 74
|
|
BITCODE_BL long1; // 94
|
|
BITCODE_BL long2; // 94
|
|
} Dwg_BLOCKSTRETCHACTION_handles;
|
|
|
|
typedef struct _dwg_BLOCKSTRETCHACTION_codes {
|
|
struct _dwg_object_BLOCKSTRETCHACTION *parent;
|
|
BITCODE_BL bl95; // 95
|
|
BITCODE_BS bs76; // 76
|
|
BITCODE_BL bl94; // 94
|
|
} Dwg_BLOCKSTRETCHACTION_codes;
|
|
|
|
typedef struct _dwg_object_BLOCKSTRETCHACTION
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKACTION_fields;
|
|
Dwg_BLOCKACTION_connectionpts conn_pts[2]; /*!< DXF 92-93, 301-302 */
|
|
BITCODE_BL num_pts; // 72
|
|
BITCODE_2RD *pts; // 10
|
|
BITCODE_BL num_hdls; // 72
|
|
Dwg_BLOCKSTRETCHACTION_handles *hdls; /*!< DXF 331, 74, 94, 94 */
|
|
BITCODE_BL num_codes; // 75
|
|
Dwg_BLOCKSTRETCHACTION_codes *codes; /*!< DXF 95, 76, 94 */
|
|
BLOCKACTION_doubles_fields;
|
|
} Dwg_Object_BLOCKSTRETCHACTION;
|
|
|
|
typedef struct _dwg_object_BLOCKUSERPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCK1PTPARAMETER_fields;
|
|
BITCODE_BS flag; /*!< DXF 90 */
|
|
BITCODE_H assocvariable; /*!< DXF 305 */
|
|
BITCODE_T expr; /*!< DXF 301 */
|
|
Dwg_EvalVariant value;
|
|
BITCODE_BS type; /*!< DXF 170 (already value.code)? */
|
|
} Dwg_Object_BLOCKUSERPARAMETER;
|
|
|
|
typedef struct _dwg_object_BLOCKXYGRIP
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCKGRIP_fields;
|
|
} Dwg_Object_BLOCKXYGRIP;
|
|
|
|
typedef struct _dwg_object_BLOCKXYPARAMETER
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BLOCK2PTPARAMETER_fields;
|
|
BITCODE_T x_label; // DXF 305
|
|
BITCODE_T x_label_desc; // DXF 306
|
|
BITCODE_T y_label; // DXF 307
|
|
BITCODE_T y_label_desc; // DXF 308
|
|
BITCODE_BD x_value; // DXF 141
|
|
BITCODE_BD y_value; // DXF 142
|
|
Dwg_BLOCKPARAMVALUESET x_value_set;
|
|
Dwg_BLOCKPARAMVALUESET y_value_set;
|
|
} Dwg_Object_BLOCKXYPARAMETER;
|
|
|
|
typedef struct _dwg_object_DYNAMICBLOCKPROXYNODE
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
Dwg_EvalExpr evalexpr;
|
|
// ??
|
|
} Dwg_Object_DYNAMICBLOCKPROXYNODE;
|
|
|
|
typedef struct _dwg_POINTCLOUD_IntensityStyle
|
|
{
|
|
struct _dwg_entity_POINTCLOUD *parent;
|
|
BITCODE_BD min_intensity; /* DXF 40 */
|
|
BITCODE_BD max_intensity; /* DXF 41 */
|
|
BITCODE_BD intensity_low_treshold; /* DXF 42 */
|
|
BITCODE_BD intensity_high_treshold; /* DXF 43 */
|
|
} Dwg_POINTCLOUD_IntensityStyle;
|
|
|
|
typedef struct _dwg_POINTCLOUD_Clippings
|
|
{
|
|
struct _dwg_entity_POINTCLOUD *parent;
|
|
BITCODE_B is_inverted;
|
|
BITCODE_BS type;
|
|
BITCODE_BL num_vertices;
|
|
BITCODE_2RD *vertices;
|
|
BITCODE_BD z_min;
|
|
BITCODE_BD z_max;
|
|
} Dwg_POINTCLOUD_Clippings;
|
|
|
|
typedef struct _dwg_POINTCLOUDEX_Croppings
|
|
{
|
|
struct _dwg_entity_POINTCLOUDEX *parent;
|
|
BITCODE_BS type;
|
|
BITCODE_B is_inside;
|
|
BITCODE_B is_inverted;
|
|
BITCODE_3BD crop_plane;
|
|
BITCODE_3BD crop_x_dir;
|
|
BITCODE_3BD crop_y_dir;
|
|
BITCODE_BL num_pts;
|
|
BITCODE_3BD *pts;
|
|
} Dwg_POINTCLOUDEX_Croppings;
|
|
|
|
typedef struct _dwg_entity_POINTCLOUD
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
BITCODE_BS class_version; // 1 or 2 r2013+, DXF 70
|
|
BITCODE_3BD origin; /*!< DXF 10 */
|
|
BITCODE_T saved_filename; /* DXF 1 */
|
|
BITCODE_BL num_source_files; /* DXF 90 */
|
|
BITCODE_T *source_files; /*!< DXF 2 */
|
|
BITCODE_3BD extents_min; /*!< DXF 11 */
|
|
BITCODE_3BD extents_max; /*!< DXF 12 */
|
|
BITCODE_RLL numpoints; /*!< DXF 92 */
|
|
BITCODE_T ucs_name; /*!< DXF 3 */
|
|
BITCODE_3BD ucs_origin; /*!< DXF 13 */
|
|
BITCODE_3BD ucs_x_dir; /*!< DXF 210 */
|
|
BITCODE_3BD ucs_y_dir; /*!< DXF 211 */
|
|
BITCODE_3BD ucs_z_dir; /*!< DXF 212 */
|
|
// r2013+:
|
|
BITCODE_H pointclouddef; /*!< DXF 330 */
|
|
BITCODE_H reactor; /*!< DXF 360 */
|
|
BITCODE_B show_intensity; /*!< DXF ? */
|
|
BITCODE_BS intensity_scheme; /*!< DXF 71 */
|
|
Dwg_POINTCLOUD_IntensityStyle intensity_style;
|
|
BITCODE_B show_clipping; /*!< DXF ? */
|
|
BITCODE_BL num_clippings; /*!< DXF ? */
|
|
Dwg_POINTCLOUD_Clippings *clippings;
|
|
} Dwg_Entity_POINTCLOUD;
|
|
|
|
typedef struct _dwg_entity_POINTCLOUDEX
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
BITCODE_BS class_version; // 1, DXF 70
|
|
BITCODE_3BD extents_min; /*!< DXF 10 */
|
|
BITCODE_3BD extents_max; /*!< DXF 11 */
|
|
BITCODE_3BD ucs_origin; /*!< DXF 13 */
|
|
BITCODE_3BD ucs_x_dir; /*!< DXF 210 */
|
|
BITCODE_3BD ucs_y_dir; /*!< DXF 211 */
|
|
BITCODE_3BD ucs_z_dir; /*!< DXF 212 */
|
|
BITCODE_B is_locked; /*!< DXF 290 */
|
|
BITCODE_H pointclouddefex; /*!< DXF 330 */
|
|
BITCODE_H reactor; /*!< DXF 360 */
|
|
BITCODE_T name; /* DXF 1 */
|
|
BITCODE_B show_intensity; /*!< DXF 291 */
|
|
|
|
BITCODE_BS stylization_type; /*!< DXF 71 */
|
|
BITCODE_T intensity_colorscheme; /*!< ? DXF 1 */
|
|
BITCODE_T cur_colorscheme; /*!< DXF 1 */
|
|
BITCODE_T classification_colorscheme; /*!< ? DXF 1 */
|
|
BITCODE_BD elevation_min; /* DXF 40 */
|
|
BITCODE_BD elevation_max; /* DXF 41 */
|
|
BITCODE_BL intensity_min; /* DXF 90 */
|
|
BITCODE_BL intensity_max; /* DXF 91 */
|
|
BITCODE_BS intensity_out_of_range_behavior; /* DXF 70 */
|
|
BITCODE_BS elevation_out_of_range_behavior; /* DXF 71 */
|
|
BITCODE_B elevation_apply_to_fixed_range; /* DXF 292 */
|
|
BITCODE_B intensity_as_gradient; /* DXF 293 */
|
|
BITCODE_B elevation_as_gradient; /* DXF 294 */
|
|
BITCODE_B show_cropping; /*!< DXF 295 */
|
|
BITCODE_BL unknown_bl0; /*!< ? DXF 93 */
|
|
BITCODE_BL unknown_bl1; /*!< ? DXF 93 */
|
|
BITCODE_BL num_croppings; /*!< DXF 92 */
|
|
Dwg_POINTCLOUDEX_Croppings *croppings;
|
|
} Dwg_Entity_POINTCLOUDEX;
|
|
|
|
typedef struct _dwg_object_POINTCLOUDDEF
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL class_version; // 1 or 2 r2013+, DXF 90
|
|
BITCODE_T source_filename; /* DXF 1 */
|
|
BITCODE_B is_loaded; /* DXF 280 */
|
|
BITCODE_RLL numpoints; /*!< DXF 91 (hi) + 92 (lo) / 160 */
|
|
BITCODE_3BD extents_min; /*!< DXF 10 */
|
|
BITCODE_3BD extents_max; /*!< DXF 11 */
|
|
} Dwg_Object_POINTCLOUDDEF;
|
|
|
|
typedef struct _dwg_object_POINTCLOUDDEFEX
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL class_version; // 1 or 2 r2013+, DXF 90
|
|
BITCODE_T source_filename; /* DXF 1 */
|
|
BITCODE_B is_loaded; /* DXF 280 */
|
|
BITCODE_RLL numpoints; /*!< DXF 169 */
|
|
BITCODE_3BD extents_min; /*!< DXF 10 */
|
|
BITCODE_3BD extents_max; /*!< DXF 11 */
|
|
} Dwg_Object_POINTCLOUDDEFEX;
|
|
|
|
typedef struct _dwg_object_POINTCLOUDDEF_REACTOR
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL class_version; // 1
|
|
} Dwg_Object_POINTCLOUDDEF_REACTOR;
|
|
|
|
typedef struct _dwg_object_POINTCLOUDDEF_REACTOR_EX
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL class_version; // 1
|
|
} Dwg_Object_POINTCLOUDDEF_REACTOR_EX;
|
|
|
|
typedef struct _dwg_ColorRamp
|
|
{
|
|
struct _dwg_POINTCLOUDCOLORMAP_Ramp *parent;
|
|
// FIXME either
|
|
BITCODE_T colorscheme; // DXF 1
|
|
/// or
|
|
BITCODE_BL unknown_bl; // DXF 91
|
|
BITCODE_B unknown_b; // DXF 290
|
|
} Dwg_ColorRamp;
|
|
|
|
typedef struct _dwg_POINTCLOUDCOLORMAP_Ramp
|
|
{
|
|
struct _dwg_object_POINTCLOUDCOLORMAP *parent;
|
|
BITCODE_BS class_version; // DXF 70: 1
|
|
BITCODE_BL num_ramps; // DXF 90
|
|
Dwg_ColorRamp *ramps;
|
|
} Dwg_POINTCLOUDCOLORMAP_Ramp;
|
|
|
|
typedef struct _dwg_object_POINTCLOUDCOLORMAP
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BS class_version;
|
|
BITCODE_T def_intensity_colorscheme; /*!< DXF 1 */
|
|
BITCODE_T def_elevation_colorscheme; /*!< DXF 1 */
|
|
BITCODE_T def_classification_colorscheme; /*!< DXF 1 */
|
|
BITCODE_BL num_colorramps;
|
|
Dwg_POINTCLOUDCOLORMAP_Ramp *colorramps;
|
|
BITCODE_BL num_classification_colorramps;
|
|
Dwg_POINTCLOUDCOLORMAP_Ramp *classification_colorramps;
|
|
} Dwg_Object_POINTCLOUDCOLORMAP;
|
|
|
|
// unhandled. some subclass
|
|
typedef struct _dwg_COMPOUNDOBJECTID
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_B has_object;
|
|
BITCODE_T name;
|
|
BITCODE_H object;
|
|
} Dwg_COMPOUNDOBJECTID;
|
|
|
|
// ODA Arx
|
|
//typedef Dwg_Object_LAYERFILTER Dwg_Object_PARTIAL_VIEWING_FILTER;
|
|
|
|
typedef struct _dwg_PARTIAL_VIEWING_INDEX_Entry
|
|
{
|
|
struct _dwg_object_PARTIAL_VIEWING_INDEX *parent;
|
|
BITCODE_3BD extents_min;
|
|
BITCODE_3BD extents_max;
|
|
BITCODE_H object;
|
|
} Dwg_PARTIAL_VIEWING_INDEX_Entry;
|
|
|
|
typedef struct _dwg_object_PARTIAL_VIEWING_INDEX
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
BITCODE_BL num_entries;
|
|
BITCODE_B has_entries;
|
|
Dwg_PARTIAL_VIEWING_INDEX_Entry *entries;
|
|
} Dwg_Object_PARTIAL_VIEWING_INDEX;
|
|
|
|
|
|
/**
|
|
-----------------------------------
|
|
*/
|
|
|
|
/**
|
|
Unknown Class entity, a blob
|
|
*/
|
|
typedef struct _dwg_entity_UNKNOWN_ENT
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
} Dwg_Entity_UNKNOWN_ENT;
|
|
|
|
/**
|
|
Unknown Class object, a blob
|
|
*/
|
|
typedef struct _dwg_object_UNKNOWN_OBJ
|
|
{
|
|
struct _dwg_object_object *parent;
|
|
} Dwg_Object_UNKNOWN_OBJ;
|
|
|
|
/**
|
|
REPEAT (none/5) entity
|
|
*/
|
|
typedef struct _dwg_entity_REPEAT
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
} Dwg_Entity_REPEAT;
|
|
|
|
/**
|
|
ENDREP (none/6) entity
|
|
*/
|
|
typedef struct _dwg_entity_ENDREP
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_RS numcols; // DXF 70
|
|
BITCODE_RS numrows; // DXF 71
|
|
BITCODE_RD colspacing; // DXF 40
|
|
BITCODE_RD rowspacing; // DXF 41
|
|
} Dwg_Entity_ENDREP;
|
|
|
|
/**
|
|
LOAD (none/10) entity
|
|
*/
|
|
typedef struct _dwg_entity_LOAD
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_TV file_name;
|
|
} Dwg_Entity_LOAD;
|
|
|
|
/**
|
|
JUMP (none/18) entity
|
|
*/
|
|
typedef struct _dwg_entity_JUMP
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_RL jump_address_raw;
|
|
BITCODE_RL jump_address;
|
|
Dwg_Entity_Sections jump_entity_section;
|
|
} Dwg_Entity_JUMP;
|
|
|
|
/**
|
|
3DLINE (none/21) entity
|
|
*/
|
|
typedef struct _dwg_entity_3DLINE
|
|
{
|
|
struct _dwg_object_entity *parent;
|
|
|
|
BITCODE_3RD start; // DXF 10|20|30
|
|
BITCODE_3RD end; // DXF 11|21|31
|
|
BITCODE_3RD extrusion; // DXF 210
|
|
BITCODE_RD thickness; // DXF 39
|
|
} Dwg_Entity__3DLINE;
|
|
|
|
/* OBJECTS - END ************************************************************/
|
|
|
|
/**
|
|
Extended entity data: dxf group - value pairs, similar to xdata
|
|
*/
|
|
#pragma pack(1)
|
|
typedef struct _dwg_entity_eed_data
|
|
{
|
|
BITCODE_RC code;
|
|
union eed_data_t {
|
|
struct { /* 0 (1000) string */
|
|
BITCODE_RS length; /* RC */
|
|
unsigned short codepage:15; /* RS_LE */
|
|
unsigned short is_tu:1;
|
|
char string[1]; /* inlined */
|
|
} eed_0;
|
|
struct { /* R2007+ 0 (1000) string */
|
|
BITCODE_RS length;
|
|
unsigned short _padding:15;
|
|
unsigned short is_tu:1;
|
|
DWGCHAR string[1]; /* inlined */
|
|
} eed_0_r2007;
|
|
struct { /* 1 (1001) handle, not in data */
|
|
char invalid[1]; // set the eed[0].handle to the used APPID instead
|
|
BITCODE_RS appid_index;
|
|
} eed_1;
|
|
struct { /* 2 (1002) "{" => 0 open, or "}" => 1 close */
|
|
BITCODE_RC close;
|
|
} eed_2;
|
|
struct { /* 3 (1003) layer (8-byte handle value) */
|
|
BITCODE_RLL layer;
|
|
} eed_3;
|
|
struct { /* 4 (1004) binary */
|
|
BITCODE_RC length;
|
|
unsigned char data[1]; // inlined
|
|
} eed_4;
|
|
struct { /* 5 (1005) entity */
|
|
BITCODE_RLL entity;
|
|
} eed_5;
|
|
struct { /* 10-13 point */
|
|
BITCODE_3RD point;
|
|
} eed_10;
|
|
struct { /* 40-42 real */
|
|
BITCODE_RD real;
|
|
} eed_40;
|
|
struct { /* 70 short int */
|
|
BITCODE_RS rs;
|
|
} eed_70;
|
|
struct { /* 71 long int */
|
|
BITCODE_RL rl;
|
|
} eed_71;
|
|
} u;
|
|
} Dwg_Eed_Data;
|
|
#pragma pack()
|
|
|
|
/**
|
|
Extended entity data
|
|
*/
|
|
typedef struct _dwg_entity_eed
|
|
{
|
|
BITCODE_BS size;
|
|
Dwg_Handle handle;
|
|
Dwg_Eed_Data *data;
|
|
BITCODE_TF raw; /* a binary copy of the data */
|
|
} Dwg_Eed;
|
|
|
|
enum {
|
|
EXTRA_R11_UNKNOWN_1 = 1,
|
|
EXTRA_R11_HAS_EED = 2,
|
|
EXTRA_R11_HAS_VIEWPORT = 4,
|
|
EXTRA_R11_UNKNOWN_8 = 8,
|
|
EXTRA_R11_UNKNOWN_16 = 16,
|
|
EXTRA_R11_UNKNOWN_32 = 32,
|
|
EXTRA_R11_UNKNOWN_64 = 64,
|
|
EXTRA_R11_UNKNOWN_128 = 128,
|
|
};
|
|
|
|
enum {
|
|
FLAG_R11_HAS_COLOR = 1,
|
|
FLAG_R11_HAS_LTYPE = 2,
|
|
FLAG_R11_HAS_ELEVATION = 4,
|
|
FLAG_R11_HAS_THICKNESS = 8,
|
|
FLAG_R11_HAS_UNKNOWN_16 = 16,
|
|
FLAG_R11_HAS_HANDLING = 32, // 0x20
|
|
FLAG_R11_HAS_PSPACE = 64, // 0x40
|
|
FLAG_R11_HAS_ATTRIBS = 128,
|
|
};
|
|
|
|
enum {
|
|
FLAG_R11_DIMENSION_LINEAR = 0, // ie rotated, horizontal or vertical
|
|
FLAG_R11_DIMENSION_ALIGNED = 1,
|
|
FLAG_R11_DIMENSION_ANG2LN = 2,
|
|
FLAG_R11_DIMENSION_DIAMETER = 3,
|
|
FLAG_R11_DIMENSION_RADIUS = 4,
|
|
FLAG_R11_DIMENSION_ANG3PT = 5,
|
|
FLAG_R11_DIMENSION_ORDINATE = 6,
|
|
FLAG_R11_DIMENSION_ORDINATE_TYPE = 64, // x-type if set, else y
|
|
FLAG_R11_DIMENSION_TEXT_POSITIONED = 128, // text not at default position
|
|
};
|
|
|
|
enum {
|
|
// 1
|
|
// 2
|
|
// 4
|
|
// 8
|
|
OPTS_R11_XREF_DEP = 16,
|
|
OPTS_R11_XREF_REF = 32,
|
|
OPTS_R11_XREF_RESOLVED = 64,
|
|
OPTS_R11_XDATA = 128, //?
|
|
};
|
|
|
|
enum {
|
|
OPTS_R11_3DFACE_HAS_Z_FIRST = 1,
|
|
OPTS_R11_3DFACE_HAS_Z_SECOND = 2,
|
|
OPTS_R11_3DFACE_HAS_Z_THIRD = 4,
|
|
OPTS_R11_3DFACE_HAS_Z_FOURTH = 8,
|
|
};
|
|
|
|
enum {
|
|
OPTS_R11_3DLINE_HAS_Z_FIRST = 1,
|
|
OPTS_R11_3DLINE_HAS_Z_SECOND = 2,
|
|
};
|
|
|
|
enum {
|
|
OPTS_R11_ARC_HAS_EXTRUSION = 1,
|
|
};
|
|
|
|
enum {
|
|
OPTS_R11_ATTDEF_UNKNOWN_1 = 1,
|
|
OPTS_R11_ATTDEF_HAS_ROTATION = 2,
|
|
OPTS_R11_ATTDEF_HAS_WIDTH_FACTOR = 4,
|
|
OPTS_R11_ATTDEF_HAS_OBLIQUE_ANGLE = 8,
|
|
OPTS_R11_ATTDEF_HAS_STYLE = 16,
|
|
OPTS_R11_ATTDEF_HAS_GENERATION = 32,
|
|
OPTS_R11_ATTDEF_HAS_HORIZ_ALIGNMENT = 64,
|
|
OPTS_R11_ATTDEF_HAS_ALIGNMENT_POINT = 128,
|
|
OPTS_R11_ATTDEF_HAS_EXTRUSION = 0x100,
|
|
OPTS_R11_ATTDEF_HAS_VERT_ALIGNMENT = 0x200,
|
|
};
|
|
|
|
enum {
|
|
OPTS_R11_ATTRIB_UNKNOWN_1 = 1,
|
|
OPTS_R11_ATTRIB_HAS_ROTATION = 2,
|
|
OPTS_R11_ATTRIB_HAS_WIDTH_FACTOR = 4,
|
|
OPTS_R11_ATTRIB_HAS_OBLIQUE_ANGLE = 8,
|
|
OPTS_R11_ATTRIB_HAS_STYLE = 16,
|
|
OPTS_R11_ATTRIB_HAS_GENERATION = 32,
|
|
OPTS_R11_ATTRIB_HAS_HORIZ_ALIGNMENT = 64,
|
|
OPTS_R11_ATTRIB_HAS_ALIGNMENT_POINT = 128,
|
|
OPTS_R11_ATTRIB_HAS_EXTRUSION = 0x100,
|
|
OPTS_R11_ATTRIB_HAS_VERT_ALIGNMENT = 0x200,
|
|
};
|
|
|
|
enum {
|
|
OPTS_R11_BLOCK_UNKNOWN_1 = 1,
|
|
OPTS_R11_BLOCK_HAS_XREF_PNAME = 2,
|
|
OPTS_R11_BLOCK_HAS_BLOCK_NAME = 4,
|
|
};
|
|
|
|
enum {
|
|
OPTS_R11_CIRCLE_HAS_EXTRUSION = 1,
|
|
};
|
|
|
|
enum {
|
|
OPTS_R11_DIMENSION_HAS_DXF12 = 1, // Baseline, continue: clone ins_pt
|
|
OPTS_R11_DIMENSION_HAS_FLAG = 2,
|
|
OPTS_R11_DIMENSION_HAS_TEXT = 4,
|
|
OPTS_R11_DIMENSION_HAS_DXF13 = 8, // Ordinate: leader_start_pt
|
|
OPTS_R11_DIMENSION_HAS_DXF14 = 16, // Ordinate: leader_end_pt
|
|
OPTS_R11_DIMENSION_HAS_DXF15 = 32,
|
|
OPTS_R11_DIMENSION_HAS_ANGLES = 64, // Angular: line arc
|
|
OPTS_R11_DIMENSION_HAS_DXF40 = 128, // leader_len
|
|
OPTS_R11_DIMENSION_HAS_ROTATION = 256,
|
|
OPTS_R11_DIMENSION_UNKNOWN_512 = 0x200,
|
|
OPTS_R11_DIMENSION_HAS_DXF53 = 0x400, // text rotation
|
|
OPTS_R11_DIMENSION_UNKNOWN_2048 = 0x800,
|
|
OPTS_R11_DIMENSION_UNKNOWN_4096 = 0x1000,
|
|
OPTS_R11_DIMENSION_UNKNOWN_8192 = 0x2000,
|
|
OPTS_R11_DIMENSION_HAS_EXTRUSION = 0x4000,
|
|
OPTS_R11_DIMENSION_HAS_DIMSTYLE = 0x8000
|
|
};
|
|
|
|
enum {
|
|
OPTS_R11_INSERT_HAS_SCALE_X = 1,
|
|
OPTS_R11_INSERT_HAS_SCALE_Y = 2,
|
|
OPTS_R11_INSERT_HAS_ROTATION = 4,
|
|
OPTS_R11_INSERT_HAS_SCALE_Z = 8,
|
|
OPTS_R11_INSERT_HAS_NUM_COLS = 16,
|
|
OPTS_R11_INSERT_HAS_NUM_ROWS = 32,
|
|
OPTS_R11_INSERT_HAS_COL_SPACING = 64,
|
|
OPTS_R11_INSERT_HAS_ROW_SPACING = 128,
|
|
OPTS_R11_INSERT_HAS_EXTRUSION = 256,
|
|
};
|
|
|
|
enum {
|
|
OPTS_R11_LINE_HAS_EXTRUSION = 1,
|
|
};
|
|
|
|
enum {
|
|
OPTS_R11_POINT_HAS_EXTRUSION = 1,
|
|
OPTS_R11_POINT_HAS_X_ANG = 2,
|
|
};
|
|
|
|
enum {
|
|
OPTS_R11_POLYLINE_HAS_FLAG = 1,
|
|
OPTS_R11_POLYLINE_HAS_START_WIDTH = 2,
|
|
OPTS_R11_POLYLINE_HAS_END_WIDTH = 4,
|
|
OPTS_R11_POLYLINE_HAS_EXTRUSION = 8,
|
|
OPTS_R11_POLYLINE_HAS_M_VERTS = 16,
|
|
OPTS_R11_POLYLINE_HAS_N_VERTS = 32,
|
|
OPTS_R11_POLYLINE_HAS_M_DENSITY = 64,
|
|
OPTS_R11_POLYLINE_HAS_N_DENSITY = 128,
|
|
OPTS_R11_POLYLINE_HAS_CURVETYPE = 256,
|
|
OPTS_R11_POLYLINE_IN_EXTRA = 0x8000,
|
|
};
|
|
|
|
enum {
|
|
OPTS_R11_SHAPE_HAS_ROTATION = 1,
|
|
OPTS_R11_SHAPE_HAS_LOAD_NUM = 2,
|
|
OPTS_R11_SHAPE_HAS_WIDTH_FACTOR = 4,
|
|
OPTS_R11_SHAPE_HAS_OBLIQUE_ANGLE = 8,
|
|
};
|
|
|
|
enum {
|
|
OPTS_R11_SOLID_HAS_EXTRUSION = 1,
|
|
};
|
|
|
|
enum {
|
|
OPTS_R11_TEXT_HAS_ROTATION = 1,
|
|
OPTS_R11_TEXT_HAS_WIDTH_FACTOR = 2,
|
|
OPTS_R11_TEXT_HAS_OBLIQUE_ANGLE = 4,
|
|
OPTS_R11_TEXT_HAS_STYLE = 8,
|
|
OPTS_R11_TEXT_HAS_GENERATION = 16,
|
|
OPTS_R11_TEXT_HAS_HORIZ_ALIGNMENT = 32,
|
|
OPTS_R11_TEXT_HAS_ALIGNMENT_POINT = 64,
|
|
OPTS_R11_TEXT_HAS_EXTRUSION = 128,
|
|
OPTS_R11_TEXT_ALIGNED_VERT_TO = 256,
|
|
};
|
|
|
|
enum {
|
|
OPTS_R11_VERTEX_HAS_START_WIDTH = 1,
|
|
OPTS_R11_VERTEX_HAS_END_WIDTH = 2,
|
|
OPTS_R11_VERTEX_HAS_BULGE = 4,
|
|
OPTS_R11_VERTEX_HAS_FLAG = 8,
|
|
OPTS_R11_VERTEX_HAS_TANGENT_DIR = 16,
|
|
OPTS_R11_VERTEX_HAS_INDEX1 = 0x20,
|
|
OPTS_R11_VERTEX_HAS_INDEX2 = 0x40,
|
|
OPTS_R11_VERTEX_HAS_INDEX3 = 0x80,
|
|
OPTS_R11_VERTEX_UNKNOWN_256 = 0x100,
|
|
OPTS_R11_VERTEX_HAS_INDEX4 = 0x200,
|
|
OPTS_R11_VERTEX_UNKNOWN_1024 = 0x400,
|
|
OPTS_R11_VERTEX_UNKNOWN_2048 = 0x800,
|
|
OPTS_R11_VERTEX_UNKNOWN_4096 = 0x1000,
|
|
OPTS_R11_VERTEX_UNKNOWN_8192 = 0x2000,
|
|
OPTS_R11_VERTEX_HAS_NOT_X_Y = 0x4000, // only seen with n-mesh
|
|
};
|
|
|
|
enum {
|
|
FLAG_TABLE_IS_XREF_REF = 16, // is externally dependent
|
|
FLAG_TABLE_IS_XREF_RESOLVED = 32,
|
|
FLAG_TABLE_IS_XREF_DEP = 64, // is referenced (used)
|
|
FLAG_TABLE_IS_REMOVED = 128,
|
|
};
|
|
|
|
enum {
|
|
FLAG_BLOCK_ANONYMOUS = 1,
|
|
FLAG_BLOCK_HAS_ATTRIBS = 2,
|
|
FLAG_BLOCK_IS_EXT_REF = 4,
|
|
FLAG_BLOCK_IS_XREF_OVERLAY = 8,
|
|
};
|
|
|
|
enum {
|
|
FLAG_ATTDEF_INVISIBLE = 1,
|
|
FLAG_ATTDEF_CONSTANT = 2,
|
|
FLAG_ATTDEF_VERIFY = 4,
|
|
FLAG_ATTDEF_PRESET = 8, // no prompt during insert
|
|
};
|
|
|
|
enum {
|
|
FLAG_ATTRIB_INVISIBLE = 1,
|
|
FLAG_ATTRIB_CONSTANT = 2,
|
|
FLAG_ATTRIB_VERIFY = 4,
|
|
FLAG_ATTRIB_PRESET = 8, // no prompt during insert
|
|
};
|
|
|
|
enum {
|
|
FLAG_POLYLINE_CLOSED = 1, // or polygon mesh closed in the M direction
|
|
FLAG_POLYLINE_CURVE_FIT = 2,
|
|
FLAG_POLYLINE_SPLINE_FIT = 4,
|
|
FLAG_POLYLINE_3D = 8,
|
|
FLAG_POLYLINE_MESH = 16,
|
|
FLAG_POLYLINE_MESH_CLOSED = 32, // closed in the N direction
|
|
FLAG_POLYLINE_PFACE_MESH = 64,
|
|
FLAG_POLYLINE_LT_PATTERN_CONTINUES = 128,
|
|
};
|
|
|
|
enum {
|
|
LTYPE_SHAPE_FLAG_ABS_ROTATION = 1,
|
|
LTYPE_SHAPE_FLAG_IS_TEXT = 2,
|
|
LTYPE_SHAPE_FLAG_IS_SHAPE = 4,
|
|
};
|
|
|
|
enum {
|
|
FLAG_LAYER_FROZEN = 1,
|
|
FLAG_LAYER_FROZEN_IN_NEW = 2,
|
|
FLAG_LAYER_LOCKED = 4,
|
|
FLAG_LAYER_PLOTFLAG = 8,
|
|
};
|
|
|
|
enum {
|
|
FLAG_STYLE_SHAPE = 1,
|
|
FLAG_STYLE_VERTICAL_TEXT = 4,
|
|
};
|
|
|
|
enum {
|
|
FLAG_VIEW_PSPACE = 1,
|
|
};
|
|
|
|
enum {
|
|
FLAG_VX_IS_ON = 1,
|
|
};
|
|
|
|
enum {
|
|
FLAG_LWPOLYLINE_HAS_EXTRUSION = 1,
|
|
FLAG_LWPOLYLINE_HAS_THICKNESS = 2,
|
|
FLAG_LWPOLYLINE_HAS_CONSTWIDTH = 4,
|
|
FLAG_LWPOLYLINE_HAS_ELEVATION = 8,
|
|
FLAG_LWPOLYLINE_HAS_NUM_BULGES = 16,
|
|
FLAG_LWPOLYLINE_HAS_NUM_WIDTHS = 32,
|
|
FLAG_LWPOLYLINE_UNKNOWN_64 = 64,
|
|
FLAG_LWPOLYLINE_UNKNOWN_128 = 128,
|
|
FLAG_LWPOLYLINE_PLINEGEN = 256,
|
|
FLAG_LWPOLYLINE_CLOSED = 512,
|
|
FLAG_LWPOLYLINE_VERTEXIDCOUNT = 1024,
|
|
};
|
|
|
|
enum {
|
|
FLAG_VERTEX_EXTRA_VERTEX = 1,
|
|
FLAG_VERTEX_CURVE_FIT = 2,
|
|
FLAG_VERTEX_UNUSED_4 = 4, // never set
|
|
FLAG_VERTEX_SPLINE_FIT = 8,
|
|
FLAG_VERTEX_SPLINE_FRAME_CONTROL_POINT = 16,
|
|
FLAG_VERTEX_3D = 32,
|
|
FLAG_VERTEX_MESH = 64,
|
|
FLAG_VERTEX_PFACE_MESH = 128,
|
|
};
|
|
|
|
enum {
|
|
TEXT_GENERATION_BACKWARDS = 2, // mirrored in X
|
|
TEXT_GENERATION_UPSIDE_DOWN = 4, // mirrored in Y
|
|
};
|
|
|
|
enum {
|
|
HORIZ_ALIGNMENT_LEFT = 0,
|
|
HORIZ_ALIGNMENT_CENTER = 1,
|
|
HORIZ_ALIGNMENT_RIGHT = 2,
|
|
HORIZ_ALIGNMENT_ALIGNED = 3,
|
|
HORIZ_ALIGNMENT_MIDDLE = 4,
|
|
HORIZ_ALIGNMENT_FIT = 5,
|
|
};
|
|
|
|
enum {
|
|
VERT_ALIGNMENT_BASELINE = 0,
|
|
VERT_ALIGNMENT_BOTTOM = 1,
|
|
VERT_ALIGNMENT_MIDDLE = 2,
|
|
VERT_ALIGNMENT_TOP = 3,
|
|
};
|
|
|
|
enum {
|
|
MLINE_JUSTIFICATION_TOP = 0,
|
|
MLINE_JUSTIFICATION_MIDDLE = 1,
|
|
MLINE_JUSTIFICATION_BOTTOM = 2,
|
|
};
|
|
|
|
|
|
enum {
|
|
POLYLINE_CURVETYPE_DEFAULT = 0,
|
|
// 1 with a POLYLINE_3D (undocumented)
|
|
POLYLINE_CURVETYPE_QUADR_BSPLINE = 5,
|
|
POLYLINE_CURVETYPE_CUBIC_BSPLINE = 6,
|
|
POLYLINE_CURVETYPE_BEZIER_SURFACE = 8,
|
|
};
|
|
|
|
enum {
|
|
LEADER_PATHTYPE_STRAIGHT = 0,
|
|
LEADER_PATHTYPE_SPLINE = 1,
|
|
};
|
|
enum {
|
|
LEADER_ANNOTTYPE_MTEXT = 0,
|
|
LEADER_ANNOTTYPE_TOLERANCE = 1,
|
|
LEADER_ANNOTTYPE_INSERT = 2,
|
|
LEADER_ANNOTTYPE_NO_ANNOT = 3, // default
|
|
};
|
|
|
|
enum {
|
|
MLINE_FLAGS_HAS_VERTEX = 1,
|
|
MLINE_FLAGS_CLOSED = 2,
|
|
MLINE_FLAGS_SUPPRESS_START_CAPS = 4,
|
|
MLINE_FLAGS_SUPPRESS_END_CAPS = 8,
|
|
};
|
|
enum {
|
|
LIGHT_TYPE_DISTANT = 1,
|
|
LIGHT_TYPE_POINT = 2,
|
|
LIGHT_TYPE_SPOT = 3,
|
|
};
|
|
enum {
|
|
LIGHT_ATTENUATION_TYPE_NONE = 0,
|
|
LIGHT_ATTENUATION_TYPE_INV_LINEAR = 1,
|
|
LIGHT_ATTENUATION_TYPE_INV_SQUARE = 2,
|
|
};
|
|
enum {
|
|
LIGHT_EXTLIGHT_SHAPE_LINEAR = 0,
|
|
LIGHT_EXTLIGHT_SHAPE_RECT = 1,
|
|
LIGHT_EXTLIGHT_SHAPE_DISK = 2,
|
|
LIGHT_EXTLIGHT_SHAPE_CYLINDER = 3,
|
|
LIGHT_EXTLIGHT_SHAPE_SPHERE = 4,
|
|
};
|
|
|
|
enum {
|
|
_3DFACE_INVISIBLE_EDGE1 = 1,
|
|
_3DFACE_INVISIBLE_EDGE2 = 2,
|
|
_3DFACE_INVISIBLE_EDGE3 = 4,
|
|
_3DFACE_INVISIBLE_EDGE4 = 8,
|
|
};
|
|
|
|
/**
|
|
Common entity attributes
|
|
*/
|
|
typedef struct _dwg_object_entity
|
|
{
|
|
BITCODE_BL objid; /*!< link to the parent */
|
|
union
|
|
{
|
|
Dwg_Entity_UNUSED *UNUSED;
|
|
Dwg_DIMENSION_common *DIMENSION_common;
|
|
// clang-format off
|
|
/* Start auto-generated entity-union. Do not touch. */
|
|
Dwg_Entity__3DFACE *_3DFACE;
|
|
Dwg_Entity__3DSOLID *_3DSOLID;
|
|
Dwg_Entity_ARC *ARC;
|
|
Dwg_Entity_ATTDEF *ATTDEF;
|
|
Dwg_Entity_ATTRIB *ATTRIB;
|
|
Dwg_Entity_BLOCK *BLOCK;
|
|
Dwg_Entity_BODY *BODY;
|
|
Dwg_Entity_CIRCLE *CIRCLE;
|
|
Dwg_Entity_DIMENSION_ALIGNED *DIMENSION_ALIGNED;
|
|
Dwg_Entity_DIMENSION_ANG2LN *DIMENSION_ANG2LN;
|
|
Dwg_Entity_DIMENSION_ANG3PT *DIMENSION_ANG3PT;
|
|
Dwg_Entity_DIMENSION_DIAMETER *DIMENSION_DIAMETER;
|
|
Dwg_Entity_DIMENSION_LINEAR *DIMENSION_LINEAR;
|
|
Dwg_Entity_DIMENSION_ORDINATE *DIMENSION_ORDINATE;
|
|
Dwg_Entity_DIMENSION_RADIUS *DIMENSION_RADIUS;
|
|
Dwg_Entity_ELLIPSE *ELLIPSE;
|
|
Dwg_Entity_ENDBLK *ENDBLK;
|
|
Dwg_Entity_INSERT *INSERT;
|
|
Dwg_Entity_LEADER *LEADER;
|
|
Dwg_Entity_LINE *LINE;
|
|
Dwg_Entity_LOAD *LOAD;
|
|
Dwg_Entity_MINSERT *MINSERT;
|
|
Dwg_Entity_MLINE *MLINE;
|
|
Dwg_Entity_MTEXT *MTEXT;
|
|
Dwg_Entity_OLEFRAME *OLEFRAME;
|
|
Dwg_Entity_POINT *POINT;
|
|
Dwg_Entity_POLYLINE_2D *POLYLINE_2D;
|
|
Dwg_Entity_POLYLINE_3D *POLYLINE_3D;
|
|
Dwg_Entity_POLYLINE_MESH *POLYLINE_MESH;
|
|
Dwg_Entity_POLYLINE_PFACE *POLYLINE_PFACE;
|
|
Dwg_Entity_PROXY_ENTITY *PROXY_ENTITY;
|
|
Dwg_Entity_RAY *RAY;
|
|
Dwg_Entity_REGION *REGION;
|
|
Dwg_Entity_SEQEND *SEQEND;
|
|
Dwg_Entity_SHAPE *SHAPE;
|
|
Dwg_Entity_SOLID *SOLID;
|
|
Dwg_Entity_SPLINE *SPLINE;
|
|
Dwg_Entity_TEXT *TEXT;
|
|
Dwg_Entity_TOLERANCE *TOLERANCE;
|
|
Dwg_Entity_TRACE *TRACE;
|
|
Dwg_Entity_UNKNOWN_ENT *UNKNOWN_ENT;
|
|
Dwg_Entity_VERTEX_2D *VERTEX_2D;
|
|
Dwg_Entity_VERTEX_3D *VERTEX_3D;
|
|
Dwg_Entity_VERTEX_MESH *VERTEX_MESH;
|
|
Dwg_Entity_VERTEX_PFACE *VERTEX_PFACE;
|
|
Dwg_Entity_VERTEX_PFACE_FACE *VERTEX_PFACE_FACE;
|
|
Dwg_Entity_VIEWPORT *VIEWPORT;
|
|
Dwg_Entity_XLINE *XLINE;
|
|
/* untyped > 500 */
|
|
Dwg_Entity__3DLINE *_3DLINE;
|
|
Dwg_Entity_CAMERA *CAMERA;
|
|
Dwg_Entity_DGNUNDERLAY *DGNUNDERLAY;
|
|
Dwg_Entity_DWFUNDERLAY *DWFUNDERLAY;
|
|
Dwg_Entity_ENDREP *ENDREP;
|
|
Dwg_Entity_HATCH *HATCH;
|
|
Dwg_Entity_IMAGE *IMAGE;
|
|
Dwg_Entity_JUMP *JUMP;
|
|
Dwg_Entity_LIGHT *LIGHT;
|
|
Dwg_Entity_LWPOLYLINE *LWPOLYLINE;
|
|
Dwg_Entity_MESH *MESH;
|
|
Dwg_Entity_MULTILEADER *MULTILEADER;
|
|
Dwg_Entity_OLE2FRAME *OLE2FRAME;
|
|
Dwg_Entity_PDFUNDERLAY *PDFUNDERLAY;
|
|
Dwg_Entity_REPEAT *REPEAT;
|
|
Dwg_Entity_SECTIONOBJECT *SECTIONOBJECT;
|
|
/* unstable */
|
|
Dwg_Entity_ARC_DIMENSION *ARC_DIMENSION;
|
|
Dwg_Entity_HELIX *HELIX;
|
|
Dwg_Entity_LARGE_RADIAL_DIMENSION *LARGE_RADIAL_DIMENSION;
|
|
Dwg_Entity_LAYOUTPRINTCONFIG *LAYOUTPRINTCONFIG;
|
|
Dwg_Entity_PLANESURFACE *PLANESURFACE;
|
|
Dwg_Entity_POINTCLOUD *POINTCLOUD;
|
|
Dwg_Entity_POINTCLOUDEX *POINTCLOUDEX;
|
|
Dwg_Entity_WIPEOUT *WIPEOUT;
|
|
/* debugging */
|
|
Dwg_Entity_ALIGNMENTPARAMETERENTITY *ALIGNMENTPARAMETERENTITY;
|
|
Dwg_Entity_ARCALIGNEDTEXT *ARCALIGNEDTEXT;
|
|
Dwg_Entity_BASEPOINTPARAMETERENTITY *BASEPOINTPARAMETERENTITY;
|
|
Dwg_Entity_EXTRUDEDSURFACE *EXTRUDEDSURFACE;
|
|
Dwg_Entity_FLIPGRIPENTITY *FLIPGRIPENTITY;
|
|
Dwg_Entity_FLIPPARAMETERENTITY *FLIPPARAMETERENTITY;
|
|
Dwg_Entity_GEOPOSITIONMARKER *GEOPOSITIONMARKER;
|
|
Dwg_Entity_LINEARGRIPENTITY *LINEARGRIPENTITY;
|
|
Dwg_Entity_LINEARPARAMETERENTITY *LINEARPARAMETERENTITY;
|
|
Dwg_Entity_LOFTEDSURFACE *LOFTEDSURFACE;
|
|
Dwg_Entity_MPOLYGON *MPOLYGON;
|
|
Dwg_Entity_NAVISWORKSMODEL *NAVISWORKSMODEL;
|
|
Dwg_Entity_NURBSURFACE *NURBSURFACE;
|
|
Dwg_Entity_POINTPARAMETERENTITY *POINTPARAMETERENTITY;
|
|
Dwg_Entity_POLARGRIPENTITY *POLARGRIPENTITY;
|
|
Dwg_Entity_REVOLVEDSURFACE *REVOLVEDSURFACE;
|
|
Dwg_Entity_ROTATIONGRIPENTITY *ROTATIONGRIPENTITY;
|
|
Dwg_Entity_ROTATIONPARAMETERENTITY *ROTATIONPARAMETERENTITY;
|
|
Dwg_Entity_RTEXT *RTEXT;
|
|
Dwg_Entity_SWEPTSURFACE *SWEPTSURFACE;
|
|
Dwg_Entity_TABLE *TABLE;
|
|
Dwg_Entity_VISIBILITYGRIPENTITY *VISIBILITYGRIPENTITY;
|
|
Dwg_Entity_VISIBILITYPARAMETERENTITY *VISIBILITYPARAMETERENTITY;
|
|
Dwg_Entity_XYGRIPENTITY *XYGRIPENTITY;
|
|
Dwg_Entity_XYPARAMETERENTITY *XYPARAMETERENTITY;
|
|
/* End auto-generated entity-union */
|
|
// clang-format on
|
|
} tio;
|
|
|
|
struct _dwg_struct *dwg;
|
|
BITCODE_BL num_eed;
|
|
Dwg_Eed *eed; /* see also Dwg_Resbuf* xdata */
|
|
|
|
/* Common Entity Data */
|
|
BITCODE_B preview_exists;
|
|
BITCODE_B preview_is_proxy; /* calculated */
|
|
BITCODE_BLL preview_size; /*!< DXF 160 for bitmaps, DXF 92 for PROXY vector data.
|
|
e.g. INSERT, MULTILEADER */
|
|
BITCODE_TF preview; /*!< DXF 310 */
|
|
BITCODE_BB entmode; /*!< has no owner handle:
|
|
0 has no ownerhandle, 1 is PSPACE, 2 is MSPACE
|
|
3 has ownerhandle. */
|
|
BITCODE_BL num_reactors;
|
|
BITCODE_B is_xdic_missing; /*!< r2004+ */
|
|
BITCODE_B isbylayerlt; /*!< r13-r14 */
|
|
BITCODE_B nolinks; /*!< r13-r2000 */
|
|
BITCODE_B has_ds_data; /*!< r2013+ AcDs datastore */
|
|
BITCODE_CMC color;
|
|
BITCODE_BD ltype_scale;
|
|
BITCODE_BB ltype_flags; /*!< r2000+ */
|
|
BITCODE_BB plotstyle_flags; /*!< r2000+ */
|
|
BITCODE_BB material_flags; /*!< r2007+ */
|
|
BITCODE_RC shadow_flags; /*!< r2007+: 0 both, 1 casts, 2, receives,
|
|
3 has handle. DXF 284 */
|
|
BITCODE_B has_full_visualstyle; /*!< r2010+ */
|
|
BITCODE_B has_face_visualstyle; /*!< r2010+ */
|
|
BITCODE_B has_edge_visualstyle; /*!< r2010+ */
|
|
BITCODE_BS invisible;
|
|
BITCODE_RC linewt; /*!< r2000+, see dxf_cvt_lweight() */
|
|
|
|
/* preR13 entity fields. TODO a union with above */
|
|
BITCODE_RC flag_r11;
|
|
BITCODE_RS opts_r11;
|
|
BITCODE_RS extra_r11;
|
|
BITCODE_RCd color_r11;
|
|
BITCODE_RD elevation_r11; // TODO: move to the entities
|
|
BITCODE_RD thickness_r11; // TODO: move to the entities
|
|
BITCODE_H viewport; // if in paperspace
|
|
/* preR13 in the obj: eed, elevation/pt.z, thickness, paper */
|
|
|
|
/* Common Entity Handle Data */
|
|
BITCODE_BL __iterator;
|
|
BITCODE_H ownerhandle; /*!< code 5, DXF 330 mspace, pspace or owner of subentity */
|
|
BITCODE_H* reactors; /*!< r13+ code 4, DXF 102 {ACAD_XDICTIONARY, 330 */
|
|
BITCODE_H xdicobjhandle; /*!< r13+ code 3, DXF 102 {ACAD_REACTORS, 360 */
|
|
BITCODE_H prev_entity; /*!< r13-r2000 code 4 */
|
|
BITCODE_H next_entity; /*!< r13-r2000 code 4 */
|
|
BITCODE_H layer; /*!< code 5, DXF 8 */
|
|
BITCODE_H ltype; /*!< code 5, DXF 6 */
|
|
BITCODE_H material; /*!< r2007+ code 5, DXF 347 */
|
|
BITCODE_H shadow; /*!< r2007+ code 5 no DXF */
|
|
BITCODE_H plotstyle; /*!< r2000+ code 5, DXF 390 */
|
|
BITCODE_H full_visualstyle; /*!< r2010+ code 5, DXF 348 */
|
|
BITCODE_H face_visualstyle;
|
|
BITCODE_H edge_visualstyle;
|
|
} Dwg_Object_Entity;
|
|
|
|
/**
|
|
Ordinary object attributes
|
|
*/
|
|
typedef struct _dwg_object_object
|
|
{
|
|
BITCODE_BL objid; /*!< link to the parent */
|
|
union
|
|
{
|
|
// clang-format off
|
|
/* Start auto-generated object-union. Do not touch. */
|
|
Dwg_Object_APPID *APPID;
|
|
Dwg_Object_APPID_CONTROL *APPID_CONTROL;
|
|
Dwg_Object_BLOCK_CONTROL *BLOCK_CONTROL;
|
|
Dwg_Object_BLOCK_HEADER *BLOCK_HEADER;
|
|
Dwg_Object_DICTIONARY *DICTIONARY;
|
|
Dwg_Object_DIMSTYLE *DIMSTYLE;
|
|
Dwg_Object_DIMSTYLE_CONTROL *DIMSTYLE_CONTROL;
|
|
Dwg_Object_DUMMY *DUMMY;
|
|
Dwg_Object_LAYER *LAYER;
|
|
Dwg_Object_LAYER_CONTROL *LAYER_CONTROL;
|
|
Dwg_Object_LONG_TRANSACTION *LONG_TRANSACTION;
|
|
Dwg_Object_LTYPE *LTYPE;
|
|
Dwg_Object_LTYPE_CONTROL *LTYPE_CONTROL;
|
|
Dwg_Object_MLINESTYLE *MLINESTYLE;
|
|
Dwg_Object_STYLE *STYLE;
|
|
Dwg_Object_STYLE_CONTROL *STYLE_CONTROL;
|
|
Dwg_Object_UCS *UCS;
|
|
Dwg_Object_UCS_CONTROL *UCS_CONTROL;
|
|
Dwg_Object_UNKNOWN_OBJ *UNKNOWN_OBJ;
|
|
Dwg_Object_VIEW *VIEW;
|
|
Dwg_Object_VIEW_CONTROL *VIEW_CONTROL;
|
|
Dwg_Object_VPORT *VPORT;
|
|
Dwg_Object_VPORT_CONTROL *VPORT_CONTROL;
|
|
Dwg_Object_VX_CONTROL *VX_CONTROL;
|
|
Dwg_Object_VX_TABLE_RECORD *VX_TABLE_RECORD;
|
|
/* untyped > 500 */
|
|
Dwg_Object_ACSH_BOOLEAN_CLASS *ACSH_BOOLEAN_CLASS;
|
|
Dwg_Object_ACSH_BOX_CLASS *ACSH_BOX_CLASS;
|
|
Dwg_Object_ACSH_CONE_CLASS *ACSH_CONE_CLASS;
|
|
Dwg_Object_ACSH_CYLINDER_CLASS *ACSH_CYLINDER_CLASS;
|
|
Dwg_Object_ACSH_FILLET_CLASS *ACSH_FILLET_CLASS;
|
|
Dwg_Object_ACSH_HISTORY_CLASS *ACSH_HISTORY_CLASS;
|
|
Dwg_Object_ACSH_SPHERE_CLASS *ACSH_SPHERE_CLASS;
|
|
Dwg_Object_ACSH_TORUS_CLASS *ACSH_TORUS_CLASS;
|
|
Dwg_Object_ACSH_WEDGE_CLASS *ACSH_WEDGE_CLASS;
|
|
Dwg_Object_ASSOCGEOMDEPENDENCY *ASSOCGEOMDEPENDENCY;
|
|
Dwg_Object_ASSOCNETWORK *ASSOCNETWORK;
|
|
Dwg_Object_BLOCKALIGNMENTGRIP *BLOCKALIGNMENTGRIP;
|
|
Dwg_Object_BLOCKALIGNMENTPARAMETER *BLOCKALIGNMENTPARAMETER;
|
|
Dwg_Object_BLOCKBASEPOINTPARAMETER *BLOCKBASEPOINTPARAMETER;
|
|
Dwg_Object_BLOCKFLIPACTION *BLOCKFLIPACTION;
|
|
Dwg_Object_BLOCKFLIPGRIP *BLOCKFLIPGRIP;
|
|
Dwg_Object_BLOCKFLIPPARAMETER *BLOCKFLIPPARAMETER;
|
|
Dwg_Object_BLOCKGRIPLOCATIONCOMPONENT *BLOCKGRIPLOCATIONCOMPONENT;
|
|
Dwg_Object_BLOCKLINEARGRIP *BLOCKLINEARGRIP;
|
|
Dwg_Object_BLOCKLOOKUPGRIP *BLOCKLOOKUPGRIP;
|
|
Dwg_Object_BLOCKMOVEACTION *BLOCKMOVEACTION;
|
|
Dwg_Object_BLOCKROTATEACTION *BLOCKROTATEACTION;
|
|
Dwg_Object_BLOCKROTATIONGRIP *BLOCKROTATIONGRIP;
|
|
Dwg_Object_BLOCKSCALEACTION *BLOCKSCALEACTION;
|
|
Dwg_Object_BLOCKVISIBILITYGRIP *BLOCKVISIBILITYGRIP;
|
|
Dwg_Object_CELLSTYLEMAP *CELLSTYLEMAP;
|
|
Dwg_Object_DETAILVIEWSTYLE *DETAILVIEWSTYLE;
|
|
Dwg_Object_DICTIONARYVAR *DICTIONARYVAR;
|
|
Dwg_Object_DICTIONARYWDFLT *DICTIONARYWDFLT;
|
|
Dwg_Object_DYNAMICBLOCKPURGEPREVENTER *DYNAMICBLOCKPURGEPREVENTER;
|
|
Dwg_Object_FIELD *FIELD;
|
|
Dwg_Object_FIELDLIST *FIELDLIST;
|
|
Dwg_Object_GEODATA *GEODATA;
|
|
Dwg_Object_GROUP *GROUP;
|
|
Dwg_Object_IDBUFFER *IDBUFFER;
|
|
Dwg_Object_IMAGEDEF *IMAGEDEF;
|
|
Dwg_Object_IMAGEDEF_REACTOR *IMAGEDEF_REACTOR;
|
|
Dwg_Object_INDEX *INDEX;
|
|
Dwg_Object_LAYERFILTER *LAYERFILTER;
|
|
Dwg_Object_LAYER_INDEX *LAYER_INDEX;
|
|
Dwg_Object_LAYOUT *LAYOUT;
|
|
Dwg_Object_PLACEHOLDER *PLACEHOLDER;
|
|
Dwg_Object_PLOTSETTINGS *PLOTSETTINGS;
|
|
Dwg_Object_RASTERVARIABLES *RASTERVARIABLES;
|
|
Dwg_Object_RENDERENVIRONMENT *RENDERENVIRONMENT;
|
|
Dwg_Object_SCALE *SCALE;
|
|
Dwg_Object_SECTIONVIEWSTYLE *SECTIONVIEWSTYLE;
|
|
Dwg_Object_SECTION_MANAGER *SECTION_MANAGER;
|
|
Dwg_Object_SORTENTSTABLE *SORTENTSTABLE;
|
|
Dwg_Object_SPATIAL_FILTER *SPATIAL_FILTER;
|
|
Dwg_Object_SUN *SUN;
|
|
Dwg_Object_TABLEGEOMETRY *TABLEGEOMETRY;
|
|
Dwg_Object_VBA_PROJECT *VBA_PROJECT;
|
|
Dwg_Object_VISUALSTYLE *VISUALSTYLE;
|
|
Dwg_Object_WIPEOUTVARIABLES *WIPEOUTVARIABLES;
|
|
Dwg_Object_XRECORD *XRECORD;
|
|
Dwg_Object_PDFDEFINITION *PDFDEFINITION;
|
|
Dwg_Object_DGNDEFINITION *DGNDEFINITION;
|
|
Dwg_Object_DWFDEFINITION *DWFDEFINITION;
|
|
/* unstable */
|
|
Dwg_Object_ACSH_BREP_CLASS *ACSH_BREP_CLASS;
|
|
Dwg_Object_ACSH_CHAMFER_CLASS *ACSH_CHAMFER_CLASS;
|
|
Dwg_Object_ACSH_PYRAMID_CLASS *ACSH_PYRAMID_CLASS;
|
|
Dwg_Object_ALDIMOBJECTCONTEXTDATA *ALDIMOBJECTCONTEXTDATA;
|
|
Dwg_Object_ASSOC2DCONSTRAINTGROUP *ASSOC2DCONSTRAINTGROUP;
|
|
Dwg_Object_ASSOCACTION *ASSOCACTION;
|
|
Dwg_Object_ASSOCACTIONPARAM *ASSOCACTIONPARAM;
|
|
Dwg_Object_ASSOCARRAYACTIONBODY *ASSOCARRAYACTIONBODY;
|
|
Dwg_Object_ASSOCASMBODYACTIONPARAM *ASSOCASMBODYACTIONPARAM;
|
|
Dwg_Object_ASSOCBLENDSURFACEACTIONBODY *ASSOCBLENDSURFACEACTIONBODY;
|
|
Dwg_Object_ASSOCCOMPOUNDACTIONPARAM *ASSOCCOMPOUNDACTIONPARAM;
|
|
Dwg_Object_ASSOCDEPENDENCY *ASSOCDEPENDENCY;
|
|
Dwg_Object_ASSOCDIMDEPENDENCYBODY *ASSOCDIMDEPENDENCYBODY;
|
|
Dwg_Object_ASSOCEXTENDSURFACEACTIONBODY *ASSOCEXTENDSURFACEACTIONBODY;
|
|
Dwg_Object_ASSOCEXTRUDEDSURFACEACTIONBODY *ASSOCEXTRUDEDSURFACEACTIONBODY;
|
|
Dwg_Object_ASSOCFACEACTIONPARAM *ASSOCFACEACTIONPARAM;
|
|
Dwg_Object_ASSOCFILLETSURFACEACTIONBODY *ASSOCFILLETSURFACEACTIONBODY;
|
|
Dwg_Object_ASSOCLOFTEDSURFACEACTIONBODY *ASSOCLOFTEDSURFACEACTIONBODY;
|
|
Dwg_Object_ASSOCNETWORKSURFACEACTIONBODY *ASSOCNETWORKSURFACEACTIONBODY;
|
|
Dwg_Object_ASSOCOBJECTACTIONPARAM *ASSOCOBJECTACTIONPARAM;
|
|
Dwg_Object_ASSOCOFFSETSURFACEACTIONBODY *ASSOCOFFSETSURFACEACTIONBODY;
|
|
Dwg_Object_ASSOCOSNAPPOINTREFACTIONPARAM *ASSOCOSNAPPOINTREFACTIONPARAM;
|
|
Dwg_Object_ASSOCPATCHSURFACEACTIONBODY *ASSOCPATCHSURFACEACTIONBODY;
|
|
Dwg_Object_ASSOCPATHACTIONPARAM *ASSOCPATHACTIONPARAM;
|
|
Dwg_Object_ASSOCPLANESURFACEACTIONBODY *ASSOCPLANESURFACEACTIONBODY;
|
|
Dwg_Object_ASSOCPOINTREFACTIONPARAM *ASSOCPOINTREFACTIONPARAM;
|
|
Dwg_Object_ASSOCREVOLVEDSURFACEACTIONBODY *ASSOCREVOLVEDSURFACEACTIONBODY;
|
|
Dwg_Object_ASSOCTRIMSURFACEACTIONBODY *ASSOCTRIMSURFACEACTIONBODY;
|
|
Dwg_Object_ASSOCVALUEDEPENDENCY *ASSOCVALUEDEPENDENCY;
|
|
Dwg_Object_ASSOCVARIABLE *ASSOCVARIABLE;
|
|
Dwg_Object_ASSOCVERTEXACTIONPARAM *ASSOCVERTEXACTIONPARAM;
|
|
Dwg_Object_BLKREFOBJECTCONTEXTDATA *BLKREFOBJECTCONTEXTDATA;
|
|
Dwg_Object_BLOCKALIGNEDCONSTRAINTPARAMETER *BLOCKALIGNEDCONSTRAINTPARAMETER;
|
|
Dwg_Object_BLOCKANGULARCONSTRAINTPARAMETER *BLOCKANGULARCONSTRAINTPARAMETER;
|
|
Dwg_Object_BLOCKARRAYACTION *BLOCKARRAYACTION;
|
|
Dwg_Object_BLOCKDIAMETRICCONSTRAINTPARAMETER *BLOCKDIAMETRICCONSTRAINTPARAMETER;
|
|
Dwg_Object_BLOCKHORIZONTALCONSTRAINTPARAMETER *BLOCKHORIZONTALCONSTRAINTPARAMETER;
|
|
Dwg_Object_BLOCKLINEARCONSTRAINTPARAMETER *BLOCKLINEARCONSTRAINTPARAMETER;
|
|
Dwg_Object_BLOCKLINEARPARAMETER *BLOCKLINEARPARAMETER;
|
|
Dwg_Object_BLOCKLOOKUPACTION *BLOCKLOOKUPACTION;
|
|
Dwg_Object_BLOCKLOOKUPPARAMETER *BLOCKLOOKUPPARAMETER;
|
|
Dwg_Object_BLOCKPARAMDEPENDENCYBODY *BLOCKPARAMDEPENDENCYBODY;
|
|
Dwg_Object_BLOCKPOINTPARAMETER *BLOCKPOINTPARAMETER;
|
|
Dwg_Object_BLOCKPOLARGRIP *BLOCKPOLARGRIP;
|
|
Dwg_Object_BLOCKPOLARPARAMETER *BLOCKPOLARPARAMETER;
|
|
Dwg_Object_BLOCKPOLARSTRETCHACTION *BLOCKPOLARSTRETCHACTION;
|
|
Dwg_Object_BLOCKRADIALCONSTRAINTPARAMETER *BLOCKRADIALCONSTRAINTPARAMETER;
|
|
Dwg_Object_BLOCKREPRESENTATION *BLOCKREPRESENTATION;
|
|
Dwg_Object_BLOCKROTATIONPARAMETER *BLOCKROTATIONPARAMETER;
|
|
Dwg_Object_BLOCKSTRETCHACTION *BLOCKSTRETCHACTION;
|
|
Dwg_Object_BLOCKUSERPARAMETER *BLOCKUSERPARAMETER;
|
|
Dwg_Object_BLOCKVERTICALCONSTRAINTPARAMETER *BLOCKVERTICALCONSTRAINTPARAMETER;
|
|
Dwg_Object_BLOCKVISIBILITYPARAMETER *BLOCKVISIBILITYPARAMETER;
|
|
Dwg_Object_BLOCKXYGRIP *BLOCKXYGRIP;
|
|
Dwg_Object_BLOCKXYPARAMETER *BLOCKXYPARAMETER;
|
|
Dwg_Object_DATALINK *DATALINK;
|
|
Dwg_Object_DBCOLOR *DBCOLOR;
|
|
Dwg_Object_EVALUATION_GRAPH *EVALUATION_GRAPH;
|
|
Dwg_Object_FCFOBJECTCONTEXTDATA *FCFOBJECTCONTEXTDATA;
|
|
Dwg_Object_GRADIENT_BACKGROUND *GRADIENT_BACKGROUND;
|
|
Dwg_Object_GROUND_PLANE_BACKGROUND *GROUND_PLANE_BACKGROUND;
|
|
Dwg_Object_IBL_BACKGROUND *IBL_BACKGROUND;
|
|
Dwg_Object_IMAGE_BACKGROUND *IMAGE_BACKGROUND;
|
|
Dwg_Object_LEADEROBJECTCONTEXTDATA *LEADEROBJECTCONTEXTDATA;
|
|
Dwg_Object_LIGHTLIST *LIGHTLIST;
|
|
Dwg_Object_MATERIAL *MATERIAL;
|
|
Dwg_Object_MENTALRAYRENDERSETTINGS *MENTALRAYRENDERSETTINGS;
|
|
Dwg_Object_MLEADERSTYLE *MLEADERSTYLE;
|
|
Dwg_Object_MTEXTOBJECTCONTEXTDATA *MTEXTOBJECTCONTEXTDATA;
|
|
Dwg_Object_OBJECT_PTR *OBJECT_PTR;
|
|
Dwg_Object_PARTIAL_VIEWING_INDEX *PARTIAL_VIEWING_INDEX;
|
|
Dwg_Object_POINTCLOUDCOLORMAP *POINTCLOUDCOLORMAP;
|
|
Dwg_Object_POINTCLOUDDEF *POINTCLOUDDEF;
|
|
Dwg_Object_POINTCLOUDDEFEX *POINTCLOUDDEFEX;
|
|
Dwg_Object_POINTCLOUDDEF_REACTOR *POINTCLOUDDEF_REACTOR;
|
|
Dwg_Object_POINTCLOUDDEF_REACTOR_EX *POINTCLOUDDEF_REACTOR_EX;
|
|
Dwg_Object_PROXY_OBJECT *PROXY_OBJECT;
|
|
Dwg_Object_RAPIDRTRENDERSETTINGS *RAPIDRTRENDERSETTINGS;
|
|
Dwg_Object_RENDERENTRY *RENDERENTRY;
|
|
Dwg_Object_RENDERGLOBAL *RENDERGLOBAL;
|
|
Dwg_Object_RENDERSETTINGS *RENDERSETTINGS;
|
|
Dwg_Object_SECTION_SETTINGS *SECTION_SETTINGS;
|
|
Dwg_Object_SKYLIGHT_BACKGROUND *SKYLIGHT_BACKGROUND;
|
|
Dwg_Object_SOLID_BACKGROUND *SOLID_BACKGROUND;
|
|
Dwg_Object_SPATIAL_INDEX *SPATIAL_INDEX;
|
|
Dwg_Object_TABLESTYLE *TABLESTYLE;
|
|
Dwg_Object_TEXTOBJECTCONTEXTDATA *TEXTOBJECTCONTEXTDATA;
|
|
Dwg_Object_ASSOCARRAYMODIFYPARAMETERS *ASSOCARRAYMODIFYPARAMETERS;
|
|
Dwg_Object_ASSOCARRAYPATHPARAMETERS *ASSOCARRAYPATHPARAMETERS;
|
|
Dwg_Object_ASSOCARRAYPOLARPARAMETERS *ASSOCARRAYPOLARPARAMETERS;
|
|
Dwg_Object_ASSOCARRAYRECTANGULARPARAMETERS *ASSOCARRAYRECTANGULARPARAMETERS;
|
|
/* debugging */
|
|
Dwg_Object_ACMECOMMANDHISTORY *ACMECOMMANDHISTORY;
|
|
Dwg_Object_ACMESCOPE *ACMESCOPE;
|
|
Dwg_Object_ACMESTATEMGR *ACMESTATEMGR;
|
|
Dwg_Object_ACSH_EXTRUSION_CLASS *ACSH_EXTRUSION_CLASS;
|
|
Dwg_Object_ACSH_LOFT_CLASS *ACSH_LOFT_CLASS;
|
|
Dwg_Object_ACSH_REVOLVE_CLASS *ACSH_REVOLVE_CLASS;
|
|
Dwg_Object_ACSH_SWEEP_CLASS *ACSH_SWEEP_CLASS;
|
|
Dwg_Object_ANGDIMOBJECTCONTEXTDATA *ANGDIMOBJECTCONTEXTDATA;
|
|
Dwg_Object_ANNOTSCALEOBJECTCONTEXTDATA *ANNOTSCALEOBJECTCONTEXTDATA;
|
|
Dwg_Object_ASSOC3POINTANGULARDIMACTIONBODY *ASSOC3POINTANGULARDIMACTIONBODY;
|
|
Dwg_Object_ASSOCALIGNEDDIMACTIONBODY *ASSOCALIGNEDDIMACTIONBODY;
|
|
Dwg_Object_ASSOCARRAYMODIFYACTIONBODY *ASSOCARRAYMODIFYACTIONBODY;
|
|
Dwg_Object_ASSOCEDGEACTIONPARAM *ASSOCEDGEACTIONPARAM;
|
|
Dwg_Object_ASSOCEDGECHAMFERACTIONBODY *ASSOCEDGECHAMFERACTIONBODY;
|
|
Dwg_Object_ASSOCEDGEFILLETACTIONBODY *ASSOCEDGEFILLETACTIONBODY;
|
|
Dwg_Object_ASSOCMLEADERACTIONBODY *ASSOCMLEADERACTIONBODY;
|
|
Dwg_Object_ASSOCORDINATEDIMACTIONBODY *ASSOCORDINATEDIMACTIONBODY;
|
|
Dwg_Object_ASSOCPERSSUBENTMANAGER *ASSOCPERSSUBENTMANAGER;
|
|
Dwg_Object_ASSOCRESTOREENTITYSTATEACTIONBODY *ASSOCRESTOREENTITYSTATEACTIONBODY;
|
|
Dwg_Object_ASSOCROTATEDDIMACTIONBODY *ASSOCROTATEDDIMACTIONBODY;
|
|
Dwg_Object_ASSOCSWEPTSURFACEACTIONBODY *ASSOCSWEPTSURFACEACTIONBODY;
|
|
Dwg_Object_BLOCKPROPERTIESTABLE *BLOCKPROPERTIESTABLE;
|
|
Dwg_Object_BLOCKPROPERTIESTABLEGRIP *BLOCKPROPERTIESTABLEGRIP;
|
|
Dwg_Object_BREAKDATA *BREAKDATA;
|
|
Dwg_Object_BREAKPOINTREF *BREAKPOINTREF;
|
|
Dwg_Object_CONTEXTDATAMANAGER *CONTEXTDATAMANAGER;
|
|
Dwg_Object_CSACDOCUMENTOPTIONS *CSACDOCUMENTOPTIONS;
|
|
Dwg_Object_CURVEPATH *CURVEPATH;
|
|
Dwg_Object_DATATABLE *DATATABLE;
|
|
Dwg_Object_DIMASSOC *DIMASSOC;
|
|
Dwg_Object_DMDIMOBJECTCONTEXTDATA *DMDIMOBJECTCONTEXTDATA;
|
|
Dwg_Object_DYNAMICBLOCKPROXYNODE *DYNAMICBLOCKPROXYNODE;
|
|
Dwg_Object_GEOMAPIMAGE *GEOMAPIMAGE;
|
|
Dwg_Object_MLEADEROBJECTCONTEXTDATA *MLEADEROBJECTCONTEXTDATA;
|
|
Dwg_Object_MOTIONPATH *MOTIONPATH;
|
|
Dwg_Object_MTEXTATTRIBUTEOBJECTCONTEXTDATA *MTEXTATTRIBUTEOBJECTCONTEXTDATA;
|
|
Dwg_Object_NAVISWORKSMODELDEF *NAVISWORKSMODELDEF;
|
|
Dwg_Object_ORDDIMOBJECTCONTEXTDATA *ORDDIMOBJECTCONTEXTDATA;
|
|
Dwg_Object_PERSUBENTMGR *PERSUBENTMGR;
|
|
Dwg_Object_POINTPATH *POINTPATH;
|
|
Dwg_Object_RADIMLGOBJECTCONTEXTDATA *RADIMLGOBJECTCONTEXTDATA;
|
|
Dwg_Object_RADIMOBJECTCONTEXTDATA *RADIMOBJECTCONTEXTDATA;
|
|
Dwg_Object_SUNSTUDY *SUNSTUDY;
|
|
Dwg_Object_TABLECONTENT *TABLECONTENT;
|
|
Dwg_Object_TVDEVICEPROPERTIES *TVDEVICEPROPERTIES;
|
|
// Dwg_Object_ACDSRECORD *ACDSRECORD;
|
|
// Dwg_Object_ACDSSCHEMA *ACDSSCHEMA;
|
|
// Dwg_Object_NPOCOLLECTION *NPOCOLLECTION;
|
|
// Dwg_Object_RAPIDRTRENDERENVIRONMENT *RAPIDRTRENDERENVIRONMENT;
|
|
// Dwg_Object_XREFPANELOBJECT *XREFPANELOBJECT;
|
|
/* End auto-generated object-union */
|
|
// clang-format on
|
|
} tio;
|
|
|
|
struct _dwg_struct *dwg;
|
|
BITCODE_BL num_eed;
|
|
Dwg_Eed *eed;
|
|
|
|
/* Common Object Data */
|
|
BITCODE_H ownerhandle; /*!< code 5, DXF 330 */
|
|
BITCODE_BL num_reactors;
|
|
BITCODE_H* reactors; /*!< r13+ code 4, DXF 102 {ACAD_XDICTIONARY, 330 */
|
|
BITCODE_H xdicobjhandle; /*!< r13+ code 3, DXF 102 {ACAD_REACTORS, 360 */
|
|
BITCODE_B is_xdic_missing; /*!< r2004+ */
|
|
BITCODE_B has_ds_data; /*!< r2013+ AcDs datastore */
|
|
|
|
/*unsigned int num_handles;*/
|
|
Dwg_Handle *handleref; //??
|
|
} Dwg_Object_Object;
|
|
|
|
/**
|
|
Classes
|
|
*/
|
|
typedef struct _dwg_class
|
|
{
|
|
BITCODE_BS number; /*!< starting with 500 */
|
|
/* see http://images.autodesk.com/adsk/files/autocad_2012_pdf_dxf-reference_enu.pdf */
|
|
BITCODE_BS proxyflag; /*!<
|
|
erase allowed = 1,
|
|
transform allowed = 2,
|
|
color change allowed = 4,
|
|
layer change allowed = 8,
|
|
LTYPE change allowed = 16,
|
|
LTYPE.scale change allowed = 32,
|
|
visibility change allowed = 64,
|
|
cloning allowed = 128,
|
|
Lineweight change allowed = 256,
|
|
PLOTSTYLE Name change allowed = 512,
|
|
Disables proxy warning dialog = 1024,
|
|
is R13 format proxy = 32768 */
|
|
char *appname;
|
|
char *cppname;
|
|
char *dxfname; /*!< ASCII or UTF-8 */
|
|
BITCODE_TU dxfname_u; /*!< r2007+, always transformed to dxfname as UTF-8 */
|
|
BITCODE_B is_zombie; /*!< i.e. was_proxy, not loaded class */
|
|
BITCODE_BS item_class_id; /*!< really is_entity. 1f2 for entities, 1f3 for objects */
|
|
BITCODE_BL num_instances; /*!< 91 instance count for a custom class */
|
|
BITCODE_BL dwg_version;
|
|
BITCODE_BL maint_version;
|
|
BITCODE_BL unknown_1; /*!< def: 0L */
|
|
BITCODE_BL unknown_2; /*!< def: 0L */
|
|
} Dwg_Class;
|
|
|
|
/**
|
|
General DWG object with link to either entity or object, and as parent the DWG
|
|
*/
|
|
typedef struct _dwg_object
|
|
{
|
|
BITCODE_RL size; /*!< in bytes */
|
|
size_t address; /*!< byte offset in the file */
|
|
BITCODE_BS type; /*!< fixed or variable (class - 500) */
|
|
BITCODE_RL index; /*!< into dwg->object[] */
|
|
enum DWG_OBJECT_TYPE fixedtype; /*!< into a global list */
|
|
char *name; /*!< our public entity/object name */
|
|
char *dxfname; /*!< the internal dxf classname, often with a ACDB prefix */
|
|
|
|
Dwg_Object_Supertype supertype;
|
|
union
|
|
{
|
|
Dwg_Object_Entity *entity;
|
|
Dwg_Object_Object *object;
|
|
} tio;
|
|
|
|
Dwg_Handle handle;
|
|
struct _dwg_struct *parent;
|
|
Dwg_Class *klass; /* the optional class of a variable object */
|
|
|
|
BITCODE_RL bitsize; /* common + object fields, but no handles */
|
|
size_t bitsize_pos; /* bitsize offset in bits: r13-2007 */
|
|
size_t hdlpos; /* relative offset, in bits */
|
|
BITCODE_B was_bitsize_set; /* internally for encode only */
|
|
BITCODE_B has_strings; /*!< r2007+ */
|
|
BITCODE_RL stringstream_size; /*!< r2007+ in bits, unused */
|
|
BITCODE_UMC handlestream_size; /*!< r2010+ in bits */
|
|
size_t common_size; /* relative offset from type ... end common_entity_data */
|
|
|
|
BITCODE_RL num_unknown_bits;
|
|
BITCODE_TF unknown_bits; // replacing the full object
|
|
BITCODE_RL num_unknown_rest;
|
|
BITCODE_TF unknown_rest; // just the rest
|
|
|
|
} Dwg_Object;
|
|
|
|
/**
|
|
Dwg_Chain similar to Bit_Chain in "bits.h". Used only for the Thumbnail thumbnail
|
|
*/
|
|
typedef struct _dwg_chain
|
|
{
|
|
unsigned char *chain;
|
|
size_t size;
|
|
size_t byte;
|
|
unsigned char bit;
|
|
/* NOT:
|
|
unsigned char opts;
|
|
Dwg_Version_Type version;
|
|
Dwg_Version_Type from_version;
|
|
FILE *fh;
|
|
BITCODE_RS codepage;
|
|
*/
|
|
} Dwg_Chain;
|
|
|
|
typedef enum DWG_SECTION_TYPE /* since r2004+ */
|
|
{
|
|
SECTION_UNKNOWN = 0, /* FILEHEADER, the very first 160 byte? */
|
|
SECTION_HEADER = 1, /* AcDb:Header */
|
|
SECTION_AUXHEADER = 2, /* AcDb:AuxHeader */
|
|
SECTION_CLASSES = 3, /* AcDb:Classes */
|
|
SECTION_HANDLES = 4, /* AcDb:Handles */
|
|
SECTION_TEMPLATE = 5, /* AcDb:Template */
|
|
SECTION_OBJFREESPACE = 6, /* AcDb:ObjFreeSpace */
|
|
SECTION_OBJECTS = 7, /* AcDb:AcDbObjects */
|
|
SECTION_REVHISTORY = 8, /* AcDb:RevHistory */
|
|
SECTION_SUMMARYINFO = 9, /* AcDb:SummaryInfo */
|
|
SECTION_PREVIEW = 10, /* AcDb:Preview */
|
|
SECTION_APPINFO = 11, /* AcDb:AppInfo */
|
|
SECTION_APPINFOHISTORY = 12, /* AcDb:AppInfoHistory */
|
|
SECTION_FILEDEPLIST = 13, /* AcDb:FileDepList */
|
|
SECTION_SECURITY, /* AcDb:Security, if stored with a password */
|
|
SECTION_VBAPROJECT, /* AcDb:VBAProject */
|
|
SECTION_SIGNATURE, /* AcDb:Signature */
|
|
SECTION_ACDS, /* AcDb:AcDsPrototype_1b = 12 (ACIS datastorage) */
|
|
SECTION_INFO, /* also called Data Section, or Section Page Map (ODA) */
|
|
SECTION_SYSTEM_MAP,
|
|
} Dwg_Section_Type;
|
|
|
|
/* r13 - r2000 */
|
|
typedef enum DWG_SECTION_TYPE_R13
|
|
{
|
|
SECTION_HEADER_R13 = 0,
|
|
SECTION_CLASSES_R13 = 1,
|
|
SECTION_HANDLES_R13 = 2,
|
|
SECTION_OBJFREESPACE_R13 = 3, /* including the 2ndheader */
|
|
SECTION_TEMPLATE_R13 = 4,
|
|
SECTION_AUXHEADER_R2000 = 5,
|
|
SECTION_THUMBNAIL_R13 = 6,
|
|
} Dwg_Section_Type_r13;
|
|
|
|
typedef enum DWG_SECTION_TYPE_R11 /* tables */
|
|
{
|
|
SECTION_HEADER_R11 = 0,
|
|
SECTION_BLOCK = 1,
|
|
SECTION_LAYER = 2,
|
|
SECTION_STYLE = 3,
|
|
SECTION_LTYPE = 5,
|
|
SECTION_VIEW = 6,
|
|
// since r10:
|
|
SECTION_UCS = 7,
|
|
SECTION_VPORT = 8,
|
|
// over 160 header vars
|
|
SECTION_APPID = 9,
|
|
// since r11:
|
|
SECTION_DIMSTYLE = 10,
|
|
SECTION_VX = 11,
|
|
} Dwg_Section_Type_r11;
|
|
|
|
typedef struct _dwg_section
|
|
{
|
|
BITCODE_RLd number; /* preR13: num_entries, r2007: id */
|
|
BITCODE_RL size; /* now unsigned */
|
|
BITCODE_RLL address;
|
|
BITCODE_RL objid_r11;
|
|
/* r2000+: */
|
|
BITCODE_RL parent;
|
|
BITCODE_RL left;
|
|
BITCODE_RL right;
|
|
BITCODE_RL x00;
|
|
Dwg_Section_Type type; /* to be casted to Dwg_Section_Type_r11 preR13 */
|
|
/* => section_info? */
|
|
char name[64];
|
|
/*!< r2004 section fields: */
|
|
BITCODE_RL section_type;
|
|
BITCODE_RL decomp_data_size;
|
|
BITCODE_RL comp_data_size;
|
|
BITCODE_RL compression_type;
|
|
BITCODE_RL checksum;
|
|
BITCODE_RS flags_r11;
|
|
} Dwg_Section;
|
|
|
|
/* Dwg_R2007_Section:
|
|
int64_t data_size; // max size of page
|
|
int64_t max_size;
|
|
int64_t encrypted;
|
|
int64_t hashcode;
|
|
int64_t name_length; // 0x22
|
|
int64_t unknown; // 0x00
|
|
int64_t encoded;
|
|
int64_t num_pages;
|
|
DWGCHAR *name;
|
|
r2007_section_page **pages;
|
|
struct _r2007_section *nextsec;
|
|
*/
|
|
|
|
// ODA 4.5
|
|
typedef struct
|
|
{
|
|
BITCODE_RL num_desc;
|
|
BITCODE_RL compressed; /* Compressed (1 = no, 2 = yes, normally 2) */
|
|
BITCODE_RL max_size;
|
|
BITCODE_RL encrypted; /* (0 = no, 1 = yes, 2 = unknown) */
|
|
BITCODE_RL num_desc2;
|
|
} Dwg_Section_InfoHdr;
|
|
|
|
typedef struct
|
|
{
|
|
int64_t size;
|
|
BITCODE_RL num_sections;
|
|
BITCODE_RL max_decomp_size;
|
|
BITCODE_RL unknown;
|
|
BITCODE_RL compressed; /* Compressed (1 = no, 2 = yes, normally 2) */
|
|
BITCODE_RL type; /* The dynamic index as read/written */
|
|
BITCODE_RL encrypted; /* (0 = no, 1 = yes, 2 = unknown) */
|
|
char name[64];
|
|
Dwg_Section_Type fixedtype; /* to search for */
|
|
Dwg_Section **sections;
|
|
} Dwg_Section_Info;
|
|
|
|
|
|
typedef struct _dwg_SummaryInfo_Property
|
|
{
|
|
BITCODE_T16 tag; // CUSTOMPROPERTYTAG
|
|
BITCODE_T16 value; // CUSTOMPROPERTY
|
|
} Dwg_SummaryInfo_Property;
|
|
|
|
typedef struct _dwg_FileDepList_Files
|
|
{
|
|
BITCODE_T32 filename;
|
|
BITCODE_T32 filepath;
|
|
BITCODE_T32 fingerprint;
|
|
BITCODE_T32 version;
|
|
BITCODE_RL feature_index;
|
|
BITCODE_RL timestamp;
|
|
BITCODE_RL filesize;
|
|
BITCODE_RS affects_graphics;
|
|
BITCODE_RL refcount;
|
|
} Dwg_FileDepList_Files;
|
|
|
|
typedef struct _dwg_AcDs_SegmentIndex
|
|
{
|
|
BITCODE_RLL offset;
|
|
BITCODE_RL size;
|
|
} Dwg_AcDs_SegmentIndex;
|
|
|
|
typedef struct _dwg_AcDs_DataIndex_Entry
|
|
{
|
|
BITCODE_RL segidx;
|
|
BITCODE_RL offset;
|
|
BITCODE_RL schidx;
|
|
} Dwg_AcDs_DataIndex_Entry;
|
|
|
|
typedef struct _dwg_AcDs_DataIndex
|
|
{
|
|
BITCODE_RL num_entries;
|
|
BITCODE_RL di_unknown; // always 0, probably RLL above
|
|
Dwg_AcDs_DataIndex_Entry *entries;
|
|
} Dwg_AcDs_DataIndex;
|
|
|
|
typedef struct _dwg_AcDs_Data_RecordHdr
|
|
{
|
|
BITCODE_RL entry_size;
|
|
BITCODE_RL unknown; // mostly 1
|
|
BITCODE_RLL handle;
|
|
BITCODE_RL offset;
|
|
} Dwg_AcDs_Data_RecordHdr;
|
|
|
|
typedef struct _dwg_AcDs_Data_Record
|
|
{
|
|
BITCODE_RL data_size;
|
|
BITCODE_RC *blob;
|
|
} Dwg_AcDs_Data_Record;
|
|
|
|
typedef struct _dwg_AcDs_Data
|
|
{
|
|
Dwg_AcDs_Data_RecordHdr *record_hdrs;
|
|
Dwg_AcDs_Data_Record *records;
|
|
} Dwg_AcDs_Data;
|
|
|
|
typedef struct _dwg_AcDs_DataBlobRef_Page
|
|
{
|
|
BITCODE_RL segidx;
|
|
BITCODE_RL size;
|
|
} Dwg_AcDs_DataBlobRef_Page;
|
|
|
|
typedef struct _dwg_AcDs_DataBlobRef
|
|
{
|
|
BITCODE_RLL total_data_size;
|
|
BITCODE_RL num_pages;
|
|
BITCODE_RL record_size;
|
|
BITCODE_RL page_size;
|
|
BITCODE_RL unknown_1; // ODA writes 1
|
|
BITCODE_RL unknown_2; // ODA writes 0
|
|
Dwg_AcDs_DataBlobRef_Page *pages;
|
|
} Dwg_AcDs_DataBlobRef;
|
|
|
|
typedef struct _dwg_AcDs_DataBlob
|
|
{
|
|
BITCODE_RLL data_size;
|
|
BITCODE_RL page_count;
|
|
BITCODE_RL record_size;
|
|
BITCODE_RL page_size;
|
|
BITCODE_RL unknown_1; // ODA writes 1
|
|
BITCODE_RL unknown_2; // ODA writes 0
|
|
Dwg_AcDs_DataBlobRef *ref; // only one, optional
|
|
} Dwg_AcDs_DataBlob;
|
|
|
|
typedef struct _dwg_AcDs_DataBlob01
|
|
{
|
|
BITCODE_RLL total_data_size;
|
|
BITCODE_RLL page_start_offset;
|
|
int32_t page_index;
|
|
int32_t page_count;
|
|
BITCODE_RLL page_data_size;
|
|
BITCODE_RC *page_data;
|
|
} Dwg_AcDs_DataBlob01;
|
|
|
|
// 24.2.2.5
|
|
typedef struct _dwg_AcDs_SchemaIndex_Prop
|
|
{
|
|
BITCODE_RL index;
|
|
BITCODE_RL segidx;
|
|
BITCODE_RL offset;
|
|
} Dwg_AcDs_SchemaIndex_Prop;
|
|
|
|
// 24.2.2.5
|
|
typedef struct _dwg_AcDs_SchemaIndex
|
|
{
|
|
BITCODE_RL num_props; // or uint64
|
|
BITCODE_RL si_unknown_1;
|
|
Dwg_AcDs_SchemaIndex_Prop *props;
|
|
BITCODE_RLL si_tag; /* 0x0af10c */
|
|
BITCODE_RL num_prop_entries;
|
|
BITCODE_RL si_unknown_2; /* 0 */
|
|
Dwg_AcDs_SchemaIndex_Prop *prop_entries;
|
|
} Dwg_AcDs_SchemaIndex;
|
|
|
|
// 24.2.2.6.1.1
|
|
typedef struct _dwg_AcDs_Schema_Prop
|
|
{
|
|
BITCODE_RL flags; /*<! DXF 91 */
|
|
BITCODE_RL namidx; /*<! DXF 2 */
|
|
BITCODE_RL type; /*<! DXF 280, 0-15 */
|
|
BITCODE_RL type_size;
|
|
BITCODE_RL unknown_1;
|
|
BITCODE_RL unknown_2;
|
|
BITCODE_RS num_values;
|
|
BITCODE_RC *values;
|
|
} Dwg_AcDs_Schema_Prop;
|
|
|
|
// 24.2.2.6.1
|
|
typedef struct _dwg_AcDs_Schema
|
|
{
|
|
BITCODE_RS num_index;
|
|
BITCODE_RLL *index;
|
|
BITCODE_RS num_props;
|
|
Dwg_AcDs_Schema_Prop *props;
|
|
} Dwg_AcDs_Schema;
|
|
|
|
// 24.2.2.6
|
|
typedef struct _dwg_AcDs_SchemaData_UProp
|
|
{
|
|
BITCODE_RL size;
|
|
BITCODE_RL flags;
|
|
} Dwg_AcDs_SchemaData_UProp;
|
|
|
|
typedef struct _dwg_AcDs_SchemaData
|
|
{
|
|
BITCODE_RL num_uprops; // computed, see schidx
|
|
Dwg_AcDs_SchemaData_UProp *uprops;
|
|
BITCODE_RL num_schemas; // computed, see schidx
|
|
Dwg_AcDs_Schema *schemas;
|
|
BITCODE_RL num_propnames;
|
|
BITCODE_TV *propnames;
|
|
} Dwg_AcDs_SchemaData;
|
|
|
|
typedef struct _dwg_AcDs_Search_IdIdx
|
|
{
|
|
BITCODE_RLL handle;
|
|
BITCODE_RL num_ididx;
|
|
BITCODE_RLL *ididx;
|
|
} Dwg_AcDs_Search_IdIdx;
|
|
|
|
typedef struct _dwg_AcDs_Search_IdIdxs
|
|
{
|
|
BITCODE_RL num_ididx;
|
|
Dwg_AcDs_Search_IdIdx *ididx;
|
|
} Dwg_AcDs_Search_IdIdxs;
|
|
|
|
// 24.2.2.7.1
|
|
typedef struct _dwg_AcDs_Search_Data
|
|
{
|
|
BITCODE_RL schema_namidx;
|
|
BITCODE_RL num_sortedidx;
|
|
BITCODE_RLLd *sortedidx;
|
|
BITCODE_RL num_ididxs;
|
|
BITCODE_RL unknown;
|
|
Dwg_AcDs_Search_IdIdxs *ididxs;
|
|
} Dwg_AcDs_Search_Data;
|
|
|
|
typedef struct _dwg_AcDs_Search
|
|
{
|
|
BITCODE_RL num_search;
|
|
Dwg_AcDs_Search_Data *search;
|
|
} Dwg_AcDs_Search;
|
|
|
|
typedef struct _dwg_AcDs_Segment
|
|
{
|
|
BITCODE_RS signature; /* always 0xd5ac */
|
|
BITCODE_RC name[7]; /* segidx, datidx, _data_, schidx, schdat, search, blob01 */
|
|
BITCODE_RCd type; /* computed 0-6 or -1 */
|
|
BITCODE_RL segment_idx;
|
|
BITCODE_RL is_blob01;
|
|
BITCODE_RL segsize;
|
|
BITCODE_RL unknown_2;
|
|
BITCODE_RL ds_version; // datastorage revision
|
|
BITCODE_RL unknown_3;
|
|
BITCODE_RL data_algn_offset;
|
|
BITCODE_RL objdata_algn_offset;
|
|
BITCODE_RC padding[9]; // always 8x 0x55
|
|
} Dwg_AcDs_Segment;
|
|
|
|
typedef struct _dwg_AcDs
|
|
{
|
|
// header
|
|
BITCODE_RL file_signature;
|
|
BITCODE_RL file_header_size;
|
|
BITCODE_RL unknown_1; /* acis version? always 2 */
|
|
BITCODE_RL version; /* always 2 */
|
|
BITCODE_RL unknown_2; /* always 0 */
|
|
BITCODE_RL ds_version; /* datastorage revision */
|
|
BITCODE_RL segidx_offset;
|
|
BITCODE_RL segidx_unknown;
|
|
BITCODE_RL num_segidx;
|
|
BITCODE_RL schidx_segidx;
|
|
BITCODE_RL datidx_segidx;
|
|
BITCODE_RL search_segidx;
|
|
BITCODE_RL prvsav_segidx;
|
|
BITCODE_RL file_size;
|
|
BITCODE_BL total_segments; // computed
|
|
Dwg_AcDs_SegmentIndex *segidx;
|
|
Dwg_AcDs_DataIndex datidx;
|
|
Dwg_AcDs_Data *data;
|
|
Dwg_AcDs_DataBlob blob01;
|
|
Dwg_AcDs_SchemaIndex schidx;
|
|
Dwg_AcDs_SchemaData schdat;
|
|
Dwg_AcDs_Search search;
|
|
Dwg_AcDs_Segment *segments;
|
|
} Dwg_AcDs;
|
|
|
|
typedef struct _dwg_header
|
|
{
|
|
Dwg_Version_Type version; /* calculated from the header magic */
|
|
Dwg_Version_Type from_version; /* option. set by --as (convert from) */
|
|
BITCODE_RC is_maint;
|
|
BITCODE_RC zero_one_or_three;
|
|
BITCODE_RS numentity_sections; /* < R13, always 3 */
|
|
BITCODE_RS numheader_vars; /* < R13 */
|
|
BITCODE_RL thumbnail_address; /* THUMBNAIL or AdDb:Preview */
|
|
BITCODE_RC dwg_version;
|
|
BITCODE_RC maint_version;
|
|
BITCODE_RL entities_start; /* < R13 */
|
|
BITCODE_RL entities_end; /* < R13 */
|
|
BITCODE_RL blocks_start; /* < R13 */
|
|
BITCODE_RL blocks_size; /* < R13 */
|
|
BITCODE_RL extras_start; /* < R13 */
|
|
BITCODE_RL extras_size; /* < R13 */
|
|
BITCODE_RS codepage;
|
|
BITCODE_RC unknown_0; /* R2004+ */
|
|
BITCODE_RC app_dwg_version; /* R2004+ */
|
|
BITCODE_RC app_maint_version; /* R2004+ */
|
|
BITCODE_RL security_type; /* R2004+ */
|
|
BITCODE_RL rl_1c_address; /* R2004+ mostly 0 */
|
|
BITCODE_RL summaryinfo_address; /* R2004+ */
|
|
BITCODE_RL vbaproj_address; /* R2004+ */
|
|
BITCODE_RL r2004_header_address; /* R2004+ */
|
|
BITCODE_RL sections; // as in the header, 5 or 6 usually
|
|
BITCODE_RL num_sections; // as allocated, many more
|
|
Dwg_Section *section;
|
|
Dwg_Section_InfoHdr section_infohdr; /* R2004+ */
|
|
Dwg_Section_Info *section_info;
|
|
} Dwg_Header;
|
|
|
|
#pragma pack(1)
|
|
typedef struct r2007_file_header
|
|
{
|
|
int64_t header_size; // 0x70
|
|
int64_t file_size;
|
|
int64_t pages_map_crc_compressed;
|
|
int64_t pages_map_correction;
|
|
int64_t pages_map_crc_seed;
|
|
int64_t pages_map2_offset;
|
|
int64_t pages_map2_id;
|
|
int64_t pages_map_offset; // starting address of the Page Map section
|
|
int64_t pages_map_id;
|
|
int64_t header2_offset;
|
|
int64_t pages_map_size_comp; // the compressed size of section
|
|
int64_t pages_map_size_uncomp;
|
|
int64_t pages_amount;
|
|
int64_t pages_maxid;
|
|
int64_t unknown1; // 0x20
|
|
int64_t unknown2; // 0x40
|
|
int64_t pages_map_crc_uncomp;
|
|
int64_t unknown3; // 0xf800
|
|
int64_t unknown4; // 4
|
|
int64_t unknown5; // 1
|
|
int64_t num_sections;
|
|
int64_t sections_map_crc_uncomp;
|
|
int64_t sections_map_size_comp;
|
|
int64_t sections_map2_id;
|
|
int64_t sections_map_id;
|
|
int64_t sections_map_size_uncomp;
|
|
int64_t sections_map_crc_comp;
|
|
int64_t sections_map_correction;
|
|
int64_t sections_map_crc_seed;
|
|
int64_t stream_version; // 0x60100
|
|
int64_t crc_seed;
|
|
int64_t crc_seed_encoded;
|
|
int64_t random_seed;
|
|
int64_t header_crc;
|
|
} Dwg_R2007_Header;
|
|
|
|
typedef struct _dwg_R2004_Header /* encrypted */
|
|
{
|
|
BITCODE_RC file_ID_string[12];
|
|
BITCODE_RLx header_address;
|
|
BITCODE_RL header_size;
|
|
BITCODE_RL x04;
|
|
BITCODE_RLd root_tree_node_gap;
|
|
BITCODE_RLd lowermost_left_tree_node_gap;
|
|
BITCODE_RLd lowermost_right_tree_node_gap;
|
|
BITCODE_RL unknown_long;
|
|
BITCODE_RL last_section_id;
|
|
BITCODE_RLL last_section_address;
|
|
BITCODE_RLL secondheader_address;
|
|
BITCODE_RL numgaps;
|
|
BITCODE_RL numsections;
|
|
BITCODE_RL x20;
|
|
BITCODE_RL x80;
|
|
BITCODE_RL x40;
|
|
BITCODE_RL section_map_id;
|
|
BITCODE_RLL section_map_address;
|
|
BITCODE_RLd section_info_id;
|
|
BITCODE_RLd section_array_size;
|
|
BITCODE_RL gap_array_size;
|
|
BITCODE_RLx crc32; /* p 2.14.2 32bit CRC 2004+ */
|
|
BITCODE_RC padding[12];
|
|
/* System Section: Section Page Map */
|
|
BITCODE_RL section_type; /* 0x4163043b */
|
|
BITCODE_RL decomp_data_size;
|
|
BITCODE_RL comp_data_size;
|
|
BITCODE_RL compression_type;
|
|
BITCODE_RLx checksum;
|
|
} Dwg_R2004_Header;
|
|
#pragma pack()
|
|
|
|
typedef struct _dwg_auxheader
|
|
{
|
|
BITCODE_RC aux_intro[3]; /* ff 77 01 */
|
|
BITCODE_RS dwg_version;
|
|
BITCODE_RL maint_version;
|
|
BITCODE_RL numsaves;
|
|
BITCODE_RL minus_1;
|
|
BITCODE_RS numsaves_1;
|
|
BITCODE_RS numsaves_2;
|
|
BITCODE_RL zero;
|
|
BITCODE_RS dwg_version_1;
|
|
BITCODE_RL maint_version_1;
|
|
BITCODE_RS dwg_version_2;
|
|
BITCODE_RL maint_version_2;
|
|
BITCODE_RS unknown_6rs[6];
|
|
BITCODE_RL unknown_5rl[5];
|
|
BITCODE_TIMERLL TDCREATE;
|
|
BITCODE_TIMERLL TDUPDATE;
|
|
BITCODE_RL HANDSEED;
|
|
BITCODE_RL plot_stamp;
|
|
BITCODE_RS zero_1;
|
|
BITCODE_RS numsaves_3;
|
|
BITCODE_RL zero_2;
|
|
BITCODE_RL zero_3;
|
|
BITCODE_RL zero_4;
|
|
BITCODE_RL numsaves_4;
|
|
BITCODE_RL zero_5;
|
|
BITCODE_RL zero_6;
|
|
BITCODE_RL zero_7;
|
|
BITCODE_RL zero_8; /* ?? */
|
|
BITCODE_RS zero_18[3]; /* R2018+ */
|
|
BITCODE_RS num_auxheader_variables; /* < R13 */
|
|
BITCODE_RS auxheader_size; /* < R13 */
|
|
BITCODE_RL entities_start; /* < R13 */
|
|
BITCODE_RL entities_end; /* < R13 */
|
|
BITCODE_RL blocks_start; /* < R13 */
|
|
BITCODE_RL extras_start; /* < R13 */
|
|
BITCODE_RLx auxheader_address; /* < R13 */
|
|
BITCODE_RS num_aux_tables; /* < R13 */
|
|
BITCODE_BS R11_HANDLING; /* TODO Merge with HANDSEED */
|
|
BITCODE_H R11_HANDSEED; /* TODO Merge with HANDSEED */
|
|
} Dwg_AuxHeader;
|
|
|
|
typedef struct _dwg_summaryinfo
|
|
{
|
|
BITCODE_T16 TITLE;
|
|
BITCODE_T16 SUBJECT;
|
|
BITCODE_T16 AUTHOR;
|
|
BITCODE_T16 KEYWORDS;
|
|
BITCODE_T16 COMMENTS;
|
|
BITCODE_T16 LASTSAVEDBY;
|
|
BITCODE_T16 REVISIONNUMBER;
|
|
BITCODE_T16 HYPERLINKBASE;
|
|
BITCODE_TIMERLL TDINDWG; /* days + ms, fixed size! */
|
|
BITCODE_TIMERLL TDCREATE;
|
|
BITCODE_TIMERLL TDUPDATE;
|
|
BITCODE_RS num_props;
|
|
Dwg_SummaryInfo_Property *props;
|
|
BITCODE_RL unknown1;
|
|
BITCODE_RL unknown2;
|
|
} Dwg_SummaryInfo;
|
|
|
|
/* Contains information about the application that wrote
|
|
the .dwg file (encrypted = 2). */
|
|
typedef struct _dwg_appinfo
|
|
{
|
|
BITCODE_RL class_version; // 3
|
|
BITCODE_RL num_strings; // 2-3
|
|
BITCODE_T16 appinfo_name; // AppInfoDataList
|
|
BITCODE_RC version_checksum[16];
|
|
BITCODE_RC comment_checksum[16];
|
|
BITCODE_RC product_checksum[16];
|
|
BITCODE_T16 version; // "19.0.55.0.0", "Teigha(R) 4.3.2.0"
|
|
BITCODE_T16 comment; // "Autodesk DWG. This file is a Trusted DWG "...
|
|
BITCODE_T16 product_info; // XML ProductInformation
|
|
} Dwg_AppInfo;
|
|
|
|
/* File Dependencies, IMAGE files, fonts, xrefs, plotconfigs */
|
|
typedef struct _dwg_filedeplist
|
|
{
|
|
BITCODE_RL num_features;
|
|
BITCODE_TU32 *features; // Acad:XRef, Acad:Image, Acad:PlotConfig, Acad:Text
|
|
BITCODE_RL num_files;
|
|
Dwg_FileDepList_Files *files;
|
|
} Dwg_FileDepList;
|
|
|
|
/* password info */
|
|
typedef struct _dwg_security
|
|
{
|
|
BITCODE_RL unknown_1; // 0xc
|
|
BITCODE_RL unknown_2; // 0
|
|
BITCODE_RL unknown_3; // 0xabcdabcd
|
|
BITCODE_RL crypto_id; //
|
|
BITCODE_T32 crypto_name; // "Microsoft Base DSS and Diffie-Hellman
|
|
// Cryptographic Provider"
|
|
BITCODE_RL algo_id; // RC4
|
|
BITCODE_RL key_len; // 40
|
|
BITCODE_RL encr_size; //
|
|
BITCODE_TF encr_buffer;
|
|
} Dwg_Security;
|
|
|
|
typedef struct _dwg_vbaproject
|
|
{
|
|
BITCODE_RL size;
|
|
BITCODE_TF unknown_bits;
|
|
} Dwg_VBAProject;
|
|
|
|
typedef struct _dwg_appinfohistory
|
|
{
|
|
BITCODE_RL size;
|
|
BITCODE_TF unknown_bits;
|
|
} Dwg_AppInfoHistory;
|
|
|
|
typedef struct _dwg_revhistory
|
|
{
|
|
BITCODE_RL class_version;
|
|
BITCODE_RL class_minor;
|
|
BITCODE_RL num_histories;
|
|
BITCODE_RL *histories;
|
|
} Dwg_RevHistory;
|
|
|
|
typedef struct _dwg_objfreespace
|
|
{
|
|
BITCODE_RLL zero;
|
|
BITCODE_RLL numhandles;
|
|
BITCODE_TIMERLL TDUPDATE;
|
|
BITCODE_RL objects_address;
|
|
BITCODE_RC numnums; // RLL (uint64_t) or uint128_t
|
|
BITCODE_RLL max32; // 0x32
|
|
BITCODE_RLL max64; // 0x64
|
|
BITCODE_RLL maxtbl; // 0x200
|
|
BITCODE_RLL maxrl;
|
|
BITCODE_RLL max32_hi;
|
|
BITCODE_RLL max64_hi;
|
|
BITCODE_RLL maxtbl_hi;
|
|
BITCODE_RLL maxrl_hi;
|
|
} Dwg_ObjFreeSpace;
|
|
|
|
typedef struct _dwg_template
|
|
{
|
|
BITCODE_T16 description; // or TU16 >=r2007
|
|
BITCODE_RS MEASUREMENT;
|
|
} Dwg_Template;
|
|
|
|
typedef struct _dwg_secondheader_sections
|
|
{
|
|
BITCODE_RCd nr;
|
|
BITCODE_BL address;
|
|
BITCODE_BL size;
|
|
} Dwg_SecondHeader_Sections;
|
|
|
|
typedef struct _dwg_secondheader_handles
|
|
{
|
|
BITCODE_RCd num_hdl;
|
|
BITCODE_RCd nr;
|
|
BITCODE_RC hdl[8];
|
|
const char *name;
|
|
} Dwg_SecondHeader_Handles;
|
|
|
|
typedef struct _dwg_secondheader
|
|
{
|
|
BITCODE_RL size;
|
|
BITCODE_RL address;
|
|
BITCODE_RC version[11];
|
|
BITCODE_RC is_maint;
|
|
BITCODE_RC zero_one_or_three;
|
|
BITCODE_BS dwg_version;
|
|
BITCODE_RS codepage;
|
|
BITCODE_RC num_sections;
|
|
Dwg_SecondHeader_Sections sections[7];
|
|
BITCODE_BS num_handles;
|
|
Dwg_SecondHeader_Handles handles[14];
|
|
BITCODE_RS crc;
|
|
BITCODE_RLL junk_r14; /*!< r14-r2000 */
|
|
} Dwg_SecondHeader;
|
|
|
|
/**
|
|
Main DWG struct
|
|
*/
|
|
|
|
typedef struct _dwg_struct
|
|
{
|
|
Dwg_Header header;
|
|
|
|
BITCODE_BS num_classes; /*!< number of classes */
|
|
Dwg_Class * dwg_class; /*!< array of classes */
|
|
BITCODE_BL num_objects; /*!< number of objects */
|
|
BITCODE_BL num_alloced_objects;/*!< room for objects */
|
|
Dwg_Object * object; /*!< list of all objects and entities */
|
|
BITCODE_BL num_entities; /*!< number of entities in object */
|
|
BITCODE_BL num_object_refs; /*!< number of object_ref's (resolved handles) */
|
|
BITCODE_BL cur_index; /*!< how many we have written currently */
|
|
Dwg_Object_Ref **object_ref; /*!< array of most handles */
|
|
struct _inthash *object_map; /*!< map of all handles */
|
|
int dirty_refs; /* 1 if we added an entity, and invalidated all
|
|
the internal ref->obj's */
|
|
unsigned int opts; /* See DWG_OPTS_* below */
|
|
|
|
Dwg_Header_Variables header_vars;
|
|
Dwg_Chain thumbnail;
|
|
|
|
union {
|
|
Dwg_R2004_Header r2004_header; /* encrypted, packed */
|
|
Dwg_R2007_Header r2007_file_header; /* encrypted, packed */
|
|
};
|
|
|
|
/* Should only be initialized after the read/write is complete. */
|
|
Dwg_Object *mspace_block;
|
|
Dwg_Object *pspace_block;
|
|
/* This TABLE might be empty with num_entries=0 */
|
|
Dwg_Object_BLOCK_CONTROL block_control;
|
|
|
|
/* #define DWG_AUXHEADER_SIZE 123 */
|
|
Dwg_AuxHeader auxheader;
|
|
Dwg_SecondHeader secondheader;
|
|
Dwg_SummaryInfo summaryinfo;
|
|
/* Contains information about the application that wrote
|
|
the .dwg file (encrypted = 2). */
|
|
Dwg_AppInfo appinfo;
|
|
/* File Dependencies, IMAGE files, fonts, xrefs, plotconfigs */
|
|
Dwg_FileDepList filedeplist;
|
|
Dwg_Security security; /* password info */
|
|
Dwg_VBAProject vbaproject;
|
|
Dwg_AppInfoHistory appinfohistory;
|
|
Dwg_RevHistory revhistory;
|
|
Dwg_ObjFreeSpace objfreespace;
|
|
Dwg_Template Template;
|
|
Dwg_AcDs acds;
|
|
|
|
unsigned int layout_type;
|
|
unsigned int num_acis_sab_hdl; // temporary, until we can parse acds for SAB data, r2013+
|
|
BITCODE_H *acis_sab_hdl;
|
|
BITCODE_RLL next_hdl; // for add_document handle holes
|
|
|
|
BITCODE_BL prev_entity_index; // for speedup find_prev_entity
|
|
} Dwg_Data;
|
|
|
|
#define DWG_OPTS_LOGLEVEL 0xf
|
|
#define DWG_OPTS_MINIMAL 0x10
|
|
#define DWG_OPTS_DXFB 0x20
|
|
/* can be safely shared */
|
|
#define DWG_OPTS_JSONFIRST 0x20
|
|
#define DWG_OPTS_INDXF 0x40
|
|
#define DWG_OPTS_INJSON 0x80
|
|
#define DWG_OPTS_IN (DWG_OPTS_INDXF | DWG_OPTS_INJSON)
|
|
|
|
typedef enum RESBUF_VALUE_TYPE
|
|
{
|
|
DWG_VT_INVALID = 0,
|
|
DWG_VT_STRING = 1,
|
|
DWG_VT_POINT3D = 2,
|
|
DWG_VT_REAL = 3,
|
|
DWG_VT_INT16 = 4,
|
|
DWG_VT_INT32 = 5,
|
|
DWG_VT_INT8 = 6,
|
|
DWG_VT_BINARY = 7,
|
|
DWG_VT_HANDLE = 8,
|
|
DWG_VT_OBJECTID = 9,
|
|
DWG_VT_BOOL = 10, // VT_BOOL clashes with /usr/x86_64-w64-mingw32/sys-root/mingw/include/wtypes.h
|
|
DWG_VT_INT64 = 11, // RLL
|
|
} Dwg_Resbuf_Value_Type;
|
|
|
|
/*--------------------------------------------------
|
|
* Exported Functions
|
|
*/
|
|
|
|
EXPORT int dwg_read_file (const char *restrict filename,
|
|
Dwg_Data *restrict dwg);
|
|
EXPORT int dxf_read_file (const char *restrict filename,
|
|
Dwg_Data *restrict dwg);
|
|
// You might need to probe for that.
|
|
EXPORT int dwg_write_file (const char *restrict filename,
|
|
const Dwg_Data *restrict dwg);
|
|
|
|
/* Supports multiple preview picture types.
|
|
Currently 3 types: BMP 2, WMF 3 and PNG as type 6.
|
|
Returns the size of the image.
|
|
*/
|
|
EXPORT unsigned char *dwg_bmp (const Dwg_Data *restrict dwg,
|
|
BITCODE_RL *restrict size,
|
|
BITCODE_RC *restrict typep);
|
|
|
|
/** Converts the internal enum RC into 100th mm lineweight, with
|
|
* -1 BYLAYER, -2 BYBLOCK, -3 BYLWDEFAULT.
|
|
*/
|
|
EXPORT int dxf_cvt_lweight (const BITCODE_BSd value);
|
|
|
|
/** Converts the 100th mm lineweight, with -1 BYLAYER, -2 BYBLOCK, -3 BYLWDEFAULT,
|
|
into the internal enum RC.
|
|
*/
|
|
EXPORT BITCODE_BSd dxf_revcvt_lweight (const int lw);
|
|
|
|
/* Return the matching _CONTROL table, or NULL
|
|
*/
|
|
EXPORT BITCODE_H
|
|
dwg_ctrl_table (Dwg_Data *restrict dwg, const char *restrict table);
|
|
|
|
/* Search for the name in the associated table, and return its handle. Search
|
|
* is case-insensitive.
|
|
* Both name and table are ascii.
|
|
*/
|
|
EXPORT BITCODE_H dwg_find_tablehandle (Dwg_Data *restrict dwg,
|
|
const char *restrict name,
|
|
const char *restrict table);
|
|
EXPORT BITCODE_H dwg_find_tablehandle_index (Dwg_Data *restrict dwg,
|
|
const int index,
|
|
const char *restrict table);
|
|
|
|
/* Search for handle in associated table, and return its name (as UTF-8) */
|
|
EXPORT char *
|
|
dwg_handle_name (Dwg_Data *restrict dwg, const char *restrict table,
|
|
const BITCODE_H restrict handle);
|
|
|
|
/** Not checking the header_vars entry, only searching the objects
|
|
* Returning a hardowner or hardpointer (DICTIONARY) ref (code 3 or 5)
|
|
* to it, as stored in header_vars. table must contain the "_CONTROL" suffix.
|
|
* table is ascii.
|
|
*/
|
|
EXPORT BITCODE_H dwg_find_table_control (Dwg_Data *restrict dwg,
|
|
const char *restrict table);
|
|
|
|
/** Search for a dictionary ref.
|
|
* Returning a hardpointer ref (5) to it, as stored in header_vars.
|
|
* Name is ascii.
|
|
*/
|
|
EXPORT BITCODE_H dwg_find_dictionary (Dwg_Data *restrict dwg,
|
|
const char *restrict name);
|
|
/** Search for a named dictionary entry in the given dict.
|
|
* Search is case-sensitive. name is ASCII. */
|
|
EXPORT BITCODE_H dwg_find_dicthandle (Dwg_Data *restrict dwg, BITCODE_H dict,
|
|
const char *restrict name);
|
|
/** Search all dictionary entries in the given dict.
|
|
* Check for the matching name of the handle object. (Control lists).
|
|
* Search is case-insensitive */
|
|
EXPORT BITCODE_H dwg_find_dicthandle_objname (Dwg_Data *restrict dwg, BITCODE_H dict,
|
|
const char *restrict name);
|
|
/* Search for a table EXTNAME */
|
|
EXPORT char *dwg_find_table_extname (Dwg_Data *restrict dwg,
|
|
Dwg_Object *restrict obj);
|
|
/* Returns the string value of the member of the AcDbVariableDictionary.
|
|
The name is ascii. E.g. LIGHTINGUNITS => "0" */
|
|
EXPORT char *dwg_variable_dict (Dwg_Data *restrict dwg,
|
|
const char *restrict name);
|
|
|
|
EXPORT double dwg_model_x_min (const Dwg_Data *restrict);
|
|
EXPORT double dwg_model_x_max (const Dwg_Data *restrict);
|
|
EXPORT double dwg_model_y_min (const Dwg_Data *restrict);
|
|
EXPORT double dwg_model_y_max (const Dwg_Data *restrict);
|
|
EXPORT double dwg_model_z_min (const Dwg_Data *restrict);
|
|
EXPORT double dwg_model_z_max (const Dwg_Data *restrict);
|
|
EXPORT double dwg_page_x_min (const Dwg_Data *restrict);
|
|
EXPORT double dwg_page_x_max (const Dwg_Data *restrict);
|
|
EXPORT double dwg_page_y_min (const Dwg_Data *restrict);
|
|
EXPORT double dwg_page_y_max (const Dwg_Data *restrict);
|
|
|
|
EXPORT Dwg_Object_BLOCK_CONTROL * dwg_block_control (Dwg_Data *restrict dwg);
|
|
|
|
EXPORT Dwg_Object_Ref * dwg_model_space_ref (Dwg_Data *restrict dwg);
|
|
EXPORT Dwg_Object_Ref * dwg_paper_space_ref (Dwg_Data *restrict dwg);
|
|
EXPORT Dwg_Object * dwg_model_space_object (Dwg_Data *restrict dwg);
|
|
EXPORT Dwg_Object * dwg_paper_space_object (Dwg_Data *restrict dwg);
|
|
|
|
EXPORT unsigned int dwg_get_layer_count (const Dwg_Data *restrict dwg);
|
|
|
|
EXPORT Dwg_Object_LAYER ** dwg_get_layers (const Dwg_Data *restrict dwg);
|
|
|
|
EXPORT BITCODE_BL dwg_get_num_objects (const Dwg_Data *restrict dwg);
|
|
|
|
EXPORT BITCODE_BL dwg_get_object_num_objects (const Dwg_Data *restrict dwg);
|
|
|
|
EXPORT int dwg_class_is_entity (const Dwg_Class *restrict klass);
|
|
|
|
EXPORT int dwg_obj_is_control (const Dwg_Object *restrict obj);
|
|
EXPORT int dwg_obj_is_table (const Dwg_Object *restrict obj);
|
|
EXPORT int dwg_obj_is_subentity (const Dwg_Object *restrict obj);
|
|
EXPORT int dwg_obj_has_subentity (const Dwg_Object *restrict obj);
|
|
EXPORT int dwg_obj_is_3dsolid (const Dwg_Object *restrict obj);
|
|
EXPORT int dwg_obj_is_acsh (const Dwg_Object *restrict obj);
|
|
|
|
EXPORT BITCODE_BL dwg_get_num_entities (const Dwg_Data *restrict);
|
|
|
|
EXPORT Dwg_Object_Entity **dwg_get_entities (const Dwg_Data *restrict);
|
|
|
|
EXPORT Dwg_Object_LAYER *
|
|
dwg_get_entity_layer (const Dwg_Object_Entity *restrict);
|
|
|
|
EXPORT Dwg_Object *dwg_next_object (const Dwg_Object *obj);
|
|
EXPORT Dwg_Object *dwg_next_entity (const Dwg_Object *obj);
|
|
// next available 0 ref + 1, when all refs are alreay filled
|
|
EXPORT BITCODE_RLL dwg_next_handle (const Dwg_Data *dwg);
|
|
// next available handle, computed form the HANDSEED, which is bumped
|
|
EXPORT BITCODE_RLL dwg_next_handseed (Dwg_Data *dwg);
|
|
|
|
EXPORT Dwg_Object *dwg_ref_object (Dwg_Data *restrict dwg,
|
|
Dwg_Object_Ref *restrict ref);
|
|
EXPORT Dwg_Object *dwg_ref_object_relative (Dwg_Data *restrict dwg,
|
|
Dwg_Object_Ref *restrict ref,
|
|
const Dwg_Object *restrict obj);
|
|
EXPORT Dwg_Object *dwg_ref_object_silent (Dwg_Data *restrict dwg,
|
|
Dwg_Object_Ref *restrict ref);
|
|
|
|
EXPORT Dwg_Object *get_first_owned_entity (const Dwg_Object *restrict hdr);
|
|
EXPORT Dwg_Object *get_next_owned_entity (const Dwg_Object *restrict hdr,
|
|
const Dwg_Object *restrict current);
|
|
EXPORT Dwg_Object *get_first_owned_subentity (const Dwg_Object *restrict owner);
|
|
EXPORT Dwg_Object *
|
|
get_next_owned_subentity (const Dwg_Object *restrict owner,
|
|
const Dwg_Object *restrict current);
|
|
EXPORT Dwg_Object *get_first_owned_block (const Dwg_Object *hdr);
|
|
EXPORT Dwg_Object *get_last_owned_block (const Dwg_Object *hdr);
|
|
EXPORT Dwg_Object *get_next_owned_block (const Dwg_Object *restrict hdr,
|
|
const Dwg_Object *restrict current);
|
|
EXPORT Dwg_Object *get_next_owned_block_entity (const Dwg_Object *restrict hdr,
|
|
const Dwg_Object *restrict current);
|
|
EXPORT Dwg_Object *dwg_get_first_object (const Dwg_Data *dwg,
|
|
const Dwg_Object_Type type);
|
|
EXPORT Dwg_Object *dwg_get_next_object (const Dwg_Data *dwg,
|
|
const Dwg_Object_Type type,
|
|
const BITCODE_RL index);
|
|
|
|
EXPORT Dwg_Object *dwg_resolve_handle (const Dwg_Data *restrict dwg,
|
|
BITCODE_RLL absref);
|
|
EXPORT Dwg_Object *dwg_resolve_handle_silent (const Dwg_Data *restrict dwg,
|
|
const BITCODE_RLL absref);
|
|
EXPORT int dwg_resolve_handleref (Dwg_Object_Ref *restrict ref,
|
|
const Dwg_Object *restrict obj);
|
|
|
|
EXPORT Dwg_Object *dwg_resolve_jump (const Dwg_Object *obj);
|
|
EXPORT Dwg_Section_Type dwg_section_type (const char *restrict name);
|
|
EXPORT Dwg_Section_Type dwg_section_wtype (const DWGCHAR *restrict wname);
|
|
EXPORT const char *dwg_section_name (const Dwg_Data *dwg, const unsigned int sec_id);
|
|
|
|
EXPORT enum RESBUF_VALUE_TYPE dwg_resbuf_value_type (short gc);
|
|
|
|
/** Free the whole DWG. all tables, sections, objects, ...
|
|
*/
|
|
EXPORT void dwg_free (Dwg_Data *restrict dwg);
|
|
|
|
/** Free the object (all three structs and its fields)
|
|
*/
|
|
EXPORT void dwg_free_object (Dwg_Object *restrict obj);
|
|
|
|
/** Add the empty ref to the DWG (freshly malloc'ed), or NULL.
|
|
*/
|
|
EXPORT Dwg_Object_Ref * dwg_new_ref (Dwg_Data *restrict dwg);
|
|
|
|
/** For encode:
|
|
* May need obj to shorten the code to a relative offset, but not in header_vars.
|
|
* There obj is NULL.
|
|
*/
|
|
EXPORT int dwg_add_handle (Dwg_Handle *restrict hdl, const BITCODE_RC code,
|
|
const BITCODE_RLL value,
|
|
const Dwg_Object *restrict obj);
|
|
|
|
/** Returns an existing ref with the same ownership (hard/soft, owner/pointer)
|
|
or creates it. With obj non-NULL it may return a relative offset, otherwise
|
|
always absolute.
|
|
*/
|
|
EXPORT Dwg_Object_Ref *dwg_add_handleref (Dwg_Data *restrict dwg,
|
|
const BITCODE_RC code,
|
|
const BITCODE_RLL value,
|
|
const Dwg_Object *restrict obj);
|
|
/** Return a link to the global ref or a new one. Or a NULLHDL. */
|
|
EXPORT Dwg_Object_Ref *
|
|
dwg_dup_handleref (Dwg_Data *restrict dwg, const Dwg_Object_Ref *restrict ref);
|
|
|
|
/** Creates a non-global, free'able handle ref. Never relative */
|
|
EXPORT Dwg_Object_Ref *
|
|
dwg_add_handleref_free (const BITCODE_RC code, const BITCODE_RLL absref);
|
|
|
|
EXPORT const char *dwg_version_type (const Dwg_Version_Type version);
|
|
EXPORT Dwg_Version_Type dwg_version_as (const char *version);
|
|
EXPORT Dwg_Version_Type dwg_version_hdr_type (const char* hdr);
|
|
EXPORT int dwg_supports_eed (const Dwg_Data *dwg);
|
|
/* to read and write */
|
|
EXPORT int dwg_supports_obj (const Dwg_Data *restrict dwg,
|
|
const Dwg_Object *restrict obj);
|
|
EXPORT void dwg_errstrings (int error);
|
|
|
|
EXPORT char *dwg_encrypt_SAT1 (BITCODE_BL blocksize,
|
|
BITCODE_RC *restrict acis_data,
|
|
int *restrict acis_data_offset);
|
|
/* Converts v2 SAB acis_data in-place to SAT v1 encr_sat_data[].
|
|
Sets _obj->_dxf_sab_converted to 1, denoting that encr_sat_data is NOT the
|
|
encrypted acis_data anymore, rather the converted from SAB for DXF */
|
|
EXPORT int dwg_convert_SAB_to_SAT1 (Dwg_Entity_3DSOLID *restrict _obj);
|
|
|
|
|
|
/* The old color.index 0-256 */
|
|
typedef struct rgbpalette {
|
|
unsigned char r,g,b;
|
|
} Dwg_RGB_Palette;
|
|
EXPORT const Dwg_RGB_Palette *dwg_rgb_palette (void);
|
|
/* Returns the RGB value for the palette index.
|
|
*/
|
|
EXPORT BITCODE_BL dwg_rgb_palette_index (BITCODE_BS index);
|
|
/* find a matching color index (0-255) for a truecolor rgb value.
|
|
returns 256 if not found, i.e. the default ByLayer.
|
|
*/
|
|
EXPORT BITCODE_BS dwg_find_color_index (BITCODE_BL rgb);
|
|
|
|
/** Add the empty object to the DWG.
|
|
Returns DWG_ERR_OUTOFMEM, -1 for realloced or 0 if not.
|
|
objects are allocated in bulk, and all old obj pointers may become invalid.
|
|
The new object is at &dwg->object[dwg->num_objects - 1].
|
|
*/
|
|
EXPORT int dwg_add_object (Dwg_Data *restrict dwg);
|
|
|
|
/* Find if an object name (our internal name, not anything used elsewhere)
|
|
is defined, and return our fixed type, the public dxfname and if it's an entity. */
|
|
EXPORT int dwg_object_name (const char *const restrict name, // in
|
|
const char **restrict dxfnamep, // out, maybe NULL
|
|
Dwg_Object_Type *restrict typep, // out, maybe NULL
|
|
int *restrict is_entp, // out, maybe NULL
|
|
Dwg_Class_Stability *restrict stabilityp); // out, maybe NULL
|
|
|
|
/** Initialize the empty entity or object with its three structs.
|
|
All fields are zero'd, some are initialized with default values, as
|
|
defined in dwg.spec. obj->fixedtype is set, obj->type only for static types.
|
|
Use dwg_encode_get_class for the variable types.
|
|
Returns 0 or DWG_ERR_OUTOFMEM.
|
|
*/
|
|
// clang-format off
|
|
/* Start auto-generated content. Do not touch. */
|
|
EXPORT int dwg_setup__3DFACE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup__3DSOLID (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ARC (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ATTDEF (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ATTRIB (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCK (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_CIRCLE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DIMENSION_ALIGNED (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DIMENSION_ANG2LN (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DIMENSION_ANG3PT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DIMENSION_DIAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DIMENSION_LINEAR (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DIMENSION_ORDINATE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DIMENSION_RADIUS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ELLIPSE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ENDBLK (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_INSERT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LEADER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LINE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LOAD (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_MINSERT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_MLINE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_MTEXT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_OLEFRAME (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_POINT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_POLYLINE_2D (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_POLYLINE_3D (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_POLYLINE_MESH (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_POLYLINE_PFACE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_PROXY_ENTITY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_RAY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_REGION (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SEQEND (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SHAPE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SOLID (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SPLINE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_TEXT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_TOLERANCE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_TRACE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_UNKNOWN_ENT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_VERTEX_2D (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_VERTEX_3D (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_VERTEX_MESH (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_VERTEX_PFACE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_VERTEX_PFACE_FACE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_VIEWPORT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_XLINE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_APPID (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_APPID_CONTROL (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCK_CONTROL (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCK_HEADER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DICTIONARY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DIMSTYLE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DIMSTYLE_CONTROL (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DUMMY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LAYER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LAYER_CONTROL (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LONG_TRANSACTION (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LTYPE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LTYPE_CONTROL (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_MLINESTYLE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_STYLE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_STYLE_CONTROL (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_UCS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_UCS_CONTROL (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_UNKNOWN_OBJ (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_VIEW (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_VIEW_CONTROL (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_VPORT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_VPORT_CONTROL (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_VX_CONTROL (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_VX_TABLE_RECORD (Dwg_Object *obj);
|
|
/* untyped > 500 */
|
|
EXPORT int dwg_setup__3DLINE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_CAMERA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DGNUNDERLAY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DWFUNDERLAY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ENDREP (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_HATCH (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_IMAGE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_JUMP (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LIGHT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LWPOLYLINE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_MESH (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_MULTILEADER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_OLE2FRAME (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_PDFUNDERLAY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_REPEAT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SECTIONOBJECT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACSH_BOOLEAN_CLASS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACSH_BOX_CLASS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACSH_CONE_CLASS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACSH_CYLINDER_CLASS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACSH_FILLET_CLASS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACSH_HISTORY_CLASS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACSH_SPHERE_CLASS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACSH_TORUS_CLASS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACSH_WEDGE_CLASS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCGEOMDEPENDENCY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCNETWORK (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKALIGNMENTGRIP (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKALIGNMENTPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKBASEPOINTPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKFLIPACTION (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKFLIPGRIP (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKFLIPPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKGRIPLOCATIONCOMPONENT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKLINEARGRIP (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKLOOKUPGRIP (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKMOVEACTION (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKROTATEACTION (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKROTATIONGRIP (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKSCALEACTION (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKVISIBILITYGRIP (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_CELLSTYLEMAP (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DETAILVIEWSTYLE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DICTIONARYVAR (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DICTIONARYWDFLT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DYNAMICBLOCKPURGEPREVENTER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_FIELD (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_FIELDLIST (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_GEODATA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_GROUP (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_IDBUFFER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_IMAGEDEF (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_IMAGEDEF_REACTOR (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_INDEX (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LAYERFILTER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LAYER_INDEX (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LAYOUT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_PLACEHOLDER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_PLOTSETTINGS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_RASTERVARIABLES (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_RENDERENVIRONMENT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SCALE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SECTIONVIEWSTYLE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SECTION_MANAGER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SORTENTSTABLE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SPATIAL_FILTER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SUN (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_TABLEGEOMETRY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_VBA_PROJECT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_VISUALSTYLE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_WIPEOUTVARIABLES (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_XRECORD (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_PDFDEFINITION (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DGNDEFINITION (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DWFDEFINITION (Dwg_Object *obj);
|
|
/* unstable */
|
|
EXPORT int dwg_setup_ARC_DIMENSION (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_HELIX (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LARGE_RADIAL_DIMENSION (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LAYOUTPRINTCONFIG (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_PLANESURFACE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_POINTCLOUD (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_POINTCLOUDEX (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_WIPEOUT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACSH_BREP_CLASS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACSH_CHAMFER_CLASS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACSH_PYRAMID_CLASS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ALDIMOBJECTCONTEXTDATA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOC2DCONSTRAINTGROUP (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCACTION (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCACTIONPARAM (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCARRAYACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCASMBODYACTIONPARAM (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCBLENDSURFACEACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCCOMPOUNDACTIONPARAM (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCDEPENDENCY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCDIMDEPENDENCYBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCEXTENDSURFACEACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCEXTRUDEDSURFACEACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCFACEACTIONPARAM (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCFILLETSURFACEACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCLOFTEDSURFACEACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCNETWORKSURFACEACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCOBJECTACTIONPARAM (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCOFFSETSURFACEACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCOSNAPPOINTREFACTIONPARAM (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCPATCHSURFACEACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCPATHACTIONPARAM (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCPLANESURFACEACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCPOINTREFACTIONPARAM (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCREVOLVEDSURFACEACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCTRIMSURFACEACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCVALUEDEPENDENCY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCVARIABLE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCVERTEXACTIONPARAM (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLKREFOBJECTCONTEXTDATA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKALIGNEDCONSTRAINTPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKANGULARCONSTRAINTPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKARRAYACTION (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKDIAMETRICCONSTRAINTPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKHORIZONTALCONSTRAINTPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKLINEARCONSTRAINTPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKLINEARPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKLOOKUPACTION (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKLOOKUPPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKPARAMDEPENDENCYBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKPOINTPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKPOLARGRIP (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKPOLARPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKPOLARSTRETCHACTION (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKRADIALCONSTRAINTPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKREPRESENTATION (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKROTATIONPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKSTRETCHACTION (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKUSERPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKVERTICALCONSTRAINTPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKVISIBILITYPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKXYGRIP (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKXYPARAMETER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DATALINK (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DBCOLOR (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_EVALUATION_GRAPH (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_FCFOBJECTCONTEXTDATA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_GRADIENT_BACKGROUND (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_GROUND_PLANE_BACKGROUND (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_IBL_BACKGROUND (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_IMAGE_BACKGROUND (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LEADEROBJECTCONTEXTDATA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LIGHTLIST (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_MATERIAL (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_MENTALRAYRENDERSETTINGS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_MLEADERSTYLE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_MTEXTOBJECTCONTEXTDATA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_OBJECT_PTR (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_PARTIAL_VIEWING_INDEX (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_POINTCLOUDCOLORMAP (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_POINTCLOUDDEF (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_POINTCLOUDDEFEX (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_POINTCLOUDDEF_REACTOR (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_POINTCLOUDDEF_REACTOR_EX (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_PROXY_OBJECT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_RAPIDRTRENDERSETTINGS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_RENDERENTRY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_RENDERGLOBAL (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_RENDERSETTINGS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SECTION_SETTINGS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SKYLIGHT_BACKGROUND (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SOLID_BACKGROUND (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SPATIAL_INDEX (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_TABLESTYLE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_TEXTOBJECTCONTEXTDATA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCARRAYMODIFYPARAMETERS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCARRAYPATHPARAMETERS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCARRAYPOLARPARAMETERS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCARRAYRECTANGULARPARAMETERS (Dwg_Object *obj);
|
|
#ifdef DEBUG_CLASSES
|
|
EXPORT int dwg_setup_ALIGNMENTPARAMETERENTITY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ARCALIGNEDTEXT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BASEPOINTPARAMETERENTITY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_EXTRUDEDSURFACE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_FLIPGRIPENTITY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_FLIPPARAMETERENTITY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_GEOPOSITIONMARKER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LINEARGRIPENTITY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LINEARPARAMETERENTITY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_LOFTEDSURFACE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_MPOLYGON (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_NAVISWORKSMODEL (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_NURBSURFACE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_POINTPARAMETERENTITY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_POLARGRIPENTITY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_REVOLVEDSURFACE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ROTATIONGRIPENTITY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ROTATIONPARAMETERENTITY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_RTEXT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SWEPTSURFACE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_TABLE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_VISIBILITYGRIPENTITY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_VISIBILITYPARAMETERENTITY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_XYGRIPENTITY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_XYPARAMETERENTITY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACMECOMMANDHISTORY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACMESCOPE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACMESTATEMGR (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACSH_EXTRUSION_CLASS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACSH_LOFT_CLASS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACSH_REVOLVE_CLASS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ACSH_SWEEP_CLASS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ANGDIMOBJECTCONTEXTDATA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ANNOTSCALEOBJECTCONTEXTDATA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOC3POINTANGULARDIMACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCALIGNEDDIMACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCARRAYMODIFYACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCEDGEACTIONPARAM (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCEDGECHAMFERACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCEDGEFILLETACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCMLEADERACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCORDINATEDIMACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCPERSSUBENTMANAGER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCRESTOREENTITYSTATEACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCROTATEDDIMACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ASSOCSWEPTSURFACEACTIONBODY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKPROPERTIESTABLE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BLOCKPROPERTIESTABLEGRIP (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BREAKDATA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_BREAKPOINTREF (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_CONTEXTDATAMANAGER (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_CSACDOCUMENTOPTIONS (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_CURVEPATH (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DATATABLE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DIMASSOC (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DMDIMOBJECTCONTEXTDATA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_DYNAMICBLOCKPROXYNODE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_GEOMAPIMAGE (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_MLEADEROBJECTCONTEXTDATA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_MOTIONPATH (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_MTEXTATTRIBUTEOBJECTCONTEXTDATA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_NAVISWORKSMODELDEF (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_ORDDIMOBJECTCONTEXTDATA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_PERSUBENTMGR (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_POINTPATH (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_RADIMLGOBJECTCONTEXTDATA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_RADIMOBJECTCONTEXTDATA (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_SUNSTUDY (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_TABLECONTENT (Dwg_Object *obj);
|
|
EXPORT int dwg_setup_TVDEVICEPROPERTIES (Dwg_Object *obj);
|
|
//EXPORT int dwg_setup_ACDSRECORD (Dwg_Object *obj);
|
|
//EXPORT int dwg_setup_ACDSSCHEMA (Dwg_Object *obj);
|
|
//EXPORT int dwg_setup_NPOCOLLECTION (Dwg_Object *obj);
|
|
//EXPORT int dwg_setup_RAPIDRTRENDERENVIRONMENT (Dwg_Object *obj);
|
|
//EXPORT int dwg_setup_XREFPANELOBJECT (Dwg_Object *obj);
|
|
#endif
|
|
/* End auto-generated content */
|
|
// clang-format on
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|