【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); }
效果及说明: