iCAx开思工具箱
标题:
如何遍历装配件的面,并找到需要装配的面?
[打印本页]
作者:
zxdawn
时间:
2005-12-21 10:07
标题:
如何遍历装配件的面,并找到需要装配的面?
我要做零件的自动装配,但不知如何遍历装配件的面,并找到需要装配的面?如果哪位大侠有相关经验,能否把代码给我借鉴一下,小妹在此先谢了
作者:
mizzle
时间:
2005-12-21 16:53
UF_MODL_ask_body_faces (),然后UF_MODL_ask_face_data (),根据你要用的装配面的一些特征把需要的选出来,例如,你要的是圆柱面,可以根据type来确定哪个面是你要的,或者多个特征来选。
作者:
pzytony
时间:
2005-12-21 20:42
补充楼上的兄弟,你找装配匹配条件有关的函数,即assem.h中带_mc_的函数
作者:
supergirl
时间:
2005-12-21 21:16
在装配中cycle,最重要是分清,proto和occurrence
作者:
zxdawn
时间:
2005-12-22 10:19
extern int UF_MODL_ask_body_faces (tag_t body, uf_list_p_t * face_list );
请问tag_t body如何获得呢?
谢谢各位回帖
作者:
supergirl
时间:
2005-12-22 10:34
在part里面cycle啊。
在装配里cycle的思路一般是得到root part occ,然后再cycle 它的occ children,得到下面child occ part,然后在每一个child occ part里面再cycle出所有的body。
这几个cycle函数都是有的,自己去找。
作者:
zxdawn
时间:
2005-12-22 11:19
谢谢回复!但我要做的是根据导入的零件去识别它的面的信息,然后作自动装配,而不是装配好后再识别面的信息
作者:
supergirl
时间:
2005-12-22 12:56
那就在part里直接cycle出所有的body,再用你那个函数问出面就OK了
作者:
zxdawn
时间:
2005-12-22 14:31
谢谢,我去试试
作者:
boliang99
时间:
2005-12-24 09:11
我现在也在做装配,大家多多交流。我觉得 思路应该这样:
1.先把零件装入装配prt. (如果零部件不在同一目录,最好先克隆再装入克隆体)
2.遍历from prt和to prt 的pro/ins/occ (用UF_ASSEM_函数)
3.设置工作部件然后遍历工件部件的各object.(自动装配可以UF_MODL_ask_函数来遍历所需的面)
4.求解约束(这部分在《UG应用开发教程与实例精解》中有代码)
作者:
zxdawn
时间:
2005-12-27 10:28
我按照一下代码只能识别出面的类型,不能识别出面的几何拓扑信息,请问还有什么方法吗?
for(int i=1; i<256; i++)
{
do
{
UF_LAYER_cycle_by_layer(i, &tObj);
if(tObj!=NULL_TAG)
{
UF_MODL_ask_body_faces(tObj,&face_list );
UF_MODL_ask_list_count(face_list,&count);
for(int j=0; j<count; j++)
{
UF_MODL_ask_list_item(face_list,j,&tObj);
UF_MODL_ask_face_data (tObj,&iType,point,dir,box,&radius,&rad_data,&norm_dir );
sprintf(sLine,"%2d%2d%8d%8d%8d%8d%10d%10d%8d\n",tObj,i,iType,point,dir,box,radius,rad_data,norm_dir);
UF_UI_write_listing_window(sLine);
}
UF_MODL_delete_list_item(&face_list,tObj);
UF_MODL_delete_list(&face_list);
}
}
while(tObj!=NULL_TAG);
}
作者:
zzz
时间:
2005-12-27 12:15
显然,要找到装配的面,和你事先制定的自动装配规则是完全相关的。
假设你的模型里面有100个圆柱面,这100个都可以通过cycle的方法找到。可是这100个面中,你又怎么知道那一个是你要的。
这就和你的装配规则有关了,所以没有明确的规则,只能讨论粗略的算法,不可能产生一对一的解决方法。
作者:
zxdawn
时间:
2005-12-27 16:28
标题:
请问zzz(论坛元老)?
谢谢zzz前辈的指点,我现在还在摸索学习阶段,你说的很有道理,但我在装配规则方面一点思路都没有,你能不能说的更详细些。举个例子说明一下好吗?谢谢
作者:
zerohou81
时间:
2006-1-11 10:44
我也在做自动装配,就我的感觉而言,自动装配前必须要首先确定装配体的装配序列规划和路径规划,简单的说就是基于任意给定序列和给定路径实现零件的自动装配仿真。
作者:
boliang99
时间:
2006-1-17 21:50
我按照一下代码只能识别出面的类型,不能识别出面的几何拓扑信息,请问还有什么方法吗?
for(int i=1; i<256; i++)
{
do
{
UF_LAYER_cycle_by_layer(i, &tObj);
if(tObj!=NULL_TAG)
{
UF_MODL_ask_body_faces(tObj,&face_list );
做过一点装配,感觉识别面首先识别obj_type(正如识别component 的proto/occ/ins一样,如果没识别好就会出错). 如上面这段代码怎知道tObj是body_type? 如果不是,那就用不了UF_MODL_ask_body_faces函数的.
作者:
murongjun
时间:
2006-2-7 15:17
用下面的方法得到的面,最后一句总是报错"the first parameter passed in was invalid"
UF_MODL_ask_feat_faces (feat1, &face_list );
int index=0;
tag_t face;
UF_MODL_ask_list_item (face_list,index,&face);
UF_MODL_delete_list(&face_list);
UF_ASSEM_ask_parent_component (face, &to_part_occ);
请各位大侠帮忙解决.
作者:
zhoujunbo830
时间:
2007-9-17 21:26
这就是一直折磨我的问题!!
你研究出来了吗?
把代码告诉我一下!!!!
谢谢阿
欢迎光临 iCAx开思工具箱 (https://t.icax.org/)
Powered by Discuz! X3.3