iCAx开思工具箱
标题:
【求助】如何选择草图中的图形?
[打印本页]
作者:
yanfang1108
时间:
2004-7-20 09:51
标题:
【求助】如何选择草图中的图形?
我导入了一个草图,试了很多命令都求不出草图中的图形,UF_SKET_ask_feature_sketches ,还有UF_SKET_ask_sketch_features都试过了,结果是一样的,用get fail messge,返回的是unknown error。请问,用什么命令可以求出草图中的图形?谢谢!
作者:
chunsong2000
时间:
2004-7-20 10:02
你的草图当时是怎么制作的?
这可能有关系!
作者:
yanfang1108
时间:
2004-7-20 10:06
就是在上面画了一个封闭的曲线,是由一系列的直线组成的。然后保存。
作者:
zzz
时间:
2004-7-20 10:43
试一试UF_MODL_ask_feature_object() or UF_MODL_ask_feat_object()
作者:
yanfang1108
时间:
2004-7-20 11:31
UF_MODL_ask_feat_object() 也不行,最后我用的最笨的方法,
UF_OBJ_cycle_objs_in_part,图形是选出来了,但是不能进行拉伸。总是说section object 不存在。但是我用set highligh已经显示出来了。我以为是要在feat id和body id之间转换一下,可以转换了以后,还是同样的问题。谁能告诉我为什么!谢谢!
作者:
goodluckwu
时间:
2004-7-21 16:12
我觉得是你的程序的问题,我就使用过UF_SKET_ask_sketch_features()访问我做的草图里的一些封闭曲线(同样由若干直线组成),并将其拉伸为一个物体,完全没有问题。我记得很清楚,当时只传递了一个草图的id作为参数。
作者:
goodluckwu
时间:
2004-7-21 16:12
把你的程序发上来看看
作者:
yanfang1108
时间:
2004-7-21 16:40
UF_import_part_modes_t import_mode;
import_mode.layer_mode = 0;
import_mode.group_mode = 1;
import_mode.csys_mode = 0;
import_mode.plist_mode = 3;
import_mode.view_mode = 0;
import_mode.cam_mode = false;
import_mode.csys_mode = 0;
double dest_csys[ 6 ]={1,0,0,0,cos(atof(angle2_s)*DEGRA),cos((90-atof(angle2_s))*DEGRA)};
double dest_point[ 3 ];
dest_point[0]=min_point[0];
dest_point[1]=min_point[1];
dest_point[2]=min_point[2];
tag_t group;
UF_PART_import("E:\\FormTools\\exerciseprt\\sketch.prt",[$import_mode,dest_csys,dest_point,1.0,&group)]
tag_t sketch;
sketch=UF_PART_ask_display_part ( );
int count_1 = 0;
int type = UF_feature_type;
tag_t sketch_line= NULL_TAG;
tag_t sketch_body_line;
uf_list_t *sketch_line_list,*extrude_sket;
UF_MODL_create_list([$sketch_line_list) ]
UF_OBJ_cycle_objs_in_part( sketch, type, [$sketch_line )]
while ( sketch_line!= NULL_TAG )
{
count_1++;
UF_OBJ_cycle_objs_in_part( sketch, type, [$sketch_line )]
if(count_1==33)
{
UF_MODL_ask_feat_body(sketch_line,[$sketch_body_line)]
UF_DISP_set_highlight(sketch_line,1);
UF_MODL_put_list_item(sketch_line_list,sketch_body_line);
}
}
char *taper_angle7 = "0.0";
char *limit7[2] = {"0", "125"};
double ref_pt7[3];
double extrude_direction7[3]={0,1,1};
UF_MODL_create_extruded1(sketch_line_list,taper_angle7,limit7,ref_pt7,extrude_direction7,UF_NULLSIGN,NULL,[$extrude_sket)]
作者:
yanfang1108
时间:
2004-7-21 16:41
当count=33的时候,草图上的图形可以全部显示出来
作者:
goodluckwu
时间:
2004-7-21 17:00
我说的是你使用UF_SKET_ask_sketch_features()的程序。
作者:
yanfang1108
时间:
2004-7-21 17:28
后面的部分就是的,那个part里面只有一个草图
tag_t sketch;
sketch=UF_PART_ask_display_part ( );
int count_1 = 0;
int type = UF_feature_type;
tag_t sketch_line= NULL_TAG;
tag_t sketch_body_line;
uf_list_t *sketch_line_list,*extrude_sket;
UF_MODL_create_list([$sketch_line_list) ]
UF_OBJ_cycle_objs_in_part( sketch, type, [$sketch_line )]
while ( sketch_line!= NULL_TAG )
{
count_1++;
UF_OBJ_cycle_objs_in_part( sketch, type, [$sketch_line )]
if(count_1==33)
{
UF_MODL_ask_feat_body(sketch_line,[$sketch_body_line)]
UF_DISP_set_highlight(sketch_line,1);
UF_MODL_put_list_item(sketch_line_list,sketch_body_line);
}
}
char *taper_angle7 = "0.0";
char *limit7[2] = {"0", "125"};
double ref_pt7[3];
double extrude_direction7[3]={0,1,1};
UF_MODL_create_extruded1(sketch_line_list,taper_angle7,limit7,ref_pt7,extrude_direction7,UF_NULLSIGN,NULL,[$extrude_sket)]
作者:
yanfang1108
时间:
2004-7-21 17:34
哦,那个命令我用了,没有出来结果,我就给删了。既然你做出来了,那我再试试。谢谢
作者:
goodluckwu
时间:
2004-7-21 21:16
这里提行你一下,你的变量sketch储存的是part的tag,而不是sketch的tag(也许你是因为从原来的程序改过来就借用了这个变量?)
作者:
yanfang1108
时间:
2004-7-21 22:17
知道了,问题就出在这里!!我没有编过草图的操作,那我应该用什么命令激活草图,来获取它的tag?
作者:
yanfang1108
时间:
2004-7-22 09:24
用UF_SKET_initialize_sketch??但是图形是导入的,我又该用什么方法知道草图的name呢??
作者:
goodluckwu
时间:
2004-7-22 09:37
这我就不知道了,你总得有点什么已知条件吧?
或者你可以对part里所有的tag遍历,然后通过判断类型来判断是不是一个sketch?(一个想法,没时间试验,你可以试试)
作者:
goodluckwu
时间:
2004-7-22 09:42
你可以试试这样:
UF_OBJ_ask_type_and_subtype()
如果 type 是
UF_sketch_type (134)
就认为它是一个sketch.
欢迎光临 iCAx开思工具箱 (https://t.icax.org/)
Powered by Discuz! X3.3