1 // TODO DEBUGGING
2 #define DWG_TYPE DWG_TYPE_LOFTEDSURFACE
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_BD *loft_entity_transmatrix;
15 BITCODE_BL i, plane_normal_lofting_type;
16 BITCODE_BD start_draft_angle;
17 BITCODE_BD end_draft_angle;
18 BITCODE_BD start_draft_magnitude;
19 BITCODE_BD end_draft_magnitude;
20 BITCODE_B arc_length_parameterization;
21 BITCODE_B no_twist;
22 BITCODE_B align_direction;
23 BITCODE_B simple_surfaces;
24 BITCODE_B closed_surfaces;
25 BITCODE_B solid;
26 BITCODE_B ruled_surface;
27 BITCODE_B virtual_guide;
28 BITCODE_BS num_cross_sections;
29 BITCODE_BS num_guide_curves;
30 BITCODE_H *cross_sections;
31 BITCODE_H *guide_curves;
32 BITCODE_H path_curve;
33
34 Dwg_Version_Type dwg_version = obj->parent->header.version;
35 #ifdef DEBUG_CLASSES
36 dwg_ent_loftedsurface *_obj = dwg_object_to_LOFTEDSURFACE (obj);
37
38 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, acis_empty, B);
39 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, version, BS);
40 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, acis_data, TF);
41 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, wireframe_data_present, B);
42 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, point_present, B);
43 CHK_ENTITY_3RD (_obj, LOFTEDSURFACE, point);
44 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, isoline_present, B);
45 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, isolines, BL);
46 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, num_wires, BL);
47 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, num_silhouettes, BL);
48 if (!dwg_dynapi_entity_value (_obj, "LOFTEDSURFACE", "wires", &wires, NULL))
49 fail ("LOFTEDSURFACE.wires");
50 else
51 {
52 for (i = 0; i < num_wires; i++)
53 printf ("LOFTEDSURFACE.wires[%u]: " FORMAT_BLd "\n", i,
54 wires[i].selection_marker);
55 }
56 if (!dwg_dynapi_entity_value (_obj, "LOFTEDSURFACE", "silhouettes",
57 &silhouettes, NULL))
58 fail ("LOFTEDSURFACE.silhouettes");
59 else
60 {
61 for (i = 0; i < num_silhouettes; i++)
62 printf ("LOFTEDSURFACE.silhouettes[%u]: " FORMAT_BL "\n", i,
63 silhouettes[i].vp_id);
64 }
65 if (dwg_version >= R_2007 && _obj->history_id) // if it did not fail before
66 {
67 CHK_ENTITY_H (_obj, LOFTEDSURFACE, history_id);
68 }
69
70 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, modeler_format_version, BS);
71 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, u_isolines, BS);
72 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, v_isolines, BS);
73
74 if (!dwg_dynapi_entity_value (_obj, "LOFTEDSURFACE",
75 "loft_entity_transmatrix",
76 &loft_entity_transmatrix, NULL)
77 || !loft_entity_transmatrix)
78 fail ("LOFTEDSURFACE.loft_entity_transmatrix");
79 else
80 for (i = 0; i < 16; i++)
81 {
82 ok ("LOFTEDSURFACE.loft_entity_transmatrix[%d]: %f", i,
83 loft_entity_transmatrix[i]);
84 }
85 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, plane_normal_lofting_type, BL);
86 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, start_draft_angle, BD);
87 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, end_draft_angle, BD);
88 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, start_draft_magnitude, BD);
89 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, end_draft_magnitude, BD);
90 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, arc_length_parameterization, B);
91 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, no_twist, B);
92 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, align_direction, B);
93 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, simple_surfaces, B);
94 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, closed_surfaces, B);
95 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, solid, B);
96 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, ruled_surface, B);
97 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, virtual_guide, B);
98 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, num_cross_sections, BS);
99 CHK_ENTITY_TYPE (_obj, LOFTEDSURFACE, num_guide_curves, BS);
100 CHK_ENTITY_H (_obj, LOFTEDSURFACE, path_curve);
101 if (!dwg_dynapi_entity_value (_obj, "LOFTEDSURFACE", "cross_sections",
102 &cross_sections, NULL))
103 fail ("LOFTEDSURFACE.cross_sections");
104 for (i = 0; i < num_cross_sections; i++)
105 {
106 ok ("LOFTEDSURFACE.cross_sections[%d]: " FORMAT_REF, i,
107 ARGS_REF (cross_sections[i]));
108 }
109 if (!dwg_dynapi_entity_value (_obj, "LOFTEDSURFACE", "guide_curves",
110 &guide_curves, NULL))
111 fail ("LOFTEDSURFACE.guide_curves");
112 for (i = 0; i < num_guide_curves; i++)
113 {
114 ok ("LOFTEDSURFACE.guide_curves[%d]: " FORMAT_REF, i,
115 ARGS_REF (guide_curves[i]));
116 }
117 #endif
118 }