Reading Parasolid Files

To read a Parasolid file, call HP_Read_Xmt_File. This parses the specified Parasolid file, populates the Parasolid modeling kernel with its contents, and then maps the model to a corresponding HOOPS segment tree hierarchy that includes all geometry and attributes.

// an application specific read function; HSolidModel is derived
// from the HBaseModel MVO class
int HSolidModel::Read(const char * FileName)
{
unsigned int i;
char extension[120];
bool success = true;
extension[0]='\0';
HC_Parse_String(FileName,".",-1,extension);// make it lower case
for (i = 0; i < strlen(extension); i++)
extension[i]=(char) tolower(extension[i]);// read the file into the model object's model segment
HC_Open_Segment_By_Key(m_ModelKey);
// read each file into its own subsegment of the main model segment so that
// we can easily apply transformations to different parts that might be read
// into the same model object; currently not supported in MVO, but could be
// added in the future. This is also required so that when we do segment
// level deletion later on, we don't delete the model_keysegment
HC_Open_Segment("");
if (streq(extension,"xmt_txt") || streq(extension,"x_t"))
{
PK_PART_receive_o_t options;
PK_ERROR_code_t result;
PK_PART_receive_o_m(options);
options.transmit_format = PK_transmit_format_text_c;// read an XT file
result = HP_Read_Xmt_File(FileName, GetPartition(), 0, 0, &amp;options);
if (result 0)
success = false;
} else
success = false;
HC_Close_Segment();
HC_Close_Segment();
return success;
}

The HOOPS/Parasolid Reference Application contains an example of how to use this function. Refer to the HParaModel::Read function located in HSolidModel.cpp.

Controlling Tessellation

You can control facet tessellation as an import argument. In HP_Read_Xmt_File, use the face_tessellation_level parameter to specify tessellation. Valid options are as follows:

  • "Lowest"
  • "Low"
  • "Medium"
  • "High"
  • "Highest"
  • "Custom"

"Custom" is the default, which means the developer is responsible for setting all the tessellation options himself. You can also set tessellation options in HP_Render_Entity and HP_Render_Entities. Examples of the effect of the tessellation are shown below:

"Custom" tessellation
"Medium" tessellation
"Highest" tessellation

top_level:2 prog_guide:6