【PK函数】创建块

pk函数使用的例子:使用pk函数创建块,再用Open C函数涂色。

源码:

#include "Text.h"
//pk创建块 然后用open c涂色
#include "parasolid_ifails.h"
#include "parasolid_kernel.h"
#include "parasolid_tokens.h"
#pragma comment( lib, "..\\pk\\x64\\pskernel.lib")

extern DllExport void ufsta(char *param, int *returnCode, int rlen)
{
    UF_initialize();
    // PK创建块 10*20*30 位置10.0,10.0,10.0
    double dMillimeter = 0.001;//单位mm
    tag_t  tagPartition = NULL_TAG;
    //创建Parasolid分区并将其设置为当前分区
    UF_PS_create_partition(&tagPartition);
    PK_BODY_t pkBody = PK_ENTITY_null;
    PK_AXIS2_sf_s pkBasisSet;
    PK_VECTOR_t dOrigPoint = { 10.0*dMillimeter,10.0*dMillimeter,10.0*dMillimeter }; //点位置 10,10,10
    PK_VECTOR1_t dDir = { 0.0,0.0,1.0 };   //z尺寸的边的方向
    PK_VECTOR1_t dRefDir = { 1.0,1.0,0.0 };//x尺寸的边的方向

    pkBasisSet.location = dOrigPoint;
    pkBasisSet.axis = dDir;
    pkBasisSet.ref_direction = dRefDir;
    PK_ERROR_code_t pkErr = PK_BODY_create_solid_block(10.0*dMillimeter, 20.0*dMillimeter, 30.0*dMillimeter, &pkBasisSet, &pkBody);//长宽高
    if (pkErr == PK_ERROR_no_errors)
    {
        tag_t tagUgObj = NULL_TAG;
        UF_PS_create_obj_from_ps_tag(pkBody, &tagUgObj);//通过Parasolid创建一个NX对象tag
        UF_OBJ_set_color(tagUgObj, 55);
        UF_MODL_update();             //更新模型 解决部件导航器不更新的问题提
        UF_DISP_regenerate_display(); //更新显示 解决不显示四方块的问题 
                                      //或者使用 UF_DISP_add_item_to_display(tagUgObj)显示块
                                      //或者使用 UF_OBJ_set_blank_status(tagUgObj, UF_OBJ_NOT_BLANKED显示块;
        //获得实体表面数量
        int iCountFaces = 0;
        PK_FACE_t *pkFaces = NULL;
        PK_BODY_ask_faces(pkBody, &iCountFaces, &pkFaces);
        list("体的面数量为:%d\n", iCountFaces);
        PK_MEMORY_free(pkFaces);
    }
    UF_terminate();
}

extern int ufusr_ask_unload(void)
{
    return (UF_UNLOAD_IMMEDIATELY);
}

效果及说明:

 

posted @ 2020-11-09 10:45  王牌飞行员_里海  阅读(127)  评论(0编辑  收藏  举报