(root)/
libredwg-0.13/
test/
unit-testing/
extrudedsurface.c
       1  // TODO DEBUGGING
       2  #define DWG_TYPE DWG_TYPE_EXTRUDEDSURFACE
       3  #include "common.c"
       4  
       5  void
       6  api_process (dwg_object *obj)
       7  {
       8    int error, isnew;
       9    _3DSOLID_FIELDS;
      10  
      11    //? sweep_profile, taper_angle
      12    BITCODE_BS modeler_format_version; /*!< DXF 70 */
      13    BITCODE_BL bindata_size;           // 90
      14    BITCODE_TF bindata;                // 310|1
      15    BITCODE_BS u_isolines;             /*!< DXF 71 */
      16    BITCODE_BS v_isolines;             /*!< DXF 72 */
      17    BITCODE_BL class_version;          /*!< DXF 90 */
      18    // sweep_options?
      19    // BITCODE_BD height;
      20    BITCODE_3BD sweep_vector;                           /*!< DXF 10 */
      21    BITCODE_BD *sweep_transmatrix;                      /*!< DXF 40: 16x BD */
      22    BITCODE_BD draft_angle;                             /*!< DXF 42 */
      23    BITCODE_BD draft_start_distance;                    /*!< DXF 43 */
      24    BITCODE_BD draft_end_distance;                      /*!< DXF 44 */
      25    BITCODE_BD twist_angle;                             /*!< DXF 45 */
      26    BITCODE_BD scale_factor;                            /*!< DXF 48 */
      27    BITCODE_BD align_angle;                             /*!< DXF 49 */
      28    BITCODE_BD *sweep_entity_transmatrix;               /*!< DXF 46: 16x BD */
      29    BITCODE_BD *path_entity_transmatrix;                /*!< DXF 47: 16x BD */
      30    BITCODE_B is_solid;                                 /*!< DXF 290 */
      31    BITCODE_BS sweep_alignment_flags;                   /*!< DXF 290 */
      32    BITCODE_BS path_flags;                              /*!< DXF 71 */
      33    BITCODE_B align_start;                              /*!< DXF 292 */
      34    BITCODE_B bank;                                     /*!< DXF 293 */
      35    BITCODE_B base_point_set;                           /*!< DXF 294 */
      36    BITCODE_B sweep_entity_transform_computed;          /*!< DXF 295 */
      37    BITCODE_B path_entity_transform_computed;           /*!< DXF 296 */
      38    BITCODE_3BD reference_vector_for_controlling_twist; /*!< DXF 11 */
      39    BITCODE_H sweep_entity;
      40    BITCODE_H path_entity;
      41  
      42    Dwg_Version_Type dwg_version = obj->parent->header.version;
      43  #ifdef DEBUG_CLASSES
      44    dwg_ent_extrudedsurface *_obj = dwg_object_to_EXTRUDEDSURFACE (obj);
      45  
      46    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, acis_empty, B);
      47    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, version, BS);
      48    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, acis_data, TF);
      49    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, wireframe_data_present, B);
      50    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, point_present, B);
      51    CHK_ENTITY_3RD (_obj, EXTRUDEDSURFACE, point);
      52    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, isoline_present, B);
      53    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, isolines, BL);
      54    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, num_wires, BL);
      55    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, num_silhouettes, BL);
      56    if (!dwg_dynapi_entity_value (_obj, "EXTRUDEDSURFACE", "wires", &wires,
      57                                  NULL))
      58      fail ("EXTRUDEDSURFACE.wires");
      59    else
      60      {
      61        for (BITCODE_BL i = 0; i < num_wires; i++)
      62          printf ("EXTRUDEDSURFACE.wires[%u]: " FORMAT_BLd "\n", i,
      63                  wires[i].selection_marker);
      64      }
      65    if (!dwg_dynapi_entity_value (_obj, "EXTRUDEDSURFACE", "silhouettes",
      66                                  &silhouettes, NULL))
      67      fail ("EXTRUDEDSURFACE.silhouettes");
      68    else
      69      {
      70        for (BITCODE_BL i = 0; i < num_silhouettes; i++)
      71          printf ("EXTRUDEDSURFACE.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, EXTRUDEDSURFACE, history_id);
      77      }
      78  
      79    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, modeler_format_version, BS);
      80    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, bindata_size, BL);
      81    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, bindata, TF); // 310|1
      82    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, u_isolines, BS);
      83    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, v_isolines, BS);
      84    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, class_version, BL);
      85  
      86    // CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, height, BD);
      87    CHK_ENTITY_3RD (_obj, EXTRUDEDSURFACE, sweep_vector);
      88    if (!dwg_dynapi_entity_value (_obj, "EXTRUDEDSURFACE", "sweep_transmatrix",
      89                                  &sweep_transmatrix, NULL)
      90        || !sweep_transmatrix)
      91      fail ("EXTRUDEDSURFACE.sweep_transmatrix");
      92    else
      93      for (int i = 0; i < 16; i++)
      94        {
      95          ok ("EXTRUDEDSURFACE.sweep_transmatrix[%d]: %f", i,
      96              sweep_transmatrix[i]);
      97        }
      98    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, draft_angle, BD);
      99    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, draft_start_distance, BD);
     100    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, draft_end_distance, BD);
     101    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, twist_angle, BD);
     102    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, scale_factor, BD);
     103    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, align_angle, BD);
     104    if (!dwg_dynapi_entity_value (_obj, "EXTRUDEDSURFACE",
     105                                  "sweep_entity_transmatrix",
     106                                  &sweep_entity_transmatrix, NULL)
     107        || !sweep_entity_transmatrix)
     108      fail ("EXTRUDEDSURFACE.sweep_entity_transmatrix");
     109    else
     110      for (int i = 0; i < 16; i++)
     111        {
     112          ok ("EXTRUDEDSURFACE.sweep_entity_transmatrix[%d]: %f", i,
     113              sweep_entity_transmatrix[i]);
     114        }
     115    if (!dwg_dynapi_entity_value (_obj, "EXTRUDEDSURFACE",
     116                                  "path_entity_transmatrix",
     117                                  &path_entity_transmatrix, NULL)
     118        || !path_entity_transmatrix)
     119      fail ("EXTRUDEDSURFACE.path_entity_transmatrix");
     120    else
     121      for (int i = 0; i < 16; i++)
     122        {
     123          ok ("EXTRUDEDSURFACE.path_entity_transmatrix[%d]: %f", i,
     124              path_entity_transmatrix[i]);
     125        }
     126    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, is_solid, B);
     127    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, sweep_alignment_flags, BS);
     128    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, path_flags, BS);
     129    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, align_start, B);
     130    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, bank, B);
     131    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, base_point_set, B);
     132    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, sweep_entity_transform_computed, B);
     133    CHK_ENTITY_TYPE (_obj, EXTRUDEDSURFACE, path_entity_transform_computed, B);
     134    CHK_ENTITY_3RD (_obj, EXTRUDEDSURFACE,
     135                    reference_vector_for_controlling_twist);
     136    CHK_ENTITY_H (_obj, EXTRUDEDSURFACE, sweep_entity);
     137    CHK_ENTITY_H (_obj, EXTRUDEDSURFACE, path_entity);
     138  #endif
     139  }