点击查看详细介绍

UG OPEN API单选一个面实现透明的功能API代码

nxopen 11年前 28405 151

购买与咨询 NX 二次开发视频教程,请联系微信号:13890821008  QQ号:85585969  


以下代码是UG单选一个面实现透明的功能,代码已经加了注释,可以灵活应用!
下面回复中很多人问到怎么设置半透明,其实设置半透明只需要将
UF_OBJ_set_translucency的透明值设置为50即可,即为:UF_OBJ_set_translucency(object,50); 还有人问怎么选择实体进行透明,而不是面,选择实体只需要在过滤器中修改一下即可,类型改成:UF_solid_type 即可。

//------------------------代码开始----------------------------
static void do_ugopen_api(void)
{
char cue[] = "NX78提醒:请选择单个面";
char title[] = "对象选择对话框";
int response=0;
tag_t object;
int count=0;
double cursor[3];
tag_t view;

int i=0;

double pt[3]={0,0,0};

double z1[3]={0,0,1};

UF_OBJ_translucency_t cyt=0;

L10:

UF_UI_select_with_single_dialog(cue,title,0,init_proc, NULL,&response,&object,cursor,&view);

if(response==UF_UI_BACK) goto L10; //如果点后退就跳转到L10
if(response==UF_UI_CANCEL) return; //如果点取消就退出

UF_DISP_set_highlight(object,0); //取消高亮显示
UF_OBJ_set_translucency(object,100); //设置选定的面为透明

goto L10; //透明之后继续回到选择的状态

}

/* 下面设置过滤器 */

static int init_proc(
UF_UI_selection_p_t select,
void* user_data)
{
int num_triples = 1; //只选择一种类型
UF_UI_mask_t mask_triples[] = {
UF_face_type,0,0, //UF_face_type表示只选择面
};

if((UF_CALL(UF_UI_set_sel_mask(select,
UF_UI_SEL_MASK_CLEAR_AND_ENABLE_SPECIFIC,
num_triples, mask_triples))) == 0)
{
return (UF_UI_SEL_SUCCESS);
}
else
{
return (UF_UI_SEL_FAILURE);
}
}


//--------------------------代码结束------------------------------

提醒:
如果要先判断所选的面之前是否已经为透明状态
需要用到函数UF_OBJ_ask_translucency先读取透明值

然后根据情况判断是要透明还是恢复不透明状态,下面核心代码可以作为参考

●●●请先 登陆注册 后查看●●●

//此为代码核心部分,如需实现特定功能,可以在以下回复讨论
//UG二次开发(https://www.ugapi.com/)原创文章资料,转载请注明出处......



3

最新回复 (151)
  • 94不坏 11年前
    1

    谢谢分享!!!

  • 360204003 11年前
    2

    过滤器用哪个头文件啊

    该帖子被360204003在2014-4-21 23:08:04编辑过

  • NX2013 11年前
    3

    谢谢分享!!!

  • 破帽遮羞 11年前
    4

    请问楼主,我想做个让实体半透明,或者取消透明,怎么做呢

  • Tony 11年前
    5

    回复:楼主
    过滤器用哪个头文件啊,谢谢了。

  • zcdong86 11年前
    6

    顶一个,现在不学,啥时学!

  • 风飞雪飘 11年前
    7

    ,非常适合我们初学者

  • f1635849 11年前
    8

    虚顶一个,现在不学,啥时学!

  • 豆沙包2010 11年前
    9

    刚开始学习,谢谢分享!

  • xushouxion 11年前
    10

    怎么不把源码全部写完啊,搞不懂啊

  • leoluo 11年前
    11

    要-积-分-啊----

  • ercikaifa 10年前
    12

    我想做个让实体半透明,或者取消透明,怎么做呢

  • liang VIP会员 10年前
    13

    谢谢分享!!!

  • 新人类的旗手 10年前
    14

    顶一个,来学习了,感谢OPEN的分享

  • SNFGDGVJX 10年前
    15

    过滤器用哪个头文件啊

请登录后发表新帖