我看了一下你的代码,发现我以前的说法有点疏漏,实在对不起。
现在我把过程重新讲一下。
要在一个part中正确地遍历出所有的solid body, 需要经过两步判断,而不是以前的一步。
1. 用UF_OBJ_cycle_objs_in_part()+UF_solid_type得到一个tag后,首先用
UF_OBJ_ask_type_and_subtype()莱得到这个tag德subtype,如果它的subtype == UF_solid_body_sub_type, 才会继续进行下一步。
2。用UF_MODL_ask_body_type()得到body type,如果body type == UF_MODL_BODY_TYPE,才是真正的solid body。
具体代码如下(变量的定义省略了):
part_tag = UF_PART_ask_display_part();
irc = UF_OBJ_cycle_objs_in_part(part_tag, UF_solid_type, [$solid)]
do
{
UF_OBJ_ask_type_and_subtype(solid, [$type, &sub_type)]
if(sub_type == UF_solid_body_subtype)
{
UF_MODL_ask_body_type (solid, [$body_type )]
if(body_type==UF_MODL_SOLID_BODY)
{
tag_solid[body_count]=solid;
body_count++;
}
}
UF_OBJ_cycle_objs_in_part(part_tag, UF_solid_type, [$solid)]
}while(solid != NULL_TAG);
至于,网格生成,我没法检验。我的UGNX2.0 分网的函数已经改成
UF_SF_create_ugs_tet_mesh(), 和你的不一样,我没有进一步的探讨。 |