找回密码 注册 QQ登录
开思网工业级高精度在线3D打印服务

iCAx开思网

CAD/CAM/CAE/设计/模具 高清视频【积分说明】如何快速获得积分?快速3D打印 手板模型CNC加工服务在线3D打印服务,上传模型,自动报价
查看: 24982|回复: 10
打印 上一主题 下一主题

【资料】UG/OPEN API简明教程

[复制链接]
跳转到指定楼层
1
发表于 2002-3-13 22:04:33 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上注册,结交更多同行朋友,交流,分享,学习。

您需要 登录 才可以下载或查看,没有帐号?注册

x
User Functions培训简明教程
一九九九年七月
第一章 绪论
  
1 User Function是什么
定义:在UG中用C语言开发应用程序的一个工具
  
2 User Function的两种形式
External  (执行程序)
Internal (动态连接库)
  
3 User Function的组成与相互关系
User Function可以分为以下几个部分:
[$#61548] 菜单
[$#61548] 对话框
[$#61548] 应用程序(回调函数)
[$#61548] C语言库函数
(1) 创建与查询几何实体
(2) 分析几何实体
(3) 创建与编辑特征
(4) 创建与编辑表达式
(5) 数据管理
     这几部分的关系可以作如下的描述:User Functions的菜单和对话框是程序与用户交互的工具,从菜单可以起动应用程序,对话框等,在对话框激活控件时,将调用相应的回调函数,回调函数和控件的关系在UIStyler 中定义。应用程序和回调函数用基本的C语言和User Functions的库函数编码。
  
4 User Functions的执行
User Functions的执行包括四种形式:
(1) File[$#61664]Execute UG/OPEN[$#61664]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[$#61664]New [$#61664]project[$#61664]Win32 Dynamic-Link Library
此时还要输入project的名称。
(b).配置编译Option
    Project[$#61664]setting [$#61664]C/C++[$#61664]Code generation[$#61664]Multithreaded DLL
(c).配置LINK options
Project[$#61664]setting[$#61664]LINK[$#61664]Object/Library modules在增加两个库libufun.lib和libinternal.lib
(这两个库替换原来的ugraf.lib)
(d).配置include path
    tool[$#61664]options[$#61664]directories[$#61664]include files中增加  c:\ugs150\ugopen (该目录为UG15的安装目录,要根据安装情况定)
(e).配置library path
   tool[$#61664]options[$#61664]directories[$#61664]library files中增加c:\ugs150\ugopen( 该目录为UG15的安装目录。
(f). 增加files
    project[$#61664]add To project[$#61664]files   选择相应的C源文件。
(g).配置Debug Options
Project[$#61664]settings[$#61664]Debug[$#61664] Executable for  debug session
输入c:\ugs150\ugii\ugraf.exe
Project[$#61664]settings[$#61664]Debug[$#61664] Working director
输入一任意工作路径
Project[$#61664]settings[$#61664]Debug[$#61664] program arguments
输入 ogl auto
如果不需要调试程序,(g)可以不作。
     以上步骤主要是指不用UIStyper开发应用程序,其程序的执行可以直接用4中所讲述的方法(1)。如果用UIStyler开发应用程序,可以用Application[$#61664]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 <uf.h>
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
有关函数的说明请参考用户手册。
  
作业:画一个水平和垂直尺寸。可以参考用户手册中的例子。
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 赞一下!赞一下!
11
发表于 2006-9-17 16:16:11 | 只看该作者
best regard
10
发表于 2002-5-22 16:24:43 | 只看该作者
楼上的兄弟门,多贴一些这方面的东西,!谢谢,有空多交流
9
发表于 2002-5-21 23:20:21 | 只看该作者
模板文件应该是*.awx。
我没有涉猎过UG/KF编程,倒是见过ug公司的工程师演示过,一时半会也没弄清楚。
8
发表于 2002-5-19 11:43:40 | 只看该作者
模板文件应该是*.awx吧?
难道说我的UG有问题。
7
发表于 2002-5-17 18:54:13 | 只看该作者
应该是先装VC,后装UG好一些
6
发表于 2002-3-15 09:43:12 | 只看该作者
呵呵,这个我还不知道呢,多谢指点!!
老兄涉猎过UG/KF编程吗?
能不能指点一下UG/KF跟用户接口的方式呀?
还有UG/KF功能有多大程度上的强大?跟UG/Open API想比。
谢谢!!
5
发表于 2002-3-15 08:45:58 | 只看该作者
不错,上面的有些内容成旧了一些。毕竟是97年的东西。
其实如果安装ug后再安装vc,将ugopen目录下的ugopen.awd,ugopen.hlp拷贝到vc的common目录中(包含了大量的*.awd文件的那个目录)
一样可以看到wizard出现。
另外,ug16和ug18的设置有所不同了,ug16下编写的.dll多半是不能运行在ug18下的,解决问题的办法是将library中的libinternal.lib 换成libugopenint.lib,然后再编译链接一次就可以。
4
发表于 2002-3-14 11:19:53 | 只看该作者
呵呵,开开让我如何感谢你呢。
3
发表于 2002-3-14 10:38:09 | 只看该作者
好学的darkhorse ,各方朋友成全一下吧,斑竹加分的干活。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3D打印手板模型快速制作服务,在线报价下单!

QQ 咨询|手机版|联系我们|iCAx开思网  

GMT+8, 2025-1-31 17:45 , Processed in 0.038702 second(s), 13 queries , Gzip On, Redis On.

Powered by Discuz! X3.3

© 2002-2025 www.iCAx.org

快速回复 返回顶部 返回列表