iCAx开思工具箱
标题:
ass
[打印本页]
作者:
刘亮
时间:
2005-3-17 17:26
标题:
ass
兄弟们,问装备的问题,下面
一、编程出一个长方体,得到特征idfeatures;
UF_MODL_create_block1(UF_NULLSIGN, corner_pts
,
edge_lens, [$features)]
二、通过特征idfeatures,得到body的id
UF_MODL_ask_feat_body(features
, [$blocks
)]
三、通过body的id创建component_part
UF_ASSEM_create_component_part(work_part, "lgl.prt",
NULL, NULL, units, 0,
origin, csys, 2, blocks,
[$instance)]
现在我要的是先造型造好一个长方体,而不是编程出一个长方体,
既通过打开一个部件,部件里有长方体,可以得到部件的id,有没有通过部件
的点得到body的id?应该不是 UF_MODL_ask_feat_body?
那我怎么样获得body的id来
UF_ASSEM_create_component_part(work_part, "lgl.prt",
NULL, NULL, units, 0,
origin, csys, 2, blocks,
[$instance)]
谢谢
作者:
supergirl
时间:
2005-3-17 18:30
最简单的方法:
1 得到part的tag。
UF_PART_ask_part_tag ( char * part_name );
2 在part中cycle所有的object,肯定有你要的东东,UF_OBJ_cycle_objs_in_part (
tag_t part_tag,
int type,
tag_t * object );
作者:
刘亮
时间:
2005-3-17 21:03
supergirl
怎么又是你为我扶贫啊!!!美女
作者:
刘亮
时间:
2005-3-17 21:04
那我怎么知道哪个id就是body的点啊?
作者:
supergirl
时间:
2005-3-17 21:13
你可以查type啊,当然如果有多个同样type的就不行了。
如果遇到这种情况还有两个解决方法:
1 调selection ,手动选一个feature,这样就可以直接得到feature 的id,也不用cycle 整个part了。
2 给你的feature 先添加一个attribute,然后cycle的时候通过attribute来找
set attribute 的函数: UF_ATTR_assign (
tag_t object,
char * title,
UF_ATTR_value_t value );
find attribute的函数:UF_ATTR_find_attribute (
tag_t object,
int type,
char * title,
int * title_type );
这样麻烦一点。
作者:
vodka
时间:
2005-3-18 01:21
Hey, 少东家
看标题还以为你在发标骂人呢
还是在骂你自己啊
千万不要用“求助ass" 几个字(意思是你的ASS有麻烦,需要帮助)
但你可以用assem
再仔细看看
翻翻字典
那两个字母不能省的
作者:
刘亮
时间:
2005-3-18 08:43
作者:
jambo436
时间:
2005-3-18 14:34
请教supergirl ,详细说说再你的第2步中如何在添加一个attribute之后,通过cycle来找到该feature???
我试过了:
UF_OBJ_cycle_objs_in_part(part_tag,UF_attribute_type,tag_t * object);
好象不行?
你可以查type啊,当然如果有多个同样type的就不行了。
如果遇到这种情况还有两个解决方法:
1 调selection ,手动选一个feature,这样就可以直接得到feature 的id,也不用cycle 整个part了。
2 给你的feature 先添加一个attribute,然后cycle的时候通过attribute来找
set attribute 的函数: UF_ATTR_assign (
tag_t object,
char * title,
UF_ATTR_value_t value );
find attribute的函数:UF_ATTR_find_attribute (
tag_t object,
int type,
char * title,
int * title_type );
这样麻烦一点。
作者:
supergirl
时间:
2005-3-18 16:15
1 给你要找的东西添加一个attribute,这就像给你要找的东西加一个小的标示 一样。
可以在Ug中添加,这个就不多说了
也可以用UF_ATTR_assign (
tag_t object,
char * title,
UF_ATTR_value_t value ); 来添加
2在part中cycle 出所有的object tag
3 对于每个object tag
用函数 extern int UF_ATTR_find_attribute (
tag_t object,
int type,
char * title,
int * title_type );来找是否有刚才你设置的attribute
输入的参数title就是你刚才设的那 个title,这样就可以通过函数的返回值来看,是否找到了。
这是在part找东西的一个通用的方法。
当然我个人认为第一个方法好,毕竟效率高一些,只不过,就是要让用户选择一下比较讨厌
作者:
jambo436
时间:
2005-4-13 13:33
再次请教SUPERGIRL:
我首先画一个球体,
给它添加一个属性,
接着通过查询属性来查看返回值,
返回值似乎不是我所期望的?请问什么原因,哪里出错了?
UF_ATTR_value_t value;
char messg[133];
UF_MODL_create_sphere1(sign_sphere, center_1,diam, [$sphere_tag )]
UF_MODL_ask_feat_body(sphere_tag,[$sphere_body)]
value.type = UF_ATTR_string;
value.value.string = "Car2TrunkTag";
UF_ATTR_assign(sphere_body, "STRING_ATTRIBUTE", value);
int m=UF_ATTR_find_attribute (sphere_body,UF_ATTR_string,"STRING_ATTRIBUTE",[$title_type)]
UF_get_fail_message(m, messg);
uc1601(messg,1);
弹出信息框显示no error,也就是说UF_ATTR_find_attribute的返回值是0.如果属性设置成功的话应该是5才对啊!
欢迎光临 iCAx开思工具箱 (https://t.icax.org/)
Powered by Discuz! X3.3