1 // unstable
2 #define DWG_TYPE DWG_TYPE_ASSOCASMBODYACTIONPARAM
3 #include "common.c"
4
5 void
6 api_process (dwg_object *obj)
7 {
8 int error, isnew;
9 ASSOCACTIONPARAM_fields;
10 /* AcDbAssocSingleDependencyActionParam */
11 BITCODE_BL asdap_class_version; // 0
12 BITCODE_H dep;
13 /* AcDbAssocAsmbodyActionParam */
14 BITCODE_BS class_version;
15 _3DSOLID_FIELDS;
16
17 Dwg_Version_Type dwg_version = obj->parent->header.version;
18 // #ifdef DEBUG_CLASSES
19 dwg_obj_assocasmbodyactionparam *_obj
20 = dwg_object_to_ASSOCASMBODYACTIONPARAM (obj);
21
22 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, is_r2013, BS);
23 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, aap_version, BL);
24 CHK_ENTITY_UTF8TEXT (_obj, ASSOCASMBODYACTIONPARAM, name);
25 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, asdap_class_version, BL);
26 CHK_ENTITY_H (_obj, ASSOCEDGEACTIONPARAM, dep);
27
28 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, class_version, BL);
29 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, acis_empty, B);
30 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, version, BS);
31 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, acis_data, TV);
32 if (!dwg_dynapi_entity_value (_obj, "ASSOCASMBODYACTIONPARAM", "acis_data",
33 &acis_data, NULL))
34 fail ("ASSOCASMBODYACTIONPARAM.acis_data");
35 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, wireframe_data_present, B);
36 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, point_present, B);
37 CHK_ENTITY_3RD (_obj, ASSOCASMBODYACTIONPARAM, point);
38 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, isoline_present, B);
39 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, isolines, BL);
40 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, num_wires, BL);
41 if (dwg_dynapi_entity_value (_obj, "ASSOCASMBODYACTIONPARAM", "wires",
42 &wires, NULL))
43 {
44 for (unsigned i = 0; i < num_wires; i++)
45 {
46 CHK_SUBCLASS_TYPE (wires[i], 3DSOLID_wire, type, RC);
47 CHK_SUBCLASS_TYPE (wires[i], 3DSOLID_wire, selection_marker, BLd);
48 PRE (R_2004)
49 {
50 CHK_SUBCLASS_TYPE (wires[i], 3DSOLID_wire, color, BS);
51 }
52 else
53 {
54 CHK_SUBCLASS_TYPE (wires[i], 3DSOLID_wire, color, BL);
55 }
56 CHK_SUBCLASS_TYPE (wires[i], 3DSOLID_wire, acis_index, BLd);
57 CHK_SUBCLASS_TYPE (wires[i], 3DSOLID_wire, num_points, BL);
58 CHK_SUBCLASS_3DPOINTS (wires[i], 3DSOLID_wire, points,
59 wires[i].num_points);
60 CHK_SUBCLASS_TYPE (wires[i], 3DSOLID_wire, transform_present, B);
61 if (wires[i].transform_present)
62 {
63 CHK_SUBCLASS_3RD (wires[i], 3DSOLID_wire, axis_x);
64 CHK_SUBCLASS_3RD (wires[i], 3DSOLID_wire, axis_y);
65 CHK_SUBCLASS_3RD (wires[i], 3DSOLID_wire, axis_z);
66 CHK_SUBCLASS_3RD (wires[i], 3DSOLID_wire, translation);
67 CHK_SUBCLASS_3RD (wires[i], 3DSOLID_wire, scale);
68 CHK_SUBCLASS_TYPE (wires[i], 3DSOLID_wire, has_rotation, B);
69 CHK_SUBCLASS_TYPE (wires[i], 3DSOLID_wire, has_reflection, B);
70 CHK_SUBCLASS_TYPE (wires[i], 3DSOLID_wire, has_shear, B);
71 }
72 }
73 }
74 else
75 fail ("ASSOCASMBODYACTIONPARAM.wires");
76
77 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, num_silhouettes, BL);
78 if (dwg_dynapi_entity_value (_obj, "ASSOCASMBODYACTIONPARAM", "silhouettes",
79 &silhouettes, NULL))
80 {
81 for (unsigned i = 0; i < num_silhouettes; i++)
82 {
83 CHK_SUBCLASS_TYPE (silhouettes[i], 3DSOLID_silhouette, vp_id, BL);
84 CHK_SUBCLASS_3RD (silhouettes[i], 3DSOLID_silhouette, vp_target);
85 CHK_SUBCLASS_3RD (silhouettes[i], 3DSOLID_silhouette,
86 vp_dir_from_target);
87 CHK_SUBCLASS_3RD (silhouettes[i], 3DSOLID_silhouette, vp_up_dir);
88 CHK_SUBCLASS_TYPE (silhouettes[i], 3DSOLID_silhouette,
89 vp_perspective, B);
90 CHK_SUBCLASS_TYPE (silhouettes[i], 3DSOLID_silhouette, has_wires, B);
91 if (silhouettes[i].has_wires)
92 {
93 wires = silhouettes[i].wires;
94 CHK_SUBCLASS_TYPE (silhouettes[i], 3DSOLID_silhouette, num_wires,
95 BL);
96 for (unsigned j = 0; j < silhouettes[i].num_wires; j++)
97 {
98 CHK_SUBCLASS_TYPE (wires[j], 3DSOLID_wire, type, RC);
99 CHK_SUBCLASS_TYPE (wires[j], 3DSOLID_wire, selection_marker,
100 BLd);
101 CHK_SUBCLASS_TYPE (wires[j], 3DSOLID_wire, color, BL);
102 CHK_SUBCLASS_TYPE (wires[j], 3DSOLID_wire, acis_index, BLd);
103 CHK_SUBCLASS_TYPE (wires[j], 3DSOLID_wire, num_points, BL);
104 CHK_SUBCLASS_3DPOINTS (wires[j], 3DSOLID_wire, points,
105 wires[i].num_points);
106 CHK_SUBCLASS_TYPE (wires[j], 3DSOLID_wire, transform_present,
107 B);
108 if (wires[j].transform_present)
109 {
110 CHK_SUBCLASS_3RD (wires[j], 3DSOLID_wire, axis_x);
111 CHK_SUBCLASS_3RD (wires[j], 3DSOLID_wire, axis_y);
112 CHK_SUBCLASS_3RD (wires[j], 3DSOLID_wire, axis_z);
113 CHK_SUBCLASS_3RD (wires[j], 3DSOLID_wire, translation);
114 CHK_SUBCLASS_3RD (wires[j], 3DSOLID_wire, scale);
115 CHK_SUBCLASS_TYPE (wires[j], 3DSOLID_wire, has_rotation,
116 B);
117 CHK_SUBCLASS_TYPE (wires[j], 3DSOLID_wire,
118 has_reflection, B);
119 CHK_SUBCLASS_TYPE (wires[j], 3DSOLID_wire, has_shear, B);
120 }
121 }
122 }
123 }
124 free (silhouettes);
125 }
126 else
127 fail ("ASSOCASMBODYACTIONPARAM.silhouettes");
128
129 if (version > 1)
130 {
131 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, num_materials, BL);
132 SINCE (R_2007)
133 {
134 if (!dwg_dynapi_entity_value (_obj, "BREP", "materials", &materials,
135 NULL))
136 fail ("BODY.materials");
137 else
138 {
139 for (unsigned i = 0; i < num_materials; i++)
140 {
141 CHK_SUBCLASS_TYPE (materials[i], 3DSOLID_material, array_index,
142 BL);
143 CHK_SUBCLASS_TYPE (materials[i], 3DSOLID_material, mat_absref,
144 BL);
145 CHK_SUBCLASS_H (materials[i], 3DSOLID_material,
146 material_handle);
147 }
148 }
149 }
150 }
151 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, has_revision_guid, B);
152 if (has_revision_guid)
153 {
154 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, revision_major, BL);
155 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, revision_minor1, BS);
156 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, revision_minor2, BS);
157 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, revision_bytes, TV);
158 CHK_ENTITY_TYPE (_obj, ASSOCASMBODYACTIONPARAM, end_marker, BL);
159 }
160
161 SINCE (R_2007)
162 {
163 CHK_ENTITY_H (_obj, ASSOCASMBODYACTIONPARAM, history_id);
164 }
165 // #endif
166 }