1 #define DWG_TYPE DWG_TYPE_ASSOC2DCONSTRAINTGROUP
2 #include "common.c"
3
4 void
5 api_process (dwg_object *obj)
6 {
7 int error, isnew;
8 ASSOCACTION_fields;
9
10 BITCODE_BL version;
11 BITCODE_B b1;
12 BITCODE_3BD workplane[3];
13 BITCODE_H h1;
14 BITCODE_BL num_actions;
15 BITCODE_H *actions;
16 BITCODE_BL num_nodes;
17 Dwg_CONSTRAINTGROUPNODE *nodes;
18
19 Dwg_Version_Type dwg_version = obj->parent->header.version;
20 // #ifdef DEBUG_CLASSES
21 dwg_obj_assoc2dconstraintgroup *_obj
22 = dwg_object_to_ASSOC2DCONSTRAINTGROUP (obj);
23 // ASSOCACTION
24 CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, class_version, BS);
25 CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, geometry_status, BL);
26 CHK_ENTITY_MAX (_obj, ASSOC2DCONSTRAINTGROUP, geometry_status, BL, 10);
27 CHK_ENTITY_H (_obj, ASSOC2DCONSTRAINTGROUP, owningnetwork);
28 CHK_ENTITY_H (_obj, ASSOC2DCONSTRAINTGROUP, actionbody);
29 CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, action_index, BL);
30 CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, max_assoc_dep_index, BL);
31 CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, num_deps, BL);
32 for (unsigned i = 0; i < num_deps; i++)
33 {
34 CHK_SUBCLASS_TYPE (_obj->deps[i], ASSOCACTION_Deps, is_owned, B);
35 CHK_SUBCLASS_H (_obj->deps[i], ASSOCACTION_Deps, dep);
36 }
37 CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, num_owned_params, BL);
38 CHK_ENTITY_HV (_obj, ASSOC2DCONSTRAINTGROUP, owned_params, num_owned_params);
39 CHK_ENTITY_TYPE (_obj, ASSOCACTION, num_values, BL);
40 CHK_VALUEPARAM (num_values, values);
41
42 // ASSOC2DCONSTRAINTGROUP
43 CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, version, BL);
44 CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, b1, B);
45 // 3x10 workplane
46 // CHK_ENTITY_3RD (_obj, ASSOC2DCONSTRAINTGROUP, workplane[3],
47 // &workplane[3][0]);
48 CHK_ENTITY_H (_obj, ASSOC2DCONSTRAINTGROUP, h1);
49 CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, num_actions, BL);
50 CHK_ENTITY_HV (_obj, ASSOC2DCONSTRAINTGROUP, actions, num_actions);
51 CHK_ENTITY_TYPE (_obj, ASSOC2DCONSTRAINTGROUP, num_nodes, BL);
52 CHK_ENTITY_MAX (_obj, ASSOC2DCONSTRAINTGROUP, num_nodes, BL, 200);
53 for (unsigned i = 0; i < num_nodes; i++)
54 {
55 CHK_SUBCLASS_TYPE (_obj->nodes[i], CONSTRAINTGROUPNODE, nodeid, BL);
56 CHK_SUBCLASS_TYPE (_obj->nodes[i], CONSTRAINTGROUPNODE, status, RC);
57 CHK_SUBCLASS_TYPE (_obj->nodes[i], CONSTRAINTGROUPNODE, num_connections,
58 BL);
59 CHK_SUBCLASS_MAX (_obj->nodes[i], CONSTRAINTGROUPNODE, num_connections,
60 BL, _obj->num_actions);
61 if (_obj->nodes[i].num_connections > _obj->num_actions)
62 fail ("Invalid nodes[%u].num_connections", i);
63 else if (!_obj->nodes[i].connections)
64 fail ("Empty nodes[%u].connections", i);
65 else
66 for (unsigned j = 0;
67 j < MIN (_obj->num_actions, _obj->nodes[i].num_connections); j++)
68 {
69 if (!_obj->nodes[i].connections[j])
70 fail ("Invalid connections[%u]", j);
71 else
72 ok ("CONSTRAINTGROUPNODE[%d].connections[%d]: %d", i, j,
73 (int)_obj->nodes[i].connections[j]);
74 }
75 }
76 // #endif
77 }