1  // TODO DEBUGGING
       2  #define DWG_TYPE DWG_TYPE_REVOLVEDSURFACE
       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_BL i, class_version;
      15  
      16    BITCODE_BL id;
      17    BITCODE_3BD axis_point;
      18    BITCODE_3BD axis_vector;
      19    BITCODE_BD revolve_angle;
      20    BITCODE_BD start_angle;
      21    BITCODE_BD *revolved_entity_transmatrix;
      22    BITCODE_BD draft_angle;
      23    BITCODE_BD draft_start_distance;
      24    BITCODE_BD draft_end_distance;
      25    BITCODE_BD twist_angle;
      26    BITCODE_B solid;
      27    BITCODE_B close_to_axis;
      28  
      29    Dwg_Version_Type dwg_version = obj->parent->header.version;
      30  #ifdef DEBUG_CLASSES
      31    dwg_ent_revolvedsurface *_obj = dwg_object_to_REVOLVEDSURFACE (obj);
      32  
      33    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, acis_empty, B);
      34    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, version, BS);
      35    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, acis_data, TF);
      36    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, wireframe_data_present, B);
      37    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, point_present, B);
      38    CHK_ENTITY_3RD (_obj, REVOLVEDSURFACE, point);
      39    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, isoline_present, B);
      40    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, isolines, BL);
      41    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, num_wires, BL);
      42    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, num_silhouettes, BL);
      43    if (!dwg_dynapi_entity_value (_obj, "REVOLVEDSURFACE", "wires", &wires,
      44                                  NULL))
      45      fail ("REVOLVEDSURFACE.wires");
      46    else
      47      {
      48        for (i = 0; i < num_wires; i++)
      49          printf ("REVOLVEDSURFACE.wires[%u]: " FORMAT_BLd "\n", i,
      50                  wires[i].selection_marker);
      51      }
      52    if (!dwg_dynapi_entity_value (_obj, "REVOLVEDSURFACE", "silhouettes",
      53                                  &silhouettes, NULL))
      54      fail ("REVOLVEDSURFACE.silhouettes");
      55    else
      56      {
      57        for (i = 0; i < num_silhouettes; i++)
      58          printf ("REVOLVEDSURFACE.silhouettes[%u]: " FORMAT_BL "\n", i,
      59                  silhouettes[i].vp_id);
      60      }
      61    if (dwg_version >= R_2007 && _obj->history_id) // if it did not fail before
      62      {
      63        CHK_ENTITY_H (_obj, REVOLVEDSURFACE, history_id);
      64      }
      65  
      66    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, modeler_format_version, BS);
      67    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, u_isolines, BS);
      68    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, v_isolines, BS);
      69    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, class_version, BL);
      70  
      71    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, id, BL);
      72    CHK_ENTITY_3RD (_obj, REVOLVEDSURFACE, axis_point);
      73    CHK_ENTITY_3RD (_obj, REVOLVEDSURFACE, axis_vector);
      74    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, revolve_angle, BD);
      75    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, start_angle, BD);
      76    if (!dwg_dynapi_entity_value (_obj, "REVOLVEDSURFACE",
      77                                  "revolved_entity_transmatrix",
      78                                  &revolved_entity_transmatrix, NULL)
      79        || !revolved_entity_transmatrix)
      80      fail ("REVOLVEDSURFACE.revolved_entity_transmatrix");
      81    else
      82      for (i = 0; i < 16; i++)
      83        {
      84          ok ("REVOLVEDSURFACE.revolved_entity_transmatrix[%d]: %f", i,
      85              revolved_entity_transmatrix[i]);
      86        }
      87    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, draft_angle, BD);
      88    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, draft_start_distance, BD);
      89    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, draft_end_distance, BD);
      90    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, twist_angle, BD);
      91    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, solid, B);
      92    CHK_ENTITY_TYPE (_obj, REVOLVEDSURFACE, close_to_axis, B);
      93  #endif
      94  }