找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 16870|回复: 5
打印 上一主题 下一主题

【求助】UG API中如何获得实体表面的tag?非常感谢!

[复制链接]
跳转到指定楼层
1
发表于 2004-3-17 15:14:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
我需要对实体的表面做一些进一步的操作,所以需要先获得表面的tag
  
我查了一下help,选了下面这个函数
extern int UF_OBJ_cycle_objs_in_part (
               tag_t part_tag, int type, tag_t * object );
  
tag_t    part_tag        Input                Tag of part you wish to cycle  
int        type              Input                Type of object on which to cycle  
tag_t *  object          Input/Output      On input the object found  
                                                        by the last call to this routine.  
                                                        if this routine has not been called  
                                                        yet, then set object=NULL_TAG
                                                        to start cycling.  
                                                        On output the next object of the  
                                                        type specified. If there is no  
                                                       object, and the cycling is complete
                                                       a NULL_TAG is returned.  
  
考虑到我要查询的对象是实体表面,所以type我定义为
UF_solid_face_subtype
  
但问题就出在这里,始终查询不出结果! *object返回0(NULL_TAG)
为了验证是不是类型定义那里出错,我将type变成UF_solid_type
(UF_solid_face_subtype为UF_solid_type的一个子类型)
结果查询正常,*object返回为一个非零整数(tag_t)
感觉很疑惑,因为我需要查询的确实只是face这种子类型
而不是solid_type本身。
  
希望高手能帮忙指点一下!
怎样才能查询到subtype对象?
又或者我本身就选错了函数?
不知道你们在解决相同问题的时候,是用的什么方法?
非常感谢!bow先!
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
2
发表于 2004-3-17 15:23:33 | 只看该作者
我查了一下uf_object_types.h
#define UF_solid_type                            70
#define    UF_solid_body_subtype                       0
#define    UF_solid_swept_body_subtype             1 /* Internal use only -
                                                                      nondisplayable */
#define    UF_solid_face_subtype                         2
#define    UF_solid_edge_subtype                        3
#define    UF_solid_silhouette_subtype                  4 /* Moved to type      
                                                                             201 in V10 */
#define    UF_solid_foreign_surf_subtype               5
所以想,是不是将type赋值为702就可以
(70是type的值,2是subtype的值)
但试了试,好像还是没有效果
大家帮忙了,谢谢!
3
发表于 2004-3-17 15:45:47 | 只看该作者
我说什么好呢。
再进一步判断一下子类型不就完了吗?
好像是UF_OBJ_ask_type_and_subtype吧。
4
发表于 2004-3-17 16:15:03 | 只看该作者
int ii;
  
UF_MODL_ask_feat_faces(tag, [$face_list)]
  
UF_MODL_ask_list_count(face_list, [$num_faces)]
  
for (ii = 0;ii < num_faces;ii++)
{
      UF_MODL_ask_list_item(face_list, ii, [$face_tag)]
}
  
就可以取出face_tag.
5
发表于 2004-3-18 12:26:53 | 只看该作者
总算做出来了!
  
这么查询的
part_tag --> solid_tag(type) --> face_tag(subtype)
总之就是一步一步向下找
谢谢windcc
  
版主说的那个函数我也去查了
extern int UF_OBJ_ask_type_and_subtype (
tag_t object_id, int * type, int * subtype );
是在已经知道object tag的情况下去查询它的类型和子类型
而我这里是已知类型,去筛选出符合条件的object
正好是个反向的过程
  
btw,
虽然把face tag查询出来了,但一步一步也挺费事的
所以,想知道有没有直接可以用子类型找object的函数
就像这样part_tag --> face_tag
thanks!
6
发表于 2004-3-19 09:06:37 | 只看该作者
哈哈哈哈,找到一个函数
extern int UF_MODL_ask_object (int ug_type, int ug_subtype, tag_t * object );
直接可以根据类型和子类型查询到对象的tag,兴奋ing~~~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-1-30 13:46 , Processed in 0.036897 second(s), 11 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

快速回复 返回顶部 返回列表