UG二次开发_体素特征创建_创建块
本例参考《图表详解 UG NX 二次开发》莫蓉、常智勇等,因为版本不同,自己做了细微调整。目标:在UG中创建一个块
实现:利用UG中的UF_MODL_create_block1
来实现block的创建。
函数介绍:UF_MODL_create_block
和UF_MODL_create_block1
,目前还没怎么搞明白两者之间的根本差别。
#include <uf.h>
#include <uf_ui.h>
#include <uf_exit.h>
#include <uf_modl.h>
#include <uf_modl_primitives.h>
extern DllExport void ufsta( char *parm, int *returnCode, int rlen )
{
// UF_FEATURE_SIGN sign Input The sign of the operation to be performed.
//动作标志,到底是新建还是增加还是去除等,通过这个SIGN来控制
//UF_NULLSIGN = create new target solid
//UF_POSITIVE = add to target solid
//UF_NEGATIVE = subtract from target solid
//UF_UNSIGNED = intersect with target solid
//double corner_pt [ 3 ] Input Corner point (origin) of block一个角的坐标,现在也没弄明白到底以哪个//角为基准,有可能是有一个基准点,后续的三条边的长宽高,可以用负数去控制,等下我去试试
//char * edge_len [ 3 ] Input Three edge lengths of block 三个边长
//tag_t * blk_obj_id Output Feature object identifier of created block. 目标特征的tag
if(!UF_initialize())
{
UF_FEATURE_SIGN sign_new=UF_NULLSIGN;
UF_FEATURE_SIGN sign_add=UF_POSITIVE;
double corner_pt [ 3 ]={0.0,0.0,0.0};
double corner_pt1 [ 3 ]={0.0,0.0,3.0};
char * edge_len [ 3 ]={"1","2","3"};
char * edge_len1 [ 3 ]={"1","1","1"};
tag_tblk_obj;
tag_tblk1_obj;
UF_MODL_create_block1(sign_new,corner_pt,edge_len,&blk1_obj);
UF_MODL_create_block1(sign_add,corner_pt1,edge_len1,&blk1_obj);
uc1601("The block is ready.",1);
return;
}
UF_terminate();
}
extern int ufusr_ask_unload( void )
{
return( UF_UNLOAD_IMMEDIATELY );
}
试了一下,把这行注释掉也可以,可能uf_modl已经包含了这个头文件了//#include <uf_modl_primitives.h>
char * edge_len [ 3 ]={"1","2","3"};
char * edge_len1 [ 3 ]={"1","1","1"};
但是这两个边长里,输入负数不行,可能是因为其定义的是边的长度,不能为负数。
两个在指定布尔运算的方式不同,一个是可以自定义的,一个是上一个特征的体 很好很强大
页:
[1]