1 // TODO DEBUGGING
2 #define DWG_TYPE DWG_TYPE_SWEPTSURFACE
3 #include "common.c"
4
5 void
6 api_process (dwg_object *obj)
7 {
8 int error, isnew;
9 _3DSOLID_FIELDS;
10
11 BITCODE_BS modeler_format_version;
12 BITCODE_BS u_isolines;
13 BITCODE_BS v_isolines;
14 BITCODE_BL i, class_version;
15
16 BITCODE_BL sweep_entity_id;
17 BITCODE_BL sweepdata_size;
18 BITCODE_TF sweepdata;
19 BITCODE_BL path_entity_id;
20 BITCODE_BL pathdata_size;
21 BITCODE_TF pathdata;
22 BITCODE_BD *sweep_entity_transmatrix;
23 BITCODE_BD *path_entity_transmatrix;
24
25 BITCODE_BD draft_angle;
26 BITCODE_BD draft_start_distance;
27 BITCODE_BD draft_end_distance;
28 BITCODE_BD twist_angle;
29 BITCODE_BD *sweep_entity_transmatrix1;
30 BITCODE_BD *path_entity_transmatrix1;
31 BITCODE_BD scale_factor;
32 BITCODE_BD align_angle;
33 BITCODE_B is_solid;
34 BITCODE_BS sweep_alignment_flags;
35 BITCODE_BS path_flags;
36 BITCODE_B align_start;
37 BITCODE_B bank;
38 BITCODE_B base_point_set;
39 BITCODE_B sweep_entity_transform_computed;
40 BITCODE_B path_entity_transform_computed;
41 BITCODE_3BD reference_vector_for_controlling_twist;
42
43 Dwg_Version_Type dwg_version = obj->parent->header.version;
44 #ifdef DEBUG_CLASSES
45 dwg_ent_sweptsurface *_obj = dwg_object_to_SWEPTSURFACE (obj);
46
47 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, acis_empty, B);
48 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, version, BS);
49 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, acis_data, TF);
50 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, wireframe_data_present, B);
51 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, point_present, B);
52 CHK_ENTITY_3RD (_obj, SWEPTSURFACE, point);
53 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, isoline_present, B);
54 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, isolines, BL);
55 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, num_wires, BL);
56 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, num_silhouettes, BL);
57 if (!dwg_dynapi_entity_value (_obj, "SWEPTSURFACE", "wires", &wires, NULL))
58 fail ("SWEPTSURFACE.wires");
59 else
60 {
61 for (i = 0; i < num_wires; i++)
62 printf ("SWEPTSURFACE.wires[%u]: " FORMAT_BLd "\n", i,
63 wires[i].selection_marker);
64 }
65 if (!dwg_dynapi_entity_value (_obj, "SWEPTSURFACE", "silhouettes",
66 &silhouettes, NULL))
67 fail ("SWEPTSURFACE.silhouettes");
68 else
69 {
70 for (i = 0; i < num_silhouettes; i++)
71 printf ("SWEPTSURFACE.silhouettes[%u]: " FORMAT_BL "\n", i,
72 silhouettes[i].vp_id);
73 }
74 if (dwg_version >= R_2007 && _obj->history_id) // if it did not fail before
75 {
76 CHK_ENTITY_H (_obj, SWEPTSURFACE, history_id);
77 }
78
79 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, modeler_format_version, BS);
80 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, u_isolines, BS);
81 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, v_isolines, BS);
82 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, class_version, BL);
83
84 if (!dwg_dynapi_entity_value (_obj, "SWEPTSURFACE",
85 "sweep_entity_transmatrix",
86 &sweep_entity_transmatrix, NULL)
87 || !sweep_entity_transmatrix)
88 fail ("SWEPTSURFACE.sweep_entity_transmatrix");
89 else
90 for (i = 0; i < 16; i++)
91 {
92 ok ("SWEPTSURFACE.sweep_entity_transmatrix[%d]: %f", i,
93 sweep_entity_transmatrix[i]);
94 }
95 if (!dwg_dynapi_entity_value (_obj, "SWEPTSURFACE",
96 "path_entity_transmatrix",
97 &path_entity_transmatrix, NULL)
98 || !path_entity_transmatrix)
99 fail ("SWEPTSURFACE.path_entity_transmatrix");
100 else
101 for (i = 0; i < 16; i++)
102 {
103 ok ("SWEPTSURFACE.path_entity_transmatrix[%d]: %f", i,
104 path_entity_transmatrix[i]);
105 }
106 if (!dwg_dynapi_entity_value (_obj, "SWEPTSURFACE",
107 "sweep_entity_transmatrix1",
108 &sweep_entity_transmatrix1, NULL)
109 || !sweep_entity_transmatrix1)
110 fail ("SWEPTSURFACE.sweep_entity_transmatrix1");
111 else
112 for (i = 0; i < 16; i++)
113 {
114 ok ("SWEPTSURFACE.sweep_entity_transmatrix1[%d]: %f", i,
115 sweep_entity_transmatrix1[i]);
116 }
117 if (!dwg_dynapi_entity_value (_obj, "SWEPTSURFACE",
118 "path_entity_transmatrix1",
119 &path_entity_transmatrix1, NULL)
120 || !path_entity_transmatrix1)
121 fail ("SWEPTSURFACE.path_entity_transmatrix1");
122 else
123 for (i = 0; i < 16; i++)
124 {
125 ok ("SWEPTSURFACE.path_entity_transmatrix1[%d]: %f", i,
126 path_entity_transmatrix1[i]);
127 }
128 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, sweep_entity_id, BL);
129 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, sweepdata_size, BL);
130 // CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, sweepdata, TF);
131 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, path_entity_id, BL);
132 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, pathdata_size, BL);
133 // CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, pathdata, TF);
134 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, draft_angle, BD);
135 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, draft_start_distance, BD);
136 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, draft_end_distance, BD);
137 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, twist_angle, BD);
138 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, scale_factor, BD);
139 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, align_angle, BD);
140 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, is_solid, B);
141 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, sweep_alignment_flags, BS);
142 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, path_flags, BS);
143 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, align_start, B);
144 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, bank, B);
145 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, base_point_set, B);
146 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, sweep_entity_transform_computed, B);
147 CHK_ENTITY_TYPE (_obj, SWEPTSURFACE, path_entity_transform_computed, B);
148 CHK_ENTITY_3RD (_obj, SWEPTSURFACE, reference_vector_for_controlling_twist);
149 #endif
150 }