iCAx开思工具箱
标题:
分享———UG自动装配的例子
[打印本页]
作者:
obana
时间:
2005-11-18 18:59
标题:
分享———UG自动装配的例子
一个自动装配的例子
首先声明,我是一个UG二次开发新手
。大概两年前做过一个简单的二次开发例子,算是入门。这个程序是实验室一个课题的一部分,看到这里对装配二次开发的呼声很热烈,就把这个程序发上来了。主要阅读对象是像我一样的新手,大虾见了莫笑。当然也欢迎在这方面的有识之士共同探讨。
思 路
:从XML文件里读出装配信息(装配树及装配约束),在UG里面实现自动装配
关键技术
:MS XMLDOM ,UG OPEN API
架 构
:MFC DLL (Regular Dll,MFC静态链接。这种方式在没装VC的情况下可以运行,就是生成的Dll文件大些)
运行方式
:Internal
设置:
如果仅运行
新建文件夹(包含路径)E:\UG\application\
拷贝压缩包里面 \Files下所有文件至上面的目录(不包含File目录)
打开UG,选择目录下的AutoASM.dll运行(快捷键 Ctrl+U)
调试
设置VC二次开发环境,不说了吧。
在菜单Project Settings下Link标签下的Ouput file name:改为E:\UG\application\AutoASM.dll(项目里已经更改,特此说明,所以请找不到输出文件的不要怪我哦)
运行界面
类说明:
CAsmXMLCtrl()
主要功能实现类,完成XML解析,读取节点数据,加载零件,添加约束
CXMLFile
解析XML的主要代码,经过处理,只用到里面的一个函数,不想了解这方面的可以完全置之不理。
MyAsmDlg
对话框类,调用CAsmXMLCtrl中的函数实现各种功能
主要函数:
bool CAsmXMLCtrl:
oad(const char* filename, const char* tree_name, bool bImage)
入口函数,打开XML文件,新建一个装配文件,做一些初始化工作,然后调用下面的函数
void CAsmXMLCtrl::GetAllAssems(MSXML2::IXMLDOMNodePtr& pNode,tag_t part)
解析XML文件,遍历所有节点(递归),读取零件名称,加入到装配空间中
void CAsmXMLCtrl::SaveToArry(tag_t part)
遍历装配空间,获取所有零件Occurrence
定义了两个STL全局变量(数组)
std::vector<tag_t> occ_arry;
std::vector<CString> name_arry;
name_arry保存零件名,occ_arry保存对应的Occurrence
void CAsmXMLCtrl::MakeAssembly(MSXML2::IXMLDOMNodePtr& pNode)
解析XML文件,遍历所有零件节点(递归),读取装配约束,然后求解、施加约束。
tag_t CAsmXMLCtrl::GetOccByName(const char * occ_name)
遍历全局数组,获取零件名对应的零件Occurrence
tag_t CAsmXMLCtrl::GetInstByName(const char * prt_name)
遍历全局数组,获取零件名对应的零件Instance
tag_t CAsmXMLCtrl::GetPrtoByName(char * feature_name)
遍历UG数据库,获取特征名对应的Prototype
void MyAsmDlg::AddToTree(tag_t child_tag,HTREEITEM faItem)
把零件信息加入树形控件
XML文件说明
(, 下载次数: 69)
上传
点击文件名下载附件
下载积分: 贡献 -2
要实现自动约束,实际上就是填充上图最大方框内的内容,在UG里就是UF_ASSEM_mating_condition_t 结构体。所以对上图里内容不是很明白的朋友可以参考UG API手册。
04x
因为这是第一次做装配,错误难免,欢迎大家批评指正
遗留以下几个问题,大家一起交流一下:
QQ:31384881 Email:
obana@163.com
1) 这个程序目前只加入了处理贴合Mate和对齐Align两种约束的代码。约束特征只包含平面和圆柱面两种
2) 我是在添加零件完毕后再遍历装配空间,获取零件Occurrence,有没有在添加零件同时获取Occ的方法
3) 为了获取装配特征对应的Occ,我是先在部件里面给所有装配里用到的面(点,线。。。也是如此)取一个名字放到XML里面(<feature name="XXX" type="XXX"/>节点)装配的时候遍历UG数据库,获取名称对应的装配特征Prototype。如果有两个同样的零件加进来,而且均要用到同一个特征,这就没法处理了。
4) 目前还只做到从XML里读数据(最基本的数据),往里面写是下一步的内容,这里就要考虑获取更多装配信息及如何存储的问题(如工艺信息,装配序列。。。)
下面是源代码
作者:
obana
时间:
2005-11-18 19:38
标题:
Files目录下文件说明
Files目录下文件说明
ASM_test.xml 从此文件中读取装配信息
cage_up.prt
cage_down.prt
xiao_01.prt
xiao_01.prt
jian.prt
这5个文件是XML文件里说明的,不能缺少
AutoASM2.dll 生成的DLL,直接在UG里运行
HX1-2100-90_3.prt
HX1-2100-91YZ.prt
asm-2100-92_3.prt
另一个例子中用到的,没啥用,可以删除
作者:
hustszh
时间:
2005-11-18 20:09
好东西
谢谢啊
作者:
buaadog
时间:
2005-11-21 22:24
我是二次开发的新手,正好要做装配方面的内容,xml的东西我不懂,请问楼主能不能把这部分去掉,把UG相关的代码发上来呢
作者:
zzz
时间:
2005-11-22 14:45
象这种有技术含量的帖子,我们要大力地支持!
作者:
obana
时间:
2005-11-22 16:09
To 楼上的,这个例子就是采用了XML才是亮点(个人观点),如果不用它,你说约束信息存哪呢?
你需要的纯装配代码要提取的话挺麻烦,你可以搜索一下论坛,有另外一个自动装配的例子 ,我的很多想法来自那。
作者:
liangalan
时间:
2007-4-21 21:55
我没有看明白你是如何实现自动装配的,配合的关系保存在一个文件里面,是不是算只能装配这个装配文件阿, 如果我要把一个部件 装入别的零件中时候能够自动装好就 好了
作者:
kelleyz
时间:
2007-6-20 02:33
非常好啊,要是能做成avi的更好
作者:
shiran147
时间:
2007-11-24 23:01
henhaode 学习资料
作者:
cam-yp
时间:
2007-11-25 02:43
不知道怎么设置节点的图标,看楼主做的,父节点和子节点的图标不一样,我看了代码还没懂,会的请指点一下
作者:
skyonetop
时间:
2009-7-16 14:55
确实是个好东西,我都忍不住要顶了
作者:
yaoer_361
时间:
2010-12-28 21:28
lz厉害,我要学习~~~
作者:
zjs
时间:
2010-12-29 19:09
就是不明白自动装配。
作者:
caiyu0
时间:
2011-1-6 10:10
非常感谢楼主的提供
作者:
sunshine0523
时间:
2011-7-8 10:02
请问如果我换其他零件做该怎么实现自动装配呢?
作者:
fisherhua
时间:
2011-7-26 20:22
不错,就是对于装配,能不能只采用DLL,不用MFC呢,就是只用UG API的代码
作者:
jiazhixie
时间:
2011-8-21 16:44
请问帮主,自动装配前加载零件形成的爆炸图是怎么回事?不甚感激!
作者:
jiazhixie
时间:
2011-8-24 09:05
请问楼主,如何得到源文件?
作者:
wdg110
时间:
2011-8-27 17:32
不错不错
作者:
diruijing
时间:
2011-11-28 16:06
作者:
wangning03
时间:
2012-1-5 20:43
支持楼主共享精神!
作者:
lvoids
时间:
2013-8-15 22:01
如今这样的淳朴技术贴太少了{:soso_e179:}
作者:
lvoids
时间:
2013-8-15 22:03
想问一句,xml文件是怎么建立的,自动?手工?
作者:
dyne2
时间:
2013-10-18 12:59
楼主牛人呀
作者:
a0806
时间:
2013-10-20 07:56
谢谢,这是好东西
作者:
ScmTools
时间:
2014-5-18 12:17
设置节点的图标
作者:
jimk
时间:
2014-12-11 09:58
学习一下,谢谢
作者:
chenwenwei
时间:
2017-9-8 21:04
呓到这,眼前一亮啊。XML
作者:
hiboboloo1988
时间:
2018-12-20 10:59
正好要做装配方面的内容,xml的东西我不懂,请问楼主能不能把这部分去掉,
欢迎光临 iCAx开思工具箱 (https://t.icax.org/)
Powered by Discuz! X3.3