接触面涂色代码
本人新手,对C语言不太熟悉,写了如下一段代码,请问各位大神,哪里错了?功能点:选择两个实体,判断距离,得到接触面,对接触面涂色
tag_t enterbody1;//touchselect1
tag_t enterbody2;//touchselest2
int touchcolor;//touchcolor1
double* mindist;
double body1_point;
double body2_point;
int n_parents1;
int n_parents2;
tag_p_t body1_face;
tag_p_t body2_face;
tag_t point1_face1;
tag_t point2_face2;
int i;
tag_t* point1;
tag_t* point2;
int results;
//1、获得对话框中的值
//选择的第一个体,找出来taggedObjects1
std::vector<NXOpen::TaggedObject*>taggedObjects1;
PropertyList *bodycollectorlist1=touchselect1->GetProperties();
taggedObjects1=bodycollectorlist1->GetTaggedObjectVector("SelectedObjects");
delete bodycollectorlist1;
bodycollectorlist1=NULL;
enterbody1=taggedObjects1->Tag();
//选择的第一个体,找出来taggedObjects1
std::vector<NXOpen::TaggedObject*>taggedObjects2;
PropertyList *bodycollectorlist2=touchselect2->GetProperties();
taggedObjects2=bodycollectorlist2->GetTaggedObjectVector("SelectedObjects");
delete bodycollectorlist2;
bodycollectorlist2=NULL;
enterbody2=taggedObjects2->Tag();
//接触面颜色提取
int colora;
PropertyList *thecolor=touchucolor1->GetProperties();
colora=thecolor->GetInteger("value");
touchcolor=(int)colora;
//2、判断干涉
UF_initialize();
UF_MODL_check_interference(enterbody1,1,&enterbody2,&results);
/*tag_t target,
int num_tools,
tag_t * tools,
int * results*/
if(results==1)
{
uc1601("选择实体存在干涉,请检查后重新选择",1);
enterbody1=NULL;
enterbody2=NULL;
}
else if(results==2)
{
uc1601("选择实体存在间隙,请检查后重新选择",1);
enterbody1=NULL;
enterbody2=NULL;
}
else
{
//2、找到最小距离所在位置
UF_SF_find_minimum_distance(enterbody1,enterbody2,mindist,body1_point,body2_point);
//3、创建两个点
UF_CURVE_create_point(body1_point,point1);
UF_CURVE_create_point(body2_point,point2);
//4、找到两个点所在的面
UF_SO_ask_parents(point1,UF_SO_ASK_ALL_PARENTS,&n_parents1,&body1_face);
for (i=0; i<n_parents1; i++)
{
int type=0, subtype=0;
UF_OBJ_ask_type_and_subtype(body1_face, &type, &subtype);
if (type==70 && subtype==2);
}
point1_face1=body1_face;
UF_SO_ask_parents(point2,UF_SO_ASK_ALL_PARENTS,&n_parents2,&body2_face);
for (i=0; i<n_parents2; i++)
{
int type=0, subtype=0;
UF_OBJ_ask_type_and_subtype(body2_face, &type, &subtype);
if (type==70 && subtype==2);
}
point2_face2=body2_face;
//5、给两个面涂色
UF_OBJ_set_color(point1_face1,touchcolor);
UF_OBJ_set_color(point2_face2,touchcolor);
}
UF_terminate ();
你这个 代码 运行没报错吗??
选择对象你可以直接用 体的选择器 可以不用这个对象的要不然要设置matriple
你的意思应该是 选择两个体如果有接触面 就加个颜色
对吗? 是效果1,还是效果2,
效果1就不用那么复杂,用它就可以了 UF_MODL_check_interference( )
实体1和实体2所有的懂得面进行判断,这样就可以得到实体2的哪些面挨着,反之........:lol admin 发表于 2015-3-8 11:04
你这个 代码 运行没报错吗??
选择对象你可以直接用 体的选择器 可以不用这个对象的要不然要设置ma ...
没报错,也没效果,╮(╯▽╰)╭
就是这个意思,如果有接触面,接触面就加个颜色 简简单单 发表于 2015-3-9 08:54
效果1就不用那么复杂,用它就可以了 UF_MODL_check_interference( )
实体1和实体2所有的懂得面进行判断,这样 ...
效果一1,谢谢!
;P我属于完全瞎写,新手,呵呵 简简单单 发表于 2015-3-9 08:54
效果1就不用那么复杂,用它就可以了 UF_MODL_check_interference( )
实体1和实体2所有的懂得面进行判断,这样 ...
UF_MODL_check_interference 这个我用了,但是它输入的不是只有结果1、2、3么? Interference status for each tool body. The caller is
responsible for allocating it with an array size of
num_tools.
= 1 -> there is interference
= 2 -> no interference
= 3 -> touching, that is coincident faces 干扰对每个工具的身体状态。打电话的人是
负责分配数组的大小
num_tools。
= 1 - >有干扰
= 2 - >没有干扰
= 3 - >触摸,这是重合的脸 3就是你想要的
页:
[1]
2