关闭

UG/OPEN API简明教程

6029人阅读 评论(0) 收藏 举报

 User Functions培训简明教程

 第一章 绪论

1 User Function是什么 定义:在UG中用C语言开发应用程序的一个工具

2 User Function的两种形式 External (执行程序) Internal (动态连接库)

 3 User Function的组成与相互关系 User Function可以分为以下几个部分:  菜单  对话框  应用程序(回调函数)  C语言库函数 (1) 创建与查询几何实体 (2) 分析几何实体 (3) 创建与编辑特征 (4) 创建与编辑表达式 (5) 数据管理 这几部分的关系可以作如下的描述:User Functions的菜单和对话框是程序与用户交互的工具,从菜单可以起动应用程序,对话框等,在对话框激活控件时,将调用相应的回调函数,回调函数和控件的关系在UIStyler 中定义。应用程序和回调函数用基本的C语言和User Functions的库函数编码。

4 User Functions的执行 User Functions的执行包括四种形式: (1) FileExecute UG/OPENUser Functions 选取该菜单将出现一个文件打开对话框,选取相应用应用程序即可。 (2) Menu ACTION (3) UIStyler 回调函数 (2)和(3)将在后面的章节中作详细描述 (4) 将应用程序COPY到UGII_USER_DIR/startup子目录下,应用程序将在UG启动时自动运行。

 5 User Functions的开发步骤 有关软件工程方面的内容,不是我们要介绍的内容,要讲的是User Functions有关的开发步骤。在下面讲述的内容是以NT下的Visual C++ 5.0和UG15.0为支持环境。具体的开发步骤如。 (1) 建立C源程序 (2) 在Visual C++中建立一个project (a).Create new project FileNew projectWin32 Dynamic-Link Library 此时还要输入project的名称。 (b).配置编译Option Projectsetting C/C++Code generationMultithreaded DLL (c).配置LINK options ProjectsettingLINKObject/Library modules在增加两个库libufun.lib和libinternal.lib (这两个库替换原来的ugraf.lib) (d).配置include path tooloptionsdirectoriesinclude files中增加 c:/ugs150/ugopen (该目录为UG15的安装目录,要根据安装情况定) (e).配置library path tooloptionsdirectorieslibrary files中增加c:/ugs150/ugopen( 该目录为UG15的安装目录。 (f). 增加files projectadd To projectfiles 选择相应的C源文件。 (g).配置Debug Options ProjectsettingsDebug Executable for debug session 输入c:/ugs150/ugii/ugraf.exe ProjectsettingsDebug Working director 输入一任意工作路径 ProjectsettingsDebug program arguments 输入 ogl auto 如果不需要调试程序,(g)可以不作。 以上步骤主要是指不用UIStyper开发应用程序,其程序的执行可以直接用4中所讲述的方法(1)。如果用UIStyler开发应用程序,可以用ApplicationUser Interface Styler设计一个对话框,UG会自动生成C源程序的框架结构,用户可以在程序中增加相应的内容,使应用程序完成不同的工作。有关此类程序的执行一些注意事项参考UGII_USER_DIR环境变量的内容。

6 与User Functions有关的环境变量 UGII_USER_DIR :可以指向文件系统的任意路径。在该环境变量指定的目录中,有三个子目录,即startup、application和udo。在startup子目录下的动态连接库文件(在NT下为*.DLL),菜单定义文件(*.men)将在UG启动时自动运行。而application子目录则是UG在装载自定义菜单时,ACTIONS所指定的menu文件,dlg文件和动态连接库文件的缺省路径,也就是说在menu文件指定的这些文件都要COPY到application子目录下,否则系统会有错误提示。 作业:从UGOPEN子目录中COPY一个C源程序,按上述的步骤建立一个Project,并编译、执行、调试该程序。

第二章 应用程序的界面设计

第一节 MenuScript MenuScript是用户修改,增加和创建新的用户菜单的工具,用它可以对标准的UG_GATEWAY_MAIN_MENUBAR和UG_GATEWAY_VIEW_POPUP菜单进行修改和编辑。下面是一些常用的语句。 CREATE :创建一个新的菜单 EDIT :编辑一个菜单 BUTTON :按钮 CASCADE BUTTON:下拉式按钮 SEPERATION :分隔符 TOGGLE BUTTON:复选按钮 BEFORE 和 AFTER:指明菜单的位置 MODIFY :修改一个菜单 ACTIONS它可以跟以下内内容 STANDARD----它指向标准的UG应用 User-Defined Callback----它指向用户定义的回调函数 UIStyler dialog ---- 它指向一个UIStyler 对话框 GRIP Program File ----- 它指向一具GRIP 程序 EXAMPLE1: VERSION 120 EDIT UG_GATEWAY_MAIN_MENUBAR BEFORE UG_HELP CASCADE_BUTTON LAUNCH_CASCADE LABEL Dialog Launcher END_OF_BEFORE MENU LAUNCH_CASCADE BUTTON DEMO_BTN LABEL Display demo dialog ACTIONS demo END_OF_MENU MENUSCRIPT_FILE_ID PVFKENPPAC EXAMPLE2: VERSION 120 EDIT UG_GATEWAY_MAIN_MENUBAR MODIFY APPLICATION_BUTTON UG_APP_MODELING LIBRARIES ufx_menuscript_ufsta.sl MENU_FILES/APPEND ufx_menuscript_modeling.men END_OF_MODIFY MENUSCRIPT_FILE_ID PPDMERMPAG

第二节 UIstyler 1. UIstyler对话框设计工具 有关对话框设计工具的使用请参考用户手册。 2. UIstyler编程 用UIStyler编辑一个对话框,系统自动生成三个文件,一是C语言源文件的框架,也即给出了每个回调函数的框架,回调函数具体的操作,则需用户自己加入;一是定义函数原型的C头文件(*.h),一个对话框文件(*.dlg)。 两个函数常用的函数:UF_STYLER_ask_value( ……) UF_STYLER_set_value(……) 作业: 用UIStyler设计一个对话框,并用Visual C++工具调试该程序。

第三章 User Function的一些基础操作

1 User Function程序的Format #include void ufusr ( char *param , int *retcode, int param_len ) { int irc; irc = UF_initialize() ; // 在这里加入用户的程序 irc = UF_terminate() ; }

2 文件操作 User Function提供了些进行prt文件处理的函数,可用于prt文件的open, close,new, save, save as, 得到工作零件,设置工作零件,import 、export文件等操作。常用的函数包括 UF_PART_open UF_PART_ask_num_parts UF_PART_save_all UF_PAET_close_all UF_PART_ask_part_name UF_PART_ask_part_tag UF_PART_ask_display_part UF_PART_set_display_part 有关这些函数的使用可参考USER MANUAL。

3 程序message的显示 User Function几乎所有的函数都返回一个INT型的数,为0时表明执行正确,非0时可用UF_get_fail_message函数得到出错信息,用UF_UI_set_status将错误显示在状态行,用UF_UI_set_prompt将错误显示在提示行,UF_UI_display_nonmodal_msg函数可以显示一具提示对话框。 4 内存管理 在User Function的一些函数返回值分配了内存,需要程序释放内存(函数说明中标明OF),可用UF_free和UF_free_string_array完成。 5 标准对话框 User Function定义了很多标准的对话框,可进行交互输入,选择等操作,如:uc1616 调用点subfunction对话框输入一个点 UF_UI_select_by_class UF_UI_select_single 除些以外还有大量的函数,可在uf_ui.h中找到。

第四章 装配和建模

1 有关装配的几个概念 Piece Part 零件 Occurrence(part Occurrence and object Occurrence) 事件 Instance 实例 Component part 装配中的一个part可以是零件和子装配 Reference set 实体集,用于简化表示 Displayed Part Work Part 工作零件 Portotype 指向装配中零件的原型 TO FIND GIVEN CALL PART name PART tag UF_PART_ask_part_name() PART tag PART name UF_PART_ask_part_tag() PART OCCUR tag UF_ASSEM_ask_prototype_of_occ() INSTANCE tag UF_ASSEM_ask_parent_of_instance() UF_ASSEM_ask_child_of_instance() ENTITY OCCUR tag 1) UF_ASSEM_ask_part_occurrence() + 2) UF_ASSEM_ask_prototype_of_occ() PART OCCUR tag PART tag UF_ASSEM_ask_occs_of_part() PART OCCUR tag UF_ASSEM_ask_part_occ_children() UF_ASSEM_where_is_part_used() INSTANCE tag UF_ASSEM_ask_part_occs_of_inst() UF_ASSEM_ask_part_occ_of_inst() ENTITY OCCUR tag UF_ASSEM_ask_part_occurrence() INSTANCE tag PART tag UF_ASSEM_cycle_inst_of_part() PART OCCUR tag UF_ASSEM_ask_inst_of_part_occ() INSTANCE name UF_ASSEM_ask_instance_of_name() ENTITY OCCUR tag 1) UF_ASSEM_ask_part_occurrence() + 2) UF_ASSEM_ask_inst_of_part_occ() ENTITY tag ENTITY OCCUR tag UF_ASSEM_ask_prototype_of_occ() ENTITY handle UF_TAG_ask_tag_of_handle() ENTITY OCCUR tag PART OCCUR tag UF_ASSEM_cycle_ents_in_part_occ() ENTITY tag UF_ASSEM_find_occurrence() UF_ASSEM_ask_occs_of_entity() ENTITY handle UF_TAG_ask_tag_of_handle() ENTITY handle ENTITY tag UF_TAG_ask_handle_of_tag() Misc UF_ASSEM_is_occurrence() UF_ASSEM_ask_transform_of_occ() UF_ASSEM_part_is_descendant() UF_ASSEM_count_ents_in_part_occ()

2 有关装配和建模的函数说明表参阅相关的USER MANUAL 3 作业 part1和part2都是平板零件,part3是part1和part2的装配,现要求在part3中选择part1或part2或part1和part2,并用一个足够长的圆柱体在选中的part1和part2上打一个通孔。

程序的过程如下:

 1 UF_initialize() ;

2 用 UF_ASSEM_ask_work_part()和 UF_ASSEM_ask_root_part_occ( old_tag )确定当前工作零件是否为装配文件。

3 用UF_UI_select_single(…….)选择零件;opts的scope设为 UF_UI_SEL_SCOPE_ANY_IN_ASSEMBLY。

 4 用uc1608输入直径、X和Y值; 5 用UF_MODL_create_cyl1()创建一个圆柱体,用 UF_MODL_ask_feat_body()得到feature的ID;

 6 用UF_ASSEM_ask_part_occurrence( )得到part的原型。 用UF_ASSEM_ask_prototype_of_occ( )求part的tag和物体的tag; 7 用UF_MODL_operations求交;

8 用UF_terminate() 结束; 第五章 尺寸 尺寸可以在drawing中生成,也可以在model view生成,在关draft的尺寸标注,首先是几个参数设置和获取的函数。 UF_DRF_ask_object_preferences UF_DRF_ask_preferences UF_DRF_set_object_preferences UF_DRF_set_preferences 常用的函数包括: UF_DRF_create_horizontal_dim UF_DRF_init_object_structure UF_DRF_create_vertical_dim Uc5540 Create a Note UF_DRF_create_label 有关函数的说明请参考用户手册。

原帖

http://www.simwe.com/article/art/2/2003-02-15/20030215213609.html

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:891410次
    • 积分:13010
    • 等级:
    • 排名:第1110名
    • 原创:257篇
    • 转载:184篇
    • 译文:0篇
    • 评论:297条
    关于我
    Dr. Ing. 白途思(Begtostudy)
    微信号:Begtostudy
    QQ:370566617

    Email:
    begtostudy@gmail.com

    点击这里给我发邮件
    工作单位:上海航天技术研究院
    身份:上海交通大学 工学博士 校内名片
    (不经常上饮水思源BBS)

    专业领域:
    数字化智能设计

    第二技术博客宗旨:
    专业知识和非编程相关技术

    口号:
    科学点亮未来,技术改变世界!

    规范群名片全是博士群 243459837
    企业/研所/政府博士QQ群 85909446
    上海工作博士QQ群 129432610
    理论与数学应用互助QQ群 6314910
    非商业联合开发俱乐部QQ群 106930856