马上注册,结交更多同行朋友,交流,分享,学习。
您需要 登录 才可以下载或查看,没有帐号?注册
x
请教高手,我用一组基准平面和一片体相交得到一组截面线,然后我又在
其中一个基准面内画了一组平行直线,
tag_t section_curves[10]={NULL_TAG};
UF_CURVE_section_from_planes ([$objects_section,&planes_data,section_curves)]
.....
tag_t lines[10]={NULL_TAG};
for(...){
....
UF_CURVE_create_line([$sline1,lines)]}
这些步骤我都实现了,现我想在画线的这个基准面内检查一条直线与此面内
截面线交点的个数,因此用到函数:
tag_t curve1=section_curves[0];
tag_t curve2=lines[1];
double tolerance=0.1;
int num_intersections;
UF_MODL_intersect_info_t **intersections;
UF_MODL_intersect_objects ( curve1, curve2, tolerance, [$num_intersections,&intersections)]
这样求出的num_intersections老是为0,而实际图形显示则有交叉,后来我采用另一方法来定义curve1和curve2,
/*select two curves*/
char cue[]="sheet two curves";
char title[]="选择曲线";
int response,count,k=0;
tag_p_t objects;
if(UF_UI_select_with_class_dialog(cue,title,UF_UI_SEL_SCOPE_WORK_PART,NULL,NULL,
&response,&count,&objects)==0)
{
if(response==UF_UI_OK&&count>0)
{
for( k=0;k<count;k++)
{
UF_DISP_set_highlight(objects[k],0);
}
}
}
tag_t curve1=objects[0];
tag_t curve1=objects[1];
结果我得到了正确的结果,num_intersections=2,有两个交叉点。我很是疑惑,为什么的第一种方法不行,而第二种方法可行。我不想用交互式方法,请高手指点,如何用第一种才行得通。急!! |