(root)/
libredwg-0.13/
test/
unit-testing/
assocasmbodyactionparam.c
       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  }