iCAx开思工具箱

标题: 【求助】搞UG的进来看看下面的简单代码 [打印本页]

作者: tari    时间: 2004-6-21 13:42
标题: 【求助】搞UG的进来看看下面的简单代码
char *radius="0";
   char *angle="0";
   char *depth="2";
   UF_MODL_ask_boss_parms(feat,edit,[$diameter,&height,&taper_angle)]
   UF_MODL_ask_feat_location(feat,location);
   UF_MODL_ask_feat_direction(feat,dir_x,dir_y);
   UF_MODL_create_plane(location,dir_x,[$plane)]
   for(int i=0;i<3;i++)
     direction=-dir_x;
   UF_MODL_create_cyl_pocket(location,direction,diameter,depth,radius,angle,plane,[$cyl_pocket)]
编译没问题,但调试时发现cyl_pocket一直为0,plane是我自己生成的,不会是这个原因吧,这段代码错在哪里?高手指点一下吧
作者: zzz    时间: 2004-6-21 15:45
一个程序要做到编译没有问题是很容易的,但是要达到所要求的功能,要做的工作还多着呢。
  
UG的绝大多数函数都有一个整数的返回值,如果这个返回值不为0,就表示这个函数的执行出错了。可以用UF_get_fail_message()得到这个返回值对应的错误是什么。
  
你可以用一个整数保存一下最后一个函数的返回值,我敢保证它不等于0。
作者: tari    时间: 2004-6-21 17:07
谢谢zzz斑竹,不过我用你的方法得到的错误提示是not a planar face,有点不大明白,我使用的plane是用UF_MODL_create_plane()生成的,怎么不是a planar face呢?
作者: zzz    时间: 2004-6-21 17:30
是了,你用create plane返回的是一个平面特征,而create pocket里面需要的是平面物体。要弄清楚feature和object的区别。这里要的是face tag吧
作者: tari    时间: 2004-6-21 19:22
我用UF_MODL_ask_feat_faces(plane,&face_list),好像得不到面的tag啊,face_list等于oxcccccccc,无效值啊
怎样才能得到face tag呢?
作者: zzz    时间: 2004-6-22 11:19
用UF_MODL_ask_feat_object()试试。
作者: tari    时间: 2004-6-22 12:32
好像不行,tag_t *eids;
   int num;
   rc=UF_MODL_ask_feat_object(plane,[$num,&eids)]
msg信息是Incorrect object class.please report the problem
其实我要实现的功能要求很简单,把boss切除下来并延伸一小段距离,然后在对应的地方做一个坑定位就可以了
作者: zzz    时间: 2004-6-22 15:38
用UF_MODL_create_plane()不对,plane代表的是一个无穷大的平面,没有face和它对应。应该用datum plane。UG里面没有用plane定位的。
作者: tari    时间: 2004-6-23 09:25
谢谢zzz斑竹!
UF_MODL_create_point_dirr_dplane(tag_t point,tag_t direction,tag_t *dplane),现在已知的point、direction都是3维实数数组,怎么转换成tag_t呢?
刚刚发现一个更好的函数UF_MODL_create_fixed_dplane()不用转换参数了,呵呵
作者: tari    时间: 2004-6-23 10:03
现在已经生成了基准面plane
rc=UF_MODL_create_cyl_pocket(location,dir_x,diam,depth,radius,
    angle,plane,[$cyl_pocket)]
调试时msg:Tool body completely outside target body.我是在boss的原点生成cyl_pocket,怎么会在外面呢?
作者: goodluckwu    时间: 2004-6-23 11:31
tari wrote:
谢谢zzz斑竹!  
  UF_MODL_create_point_dirr_dplane(tag_t point,tag_t direction,tag_t *dplane),现在已知的point、direction都是3维实数数组,怎么转换成tag_t呢?  
  刚刚发现一个更好的函数UF_MODL_create_fixed_dplane()不用转换参数了,呵呵

  
tag_t point可以理解,你在那个点上建一个point就可以了。但是UG中有向量么?direction 怎么变成tag 啊?
作者: tari    时间: 2004-6-23 12:51
UG文档里就是这么写的,呵呵,这个函数不好用,只好用UF_MODL_create_fixed_dplane()啦
各位高手继续指点啊!
作者: goodluckwu    时间: 2004-6-23 14:26
嗬嗬,我也是这么想的,只不过顺便问一句,看看如果哪个高手知道,指点一二
作者: tari    时间: 2004-6-24 12:36
高手帮我看看,前面的问题msg:Tool body completely outside target body到底是怎么回事?我一直没明白,呵呵
作者: goodluckwu    时间: 2004-6-24 14:29
这个提示一般是出现在你做了布尔运算,而两个作运算的物体不能满足运算要求的时候。例如两个完全没有交集的物体做差
作者: zzz    时间: 2004-6-24 15:02
看样这个面只能在已有的实体上取。




欢迎光临 iCAx开思工具箱 (https://t.icax.org/) Powered by Discuz! X3.3