UG二次开发的自动装配技术.

合集下载

UG二次开发技术

UG二次开发技术
新建一个文件夹,在此文件夹下建立三个子文件夹 startup、application、udo,并把这个文件夹的路径(如 D:\test)写入UGS180\UGII\menus\custom_dirs.dat文件中
将路径写入custom_dirs.dat文件
*.dlg,*.dl l
*.men
谢 谢!
UG/OPEN API
利用UG/OPEN API 用户可以根据自己的需要 创建动态链接库文件(*.dll),通过下列两 种方式启动:
A、由自定义菜单或工具栏调 用
B、由File->Execute UG/Open-> User Function调用
UG/OPEN MenuScript
MenuScript模块主要用于制作菜单,用户按照其语法创建 *.men文件并放在指定的目录内,UG启动时可以自动加载。
UIStyler启动菜单
UIStylert提供的控件
UG/OPEN UIStyler
对话框制作完成保存后,生成一个 C语言源文件(*.c文件)、一个C 语言头文件(*.h文件)和一个UG 对话框文件(*.dlg文件)。利用 生成的*.c和*.h文件再与UG/OPEN API相结合使用,编制成能实现某 项功能的动态链接库文件。
2、应用范围
同类零件编程、计算和分析、绘图、零件标准化、 数据访问等。 3、使用步骤
编写GRIP源程序 修改
编译程序
链接
执行
UG/OPEN GRIP
启动GRIP
GRIP开发环境
执行GRIP程序
UG/OPEN GRIP
GRIP源文件 执行结果
UG/OPEN API
1、可实现功能
对UG模型文件进行操作,包括创建UG模型、查询 模型对象、建立并遍历装配体、创建工程图等。

UGNX基本功能和二次开发

UGNX基本功能和二次开发

UGNX基本功能和二次开发
UGNX(Unigraphics NX)是一款集成的计算机辅助设计(CAD)和计算机辅助工程(CAE)软件,由Siemens PLM Software开发。

UGNX提供了一系列基本功能和二次开发的功能,以满足不同用户的需求。

UGNX的基本功能包括几何建模、装配设计、绘图和可视化、工程分析和模拟等。

其次,UGNX具有先进的装配设计功能。

用户可以在UGNX中创建装配模型,并对模型进行装配性分析和干涉检查。

UGNX还支持装配模型的动态仿真和碰撞检测,以帮助用户优化设计并确保装配的正确性。

除了几何建模和装配设计功能,UGNX还提供了绘图和可视化功能。

用户可以使用UGNX创建二维工程图和三维可视化图像,以便更好地展示和传达设计意图。

UGNX支持多种图像输出格式,如DWG、STEP和JPEG,使用户能够与其他CAD和CAE系统进行无缝集成。

此外,UGNX还具有强大的工程分析和模拟功能。

用户可以使用UGNX 进行结构分析、热分析、流体流动分析等工程分析。

UGNX还提供了内置的仿真工具,如有限元分析(FEA)和计算流体力学(CFD),以帮助用户评估设计的性能和可靠性。

总之,UGNX是一款功能强大的CAD和CAE软件,具有几何建模、装配设计、绘图和可视化、工程分析和模拟等基本功能。

同时,UGNX还支持二次开发,允许用户根据自己的需求进行定制和扩展。

UGNX的功能和二次开发使其成为广泛应用于各行各业的设计和工程领域的首选软件之一。

ug二次开发介绍

ug二次开发介绍

ug二次开发介绍————————————————————————————————作者:————————————————————————————————日期:UG二次开发功能简介Unigraphics(UG)是美国UGS公司的集CAD/CAM/CAE于一体的软件集成系统,功能覆盖整个产品的开发过程:从概念设计、功能工程、功能分析到制造,在航空航天、汽车、机械、模具和家用电器等工业领域的应用非常广泛。

UG软件提供了功能强大的二次开发(应用开发)模块,利用该模块可对UG系统进行用户化裁减和开发。

UG/Open是一系列UG开发工具的总称,主要由UG/Open API、UG/Open GRIP、UG/Open MenuScript和UG/Open UIStyler四部分组成。

UG/Open API (又称User Function ),是一个允许程序访问并改变UG对象模型的程序集。

UG/Open API 封装了近2000个UG操作的函数,它可以对UG的图形终端、文件管理系统和数据库进行操作,几乎所有能在UG界面上的操作都可以用UG/Open API 函数实现。

UG/Open API程序按其连接方式分为两种,内部模式(Internal环境) 和外部模式(External 环境)。

采用内部模式开发的程序只能在UG 的界面环境(Session)下运行,其优点是可以连接的更快且程序更小并能与用户交互;采用外部模式开发的程序能在操作系统中独立执行,其缺点是无法实时显示图形与用户交互,值得注意的是部分函数只能在内部模式下执行。

UG/Open API 程序使用的是C 或C + + 编程语言。

基于Windows操作系统的UG二次开发可以在VC + + 6.0或环境下进行,VC提供的各类库函数和丰富的编程资源进一步提升了UG/Open API的功能,同时也为集成企业原有的C/C++语言程序提供了方便。

UG/Open GRIP ( Graphics Interactive Programming) 是一种专用的图形交互编程语言,与UG系统集成,可以实现UG环境下的大多数应用操作。

UG二次开发实体转装配零件并将实体属性填写到装配零件中(C#)

UG二次开发实体转装配零件并将实体属性填写到装配零件中(C#)

UG⼆次开发实体转装配零件并将实体属性填写到装配零件中(C#)1 ///<summary>2///实体转化为装配3///</summary>4///<param name="prtfull">全路径</param>5///<param name="bodys">实体</param>6///<param name="SaveBool">是否保存零件</param>7///<returns>返回prtTag </returns>8public void CreatObjPartToAssembly(string prtfull, Body bodys, bool SaveBool, ref Tag prtTag)9 {10 NXOpen.FileNew fileNew1;11 fileNew1 = base.theSession.Parts.FileNew();12 fileNew1.TemplateFileName = "model-plain-1-mm-template.prt";13 eBlankTemplate = false;14 fileNew1.ApplicationName = "ModelTemplate";15 fileNew1.Units = limeters;16 fileNew1.RelationType = "";17 esMasterModel = "No";18 fileNew1.TemplateType = NXOpen.FileNewTemplateType.Item;19 fileNew1.ItemType = "";20 fileNew1.Specialization = "";21 fileNew1.SetCanCreateAltrep(false);22 fileNew1.NewFileName = prtfull;23 fileNew1.MasterFileName = "";24 fileNew1.MakeDisplayedPart = false;25 NXOpen.Assemblies.CreateNewComponentBuilder createNewComponentBuilder1;26 createNewComponentBuilder1 = workPart.AssemblyManager.CreateNewComponentBuilder();27 createNewComponentBuilder1.ReferenceSet = ponentReferenceSetType.Other;28 createNewComponentBuilder1.ReferenceSetName = "PART";29 createNewComponentBuilder1.OriginalObjectsDeleted = false;30string name = Path.GetFileNameWithoutExtension(prtfull);31 createNewComponentBuilder1.NewComponentName = name.ToUpper();32bool added1;33 added1 = createNewComponentBuilder1.ObjectForNewComponent.Add(bodys);34 createNewComponentBuilder1.NewFile = fileNew1;35 NXOpen.NXObject nXObject1;36 nXObject1 = mit();37 Tag occTag = nXObject1.Tag;38 Tag InstanceTag = theUfSession.Assem.AskInstOfPartOcc(occTag);39 prtTag = theUfSession.Assem.AskChildOfInstance(InstanceTag);40 NXOpen.BasePart bpart = (NXOpen.BasePart)NXObjectManager.Get(prtTag);41if (SaveBool)42 {43 bpart.Save(BasePart.SaveComponents.True, BasePart.CloseAfterSave.False);44 }45 NXObject.AttributeInformation[] allAttrs = bodys.GetUserAttributes();46foreach (NXObject.AttributeInformation attrinfo in allAttrs)47 {48 bpart.SetUserAttribute(attrinfo, Update.Option.Now);49 }50 createNewComponentBuilder1.Destroy();51 }。

ug装配自动化

ug装配自动化

虚拟装配自动化UG采用“利用部件链接关系建立装配”的虚拟装配模式。

这种模式可检查目标装配体自身静态干涉、模仿产品的装配过程、定义拆装路径,并可仿真机构运动,分析机构的运动性能,从而分析产品及其装配元件的可装配性,衡量装配设计阶段产品设计结果的好坏[6]。

而上述功能只能在人机交互方式下实现,当目标装配体为大型复杂系统时,存在操作过程烦琐、操作者易疲劳和重复性差等诸多不足。

针对这种情况,提出虚拟装配自动化解决方案,描述如下:【=】~1从文件读入或自定制界面输入零部件在装配图中的目标方位,通过装配程序对装配用方位参照信息(坐标矩阵)进行坐标转换,实现零部件自动坐标定位。

变高强度的人机交互操作为命令式操作,使重复、烦琐的手工操作程序化,从而自动完成虚拟装配,达到提高生产效率的目的。

为能在飞机操纵系统装配后顺利进行动、静态干涉检查等后续工作,需要在每次链接零部件、导入零件事件(part occurrences)之后,对零件事件进行ID标识,使之成为一个节点。

操纵系统虚拟装配自动化流程如下:Assemble() //虚拟装配自动化{获取预装配零部件的装配用方位参照信息;获取零部件在装配件图中的方位;链接零部件,导入零件事件;空间方位转换;标识零件事件,使之成为节点;};基于上述方法实现的飞机操纵系统的典型组件装配图、全系统装配图分别见图4、图5。

4 结束语二次开发UG实现飞机操纵系统零件参数化设计与虚拟装配自动化方案在很大程度上解决了工厂技术人员的劳动强度问题,缩短了设计周期,降低了设计成本。

本研究是飞机硬式机械操纵系统设计平台的核心技术内容之一,该平台已在中埃两国签署的关于中埃两国合作生产80架K8E飞机的合同中得到成功应用。

参考文献[1] 童时中,李平.二次开发是CAD取得实效的关键环节.水利电力机械,1998,6:34-39.[2] 马秋成,韩利芬,聂松辉,罗益宁,肖良红,谢桂兰.UG实用教程·CAD 篇.北京:机械工业出版社,2001.[3] 程宝义.计算机辅助设计基础.长沙:国防科技大学出版社,1999.[4] 徐鑫福,冯亚昌.飞机飞行操纵系统.北京航空航天大学出版社,1989.[5] UG Documentation Help. Unigraphics Solutions Inc.2000.[6] 童秉枢.现代CAD技术.北京:清华大学出版社,2000.。

UG二次开发教程

UG二次开发教程

UG二次开发教程UG是一种强大的三维建模软件,它提供了丰富的功能和工具,使用户能够创建复杂的三维模型。

除了它的基本功能外,UG还支持二次开发,使用户能够自定义程序来满足自己的特定需求。

本文将介绍UG二次开发的基本概念和一些常用的开发技巧。

1.增强功能:UG的基本功能通常无法满足所有用户的需求。

通过二次开发,用户可以根据自己的需求添加额外的功能,提高工作效率。

2.自定义工具:UG二次开发使用户能够创建自己的工具和工作流程。

这些工具可以根据用户的工作流程来设计,以提高工作效率。

3.自动化:UG二次开发可以通过编写脚本和宏来自动执行繁琐的任务,从而节省时间和劳动力。

4.与其他软件的集成:UG二次开发使用户能够将UG与其他软件集成,例如ERP系统、PLM系统等,实现数据的传递和共享。

下面是一些常用的UG二次开发技巧:1.学习编程语言:UG支持多种编程语言,开发人员应该选择其中一种来学习。

C++是UG开发的主要语言,因此建议开发人员首先学习C++语言。

2.掌握UGAPI:UG提供了一组API(应用程序接口),用于访问和操作UG的功能。

开发人员应该熟悉这些API,并在开发过程中灵活运用。

3.阅读开发文档:UG提供了详细的开发文档,包括API参考、示例代码等。

开发人员应该仔细阅读这些文档,并通过实践来理解其中的原理和用法。

5. 使用UG工具包:UG提供了一些工具包,用于二次开发。

例如,UG Open API Toolkit包含用于UG二次开发的示例代码和工具。

开发人员可以使用这些工具包来加快开发进度。

6.加入UG开发社区:UG有一个活跃的开发社区,开发人员可以在这里分享经验和技巧,获取帮助和支持。

下面是一个UG二次开发的简单实例,演示了如何创建一个自动生成椅子模型的工具:1.创建一个新的UG插件项目。

2.在插件项目中编写代码,实现椅子模型的生成算法。

代码可以利用UG的几何计算功能来创建椅子的各个部件,例如座位、背部和腿部。

ug参数化建模二次开发程序

ug参数化建模二次开发程序

ug参数化建模二次开发程序摘要:1.什么是UG参数化建模二次开发程序?2.UG参数化建模的优势3.二次开发程序的实现方法4.如何进行UG二次开发?5.实际应用案例分享6.总结与展望正文:随着制造业的不断发展,UG(Unigraphics)软件在全球范围内得到了广泛的应用。

UG是一款功能强大的计算机辅助设计(CAD)和计算机辅助制造(CAM)软件,其参数化建模和二次开发功能为企业和个人提供了极大的便利。

本文将介绍UG参数化建模二次开发程序的相关知识,并举例说明如何进行UG二次开发。

一、什么是UG参数化建模二次开发程序?UG参数化建模是指在UG软件中,通过定义参数、关系和约束等,实现模型的自动化生成。

这种建模方法具有灵活性高、效率性强、易于修改和控制等特点。

而UG二次开发程序则是指在原有UG软件基础上,利用编程语言(如C++、Python等)编写特定功能的插件或模块,以满足用户个性化需求。

二、UG参数化建模的优势1.提高设计效率:通过参数化建模,用户可以快速地调整模型尺寸和形状,节省设计时间。

2.降低设计错误:参数化建模有助于规范设计过程,减少人为错误。

3.易于修改和控制:参数化模型易于修改,用户可以通过调整参数实现模型的变化。

4.参数化建模有助于实现系列化设计,提高产品族的通用性。

三、二次开发程序的实现方法1.利用UG内置的脚本语言:如UG/WINCREATE、UG/GRAPH等,编写简单的脚本实现特定功能。

2.编写独立的程序:利用C++、Python等编程语言,结合UG API(应用程序编程接口)开发独立的二次开发程序。

3.利用开发工具:如Visual Studio、Eclipse等,集成UG软件,进行高级二次开发。

四、如何进行UG二次开发?1.学习UG软件和编程语言:掌握UG的基本操作方法和编程基础知识。

2.分析需求:明确二次开发的目标和功能需求。

3.设计方案:根据需求,设计相应的算法和数据结构。

二次开发自动装配

二次开发自动装配

// CDialog3 消息处理程序
ProError UserAssembleByDatums(ProAssembly asm_model,ProSolid comp_model)
{
ProError status;
ProName asm_datums[3];
ProName comp_datums[3];
ProMdl asm_model;
ProMdl comp_model;
ProError status;
//得到装配体的MODEL
status = ProMdlCurrentGet(&asm_model);
//得到零件的句柄
CString mdl_path =L"E:\wend模型\\face_02.prt";
ProStringToWstring(comp_datums[2],"RIGHT");
//将原件载入到装配体中,此时按默认位置摆放
ProAsmcompAssemble (asm_model, comp_model, identity_matrix, &asmcomp);
ProArrayAlloc (0,sizeof(ProAsmcompconstraint),1,(ProArray*)&constraints);
ProAsmcompconstraintCompreferenceSet (constraint, comp_sel,PRO_DATUM_SIDE_YELLOW);
//将这组参照添加入参照集合中
ProArrayObjectAdd ((ProArray*)&constraints,-1,1,&constraint);
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

UG二次开发的自动装配技术技术, 自动, 开发利用UG/OPEN API开发具体产品的应用系统时,常常遇到如何建立零件间装配约束关系的问题。

如何实现零件间自动装配,是开发应用系统的难点之一。

1.装配约束关系的简化在实际应用中,装配约束的配合类型有贴合、对准、角度、平行、正交、对中等多种类型,用于装配约束的对象类型有面、边、基准面、基准轴、点、线、曲线、坐标系等多种形式。

为了便于数据描述,可将组件间的装配关系做了适当的简化,如图1、2所示,该例中,将零件间的装配约束关系简化为两组件间三个基准面的贴合或对准的装配约束类系。

其中,图2中X,Y,Z为对应部件中的基准面名。

图1 简化前的装配约束关系图2 简化后的装配约束关系简化组件装配约束关系后,将主动组件的部件名、组件名与对象名,从动组件的部件名、组件名与对象名,以及装配约束类型等信息保存在ODBC数据库中。

在系统加载部件时,可根据数据库中的装配信息,实现组件的自动装配。

2.自动装配的实现2.1主动组件的加载使用UF_ASSEM_add_part_to_assembly函数即可将部件加载到装配体。

下段程序用于加载部件的,其中,parent_tag为父部件的部件标识,part_name为加载部件的部件名,inst_name为加载部件的组件名,inst_tag返回加载部件的实例标识。

void UG_OPEN_add_part_to_assem(tag_t parent_tag,char*part_name,?char *inst_name,tag_t *inst_tag){double origin[3] = {0,0,0};double csys_matrix[6] = {1,0,0,0,1,0};int layer = -1;UF_PART_load_status_t load_status;UF_ASSEM_add_part_to_assembly(parent_tag, part_name, NULL,inst_name, origin, csys_matrix, layer, inst_tag, &load_status);if ( load_status.file_names != NULL )UF_free_string_array( load_status.n_parts, load_status.file_names );if ( load_status.statuses != NULL )UF_free(load_status.statuses );}2.2 主动、从动组件事例标识的获取主动组件的事例标识可以通过UF_ASSEM_ask_part_occ_of_inst函数直接获取。

从动组件事例标识的获取较为繁琐,其步骤为:(1)确定从动组件的部件标识;(2)获取从动组件的所有事例标识;(3)匹配事例标识对应的组件名与从动组件组件名,确定从动组件的事例标识。

需要注意的是,在同一装配中,部件名相同的其组件名不能相同,组件名相同的其部件名不能相同。

下段程序代码用于获取从动组件事例标识,其中,part_name 为部件文件文件名,inst_name为部件文件组件名,occ_tag返回部件文件事例标识。

void UG_OPEN_ask_part_occ_by_name(char *part_name, char*inst_name,tag_t *occ_tag ){tag_t *part_occs;tag_t temp_tag;int i;char part_n[133], refset_name[31],instance_name[31];?double origin[ 3 ],csys_matrix[ 9 ],transform[ 4 ][ 4 ];?temp_tag = UF_PART_ask_part_tag(part_name);if(temp_tag != NULL_TAG){UF_ASSEM_ask_occs_of_part (NULL_TAG, temp_tag, &part_occs );i = 0;while(part_occs != NULL_TAG){UF_ASSEM_ask_component_data(part_occs, part_n, refset_name,?instance_name, origin, csys_matrix, transform);if(strcmp(strlwr(instance_name),strlwr(inst_name)) ==0 ) break;i++;}if(part_occs != NULL_TAG)?*occ_tag = part_occs;else*occ_tag = NULL_TAG;UF_free(part_occs);}else*occ_tag = NULL_TAG;}2.3 约束对象标识的获取获取用于建立装配约束关系的对象标识的步骤为:(1)将对象所在部件设置为工作部件;(2)利用UF_OBJ_cycle_by_name 获取对象标识。

同样需要注意的是,在同一部件中,对象名应唯一。

下段程序代码用于获取对象标识,其中part_tag为对象所在部件的部件标识,obj_name为对象名,obj_tag返回约束对象的标识。

void UG_OPEN_ask_obj_tag_by_name(tag_t part_tag, char *obj_name, tag_t *obj_tag){tag_t work_part, object_tag = NULL_TAG;?work_part = UF_ASSEM_ask_work_part();if(part_tag != NULL_TAG){UF_ASSEM_set_work_part(part_tag);UF_OBJ_cycle_by_name (obj_name, &object_tag);?if (object_tag != NULL_TAG)*obj_tag = object_tag;else*obj_tag = NULL_TAG;}else{*obj_tag = NULL_TAG;}UF_ASSEM_set_work_part(work_part);}2.4装配约束关系的建立建立组件间的装配约束的步骤为:(1) 定义装配约束,即填充结构UF_ASSEM_constraint_s;(2)利用函数UF_ASSEM_solve_mc求解约束;(3) 利用函数UF_ASSEM_apply_mc_data将约束应用到装配体上;(4) 利用函数UF_MODl_update更新模型,以反映模型变化。

下段程序代码用于两组件间的装配约束关系的建立,其中, from_part_ins 为主动组件实例标识,from_obj_tag为主动组件中的对象标识,from_part_occ为主动组件的事例标识,to_obj_tag为从动组件的对象标识,to_part_occ为从动组件的事例标识,mate_type为装配类型。

void UG_OPEN_atuo_mate_by_datum(tag_t from_part_ins,tag_t*from_obj_tag,tag_t from_part_occ,tag_t *to_obj_tag,tag_t to_part_occ,char **mate_type ){UF_ASSEM_mating_condition_t? ftf;UF_ASSEM_mc_status_t? status;UF_ASSEM_mc_structure_state_t struct_status;UF_ASSEM_dof_t? dof;double transform[4][4];int ret,i;UF_ASSEM_init_mc (&ftf);ftf.mated_object = from_part_ins; = NULL;er_name = false;for(i=0; i<3; i++){ftf.constraints.from_status = UF_ASSEM_ok;ftf.constraints.to_status = UF_ASSEM_ok;if(strcmp(strlwr(mate_type),"m") == 0)ftf.constraints.mate_type = UF_ASSEM_v16_mate;elseftf.constraints.mate_type = UF_ASSEM_v16_align ;ftf.constraints.from_type = UF_ASSEM_datum_plane;ftf.constraints.to_type = UF_ASSEM_datum_plane;ftf.constraints.from = from_obj_tag;ftf.constraints.from_part_occ = from_part_occ;ftf.constraints.to = to_obj_tag;ftf.constraints.to_part_occ = to_part_occ;ftf.constraints.offset = NULL_TAG; = NULL;er_name = false;}ftf.num_constraints = 3;ftf.suppressed = false;ret=UF_ASSEM_solve_mc(&ftf, &status, &dof, transform);if(ret == 0 || status == UF_ASSEM_mc_solved){UF_ASSEM_apply_mc_data(&ftf, &struct_status, &status);if(struct_status == UF_ASSEM_structure_ok && status == UF_ASSEM_mc_solved) {UF_DISP_refresh();UF_MODL_update();}}}。

相关文档
最新文档