Exemple #1
0
    public static void Render_Entity(PK.ENTITY_t entity, PK.TRANSF_t view_transf, PK.TRANSF_t topol_transf, PK.TOPOL.render_line_o_t *line_options, PK.TOPOL.render_facet_o_t *facet_options)
    {
        PK.ERROR.code_t error;
        PK.CLASS_t      paraClass;

        if (entity == PK.ENTITY_t.@null)
        {
            return;
        }

        StringBuilder setting = new StringBuilder();

        HCSP.Show_One_Rendering_Option("create body segments", setting);
        bool merge_bodies = setting.ToString() == "on" ? true : false;

        HCSP.Show_One_Rendering_Option("merge faces", setting);
        bool merge_faces = setting.ToString() == "on" ? true : false;

        HCSP.Show_One_Rendering_Option("faces", setting);
        bool render_faces = setting.ToString() == "on" ? true : false;

        HCSP.Show_One_Rendering_Option("edges", setting);
        bool render_edges = setting.ToString() == "on" ? true : false;

        error = PK.ENTITY.ask_class(entity, &paraClass);

        if (error != PK.ERROR.code_t.no_errors)
        {
            throw new Exception("PK.ENTITY.ask_class returned: " + error.ToString());
        }

        if (paraClass == PK.CLASS_t.assembly)
        {
            HCSP.open_assembly_internal(entity, true, 0);
        }

        else
        {
            if (render_faces && view_transf == 0)
            {
                PK.TOPOL_t entity_topol = (PK.TOPOL_t)entity;
                error = PK.TOPOL.render_facet(1, &entity_topol, &topol_transf, view_transf, facet_options);

                if (error != PK.ERROR.code_t.no_errors)
                {
                    throw new Exception("PK.TOPOL.render_facet returned: " + error.ToString());
                }
            }

            if (render_edges)
            {
                PK.TOPOL_t entity_topol = (PK.TOPOL_t)entity;
                error = PK.TOPOL.render_line(1, &entity_topol, &topol_transf, view_transf, line_options);

                if (error != PK.ERROR.code_t.no_errors)
                {
                    throw new Exception("PK.TOPOL.render_line returned: " + error.ToString());
                }
            }

            // will this necessarily be a body?
            if (paraClass == PK.CLASS_t.body)
            {
                insert_vertices_for_body(entity);
            }

            if (merge_faces && !merge_bodies)
            {
                if (paraClass == PK.CLASS_t.body)
                {
                    HCSP.merge_body_faces_internal((int *)&entity, 1);
                }
            }
        }
    }
Exemple #2
0
 public static void Render_Entities(int count, PK.ENTITY_t *entities, PK.TRANSF_t view_transf, PK.TRANSF_t *topol_transf, PK.TOPOL.render_line_o_t *line_options, PK.TOPOL.render_facet_o_t *facet_options)
 {
     for (int i = 0; i < count; i++)
     {
         PK.TRANSF_t tt = topol_transf != null ? (int)topol_transf[i] : 0;
         Render_Entity(entities[i], view_transf, tt, line_options, facet_options);
     }
 }