# 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. Example:

    // 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, &options);

                    if (result  0)
                            success = false;

            } else
                    success = false;

            HC_Close_Segment();
            HC_Close_Segment();

            return success;
    }

## 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