简简单单 发表于 2014-10-13 01:56:27

关于UG实体着色问题,有源代码,,

UG实体着色疑问
这段代码是实体着色,当我先对实体进行了面着色后,再进行体着色时,却不能改变面得颜色

#include <stdio.h>
#include <uf.h>
#include <uf_ui.h>
#include <uf_object_types.h>
#include <uf_disp.h>
#include <uf_modl.h>
#include <uf_obj.h>

static int init_proc(UF_UI_selection_p_t select,
                                       void *user_data);

#define UF_CALL(X) (report( __FILE__, __LINE__, #X, (X)))

static int report( char *file, int line, char *call, int irc)
{
        if (irc)
        {
                char    messg;
                printf("%s, line %d:%s\n", file, line, call);
                (UF_get_fail_message(irc, messg)) ?
                        printf("    returned a %d\n", irc) :
                printf("    returned error %d:%s\n", irc, messg);
        }
        return(irc);
}

static void do_ugopen_api(void)
{
        char cue[] = "选择对象";
        char title[] = "对象选择对话框";
        int response=0;
        tag_p_t object;
        int count=0;

        int i=0;

        double pt={0,0,0};

        double z1={0,0,1};

        UF_OBJ_translucency_t cyt=0;



        UF_UI_select_with_class_dialog(cue,title,0, init_proc, NULL,&response,&count, &object);


        if (response == UF_UI_OK&&count>0){


                for(i=0;i<count;i++){


                UF_OBJ_set_color(object,186);


                       
                       

                        UF_DISP_set_highlight(object,0);//取消对象的高亮显示


                        UF_OBJ_set_translucency(object,cyt); //设置透明度
                }
        }
       
}

static int init_proc(
                                       UF_UI_selection_p_t select,
                                       void* user_data)
{
        int num_triples = 1;
        UF_UI_mask_t mask_triples[] = {UF_solid_type ,0,0,};//过滤对象选择

        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);
        }
}

void ufusr(char *param, int *retcode, int param_len)
{
        if (!UF_CALL(UF_initialize()))
        {
                do_ugopen_api();
                UF_CALL(UF_terminate());
        }
}

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



简简单单 发表于 2014-10-13 12:08:32

:)

admin 发表于 2014-10-13 13:26:31

你手工着色也是这样的吧

如果你对面改了颜色,体的颜色就不会变,除非你一开始就是对体着色

录制个JA看看吧

ufun对这方面支持并不是很好,看看NXOpen的JA 代码 很简单的就是 一个 modification

yuleihz 发表于 2016-1-10 17:17:19

ufun代码太长了,nxopen不需要这么长的代码
页: [1]
查看完整版本: 关于UG实体着色问题,有源代码,,