1 // TODO unstable
2 #define DWG_TYPE DWG_TYPE_DIMASSOC
3 #include "common.c"
4
5 void
6 api_process (dwg_object *obj)
7 {
8 int error, isnew;
9 BITCODE_H dimensionobj;
10 BITCODE_BL associativity;
11 BITCODE_B trans_space_flag;
12 BITCODE_RC rotated_type;
13 Dwg_DIMASSOC_Ref *ref;
14 // BITCODE_BS j;
15 BITCODE_BL num_intsectobj, num_xrefs;
16 BITCODE_H *intsectobj, *xrefs;
17 // BITCODE_BL intsect_gsmarker;
18 // BITCODE_H intsectxrefobj;
19
20 Dwg_Version_Type dwg_version = obj->parent->header.version;
21 dwg_obj_dimassoc *dimassoc = dwg_object_to_DIMASSOC (obj);
22
23 if (obj->fixedtype == DWG_TYPE_UNKNOWN_OBJ)
24 return;
25
26 CHK_ENTITY_TYPE (dimassoc, DIMASSOC, associativity, BLx);
27 CHK_ENTITY_MAX (dimassoc, DIMASSOC, associativity, BL, 15);
28 CHK_ENTITY_TYPE (dimassoc, DIMASSOC, trans_space_flag, B);
29 CHK_ENTITY_TYPE (dimassoc, DIMASSOC, rotated_type, RCd);
30 CHK_ENTITY_H (dimassoc, DIMASSOC, dimensionobj);
31 if (!dwg_dynapi_entity_value (dimassoc, "DIMASSOC", "ref", &ref, NULL))
32 fail ("DIMASSOC.ref");
33 for (int i = 0; i < 4; i++)
34 {
35 // 0 1 2 3 => 1 2 4 8. skip unset bits
36 if (!(associativity & (1 << i)))
37 continue;
38 CHK_SUBCLASS_UTF8TEXT (ref[i], DIMASSOC_Ref,
39 classname); // "AcDbOsnapPointRef"
40 CHK_SUBCLASS_TYPE (ref[i], DIMASSOC_Ref, osnap_type, RC);
41 CHK_SUBCLASS_MAX (ref[i], DIMASSOC_Ref, osnap_type, RC, 13);
42 CHK_SUBCLASS_TYPE (ref[i], DIMASSOC_Ref, osnap_dist, BD);
43 CHK_SUBCLASS_3RD (ref[i], DIMASSOC_Ref, osnap_pt);
44 CHK_SUBCLASS_TYPE (ref[i], DIMASSOC_Ref, main_subent_type, BL);
45 CHK_SUBCLASS_MAX (ref[i], DIMASSOC_Ref, main_subent_type, BL, 2);
46 CHK_SUBCLASS_TYPE (ref[i], DIMASSOC_Ref, main_gsmarker, BL);
47 CHK_SUBCLASS_TYPE (ref[i], DIMASSOC_Ref, num_intsectobj, BL);
48 CHK_SUBCLASS_MAX (ref[i], DIMASSOC_Ref, num_intsectobj, BL, 100);
49 num_intsectobj = ref[i].num_intsectobj;
50 CHK_SUBCLASS_HV (ref[i], DIMASSOC_Ref, intsectobj, num_intsectobj);
51 CHK_SUBCLASS_TYPE (ref[i], DIMASSOC_Ref, num_xrefs, BL);
52 CHK_SUBCLASS_MAX (ref[i], DIMASSOC_Ref, num_xrefs, BL, 100);
53 num_xrefs = ref[i].num_xrefs;
54 CHK_SUBCLASS_HV (ref[i], DIMASSOC_Ref, xrefs, num_xrefs);
55 CHK_SUBCLASS_TYPE (ref[i], DIMASSOC_Ref, has_lastpt_ref, B);
56 CHK_SUBCLASS_3RD (ref[i], DIMASSOC_Ref, lastpt_ref);
57 }
58 }