模具技术 软件教程 机床技术 塑料技术 刀具技术 五金技术 工业润滑油 我的商务助手

最 新 资 讯

热 门 资 讯

您现在的位置: 中华模具网 >> 软件教程 >> 工业设计 >> 教程正文
站内文章搜索:

从“Hello World”开始学Pro/Engineer二次开发

作者:中华模具…    教程来源:不详    点击数:    更新时间:2007-11-28
       如同各种开发语言的学习一样,我们也从“ Hello World ”开始 Pro/Engineer 的二次开发的学习。通过这个小程序我们将对基于 Pro/TOOLKIT 的 Pro/Engineer 二次开发有一个感性的认识,同时熟悉基于 Pro/TOOLKIT 的 Pro/Engineer 二次开发的开发流程。该程序的主要功能是在 Pro/Engineer 的当前窗口中显示“ Hello World ”欢迎信息。在开始学习之前要说一下,本系列主要是以 C 语言开发为主,所以我们假设您有一定的 C 语言基础了。 

一、 系统要求和软件安装 

Pro/TOOLKIT 是 Pro/Engineer 系统的客户化开发工具包,即应用程序接口( API )。它提供了大量的 C 语言库函数,能够使外部应用程序(客户应用程序)安全有效地访问 Pro/Engineer 的数据库和应用程序。通过 C 语言编程及应用程序与 Pro/Engineer 系统的无缝集成,客户和第三方能够在 Pro/Engineer 系统中添加所需地功能。 

想要利用 Pro/TOOLKIT 进行 Pro/Engineer 二次开发,首先必须正确安装 Pro/TOOLKIT ,所以下面先介绍如何安装 Pro/TOOLKIT ,然后再介绍如何测试 Pro/TOOLKIT 是否已经安装成功。 

1. 1 Pro/TOOLKIT 的安装 

安装 Pro/Engineer 的时候,在选择安装组件步骤,打开组件 API Toolkits ,选中 Pro/TOOLKIT 选项,Pro/TOOLKIT 就会随着 Pro/Engineer 一起安装在用户的机器上。 

1 . 2 测试 Pro/TOOLKIT 

当安装完 Pro/TOOLKIT 后,应该马上通过编译、连接和运行一个简单的 Pro/TOOLKIT 程序来检验 Pro/TOOLKIT 是否安装成功,以免给后面的开发工作带来不必要的麻烦。 

Pro/TOOLKIT 软件包提供了一个简单的测试程序 pt_install_test, 下面通过此程序叙述测试过程。 

1. 编译和连接 

根据 Pro/TOOLKIT 提供的 Makefile 文件“ make_install ”进行编译和连接。此文件位于 <tk_loadpoint> ( Pro/Engineer 的安装目录) \protoolkit\protk_appls\ 目录下。 

有两种编译方法,一种方法是采用 MS-DOS 方式,利用 MS-DOS 方式进行编译步骤如下: 

(1) 将 <tk_loadpoint>\protoolkit\<machine>\obj 目录下的 make_install 文件拷贝至一个新的目录下,假设拷贝至 D:\test 目录下。 

(2) 用写字板打开 make_install 文件,修改下列区域的语句: 

# Pro/Toolkit Source & Machine Loadpoint (EXTERNAL USE_DEFAULT) 

PROTOOL_SRC = ../.. 

PROTOOL_SYS = $(PROTOOL_SRC)/$(PRO_MACHINE_TYPE) 

将 PROTOOL_SRC 改为本机 Pro/TOOLKIT 的安装路径,例如: 

PROTOOL_SRC = D:\PTC\proewildfire\protoolkit 

修改后保存文件。 

(3) 打开 MS_DOS 命令提示符,设置 MS_DOS 状态下的编译环境为运行 VC 6.0 的 vcvars32.bat 程序。 

(4) 在 MS_DOS 命令提示符中输入以下语句: 

nmake –f make_install 

就开始根据 make_install 文件进行编译、连接,最后生成可执行文件 pt_install_test.exe 。 

另一种编译方法是在 VC 环境中进行编译,首先将文件 make_install 改名为 make_install.mak ,然后利用 VC 开发环境打开此文件,生成 VC 工程项目文件,然后执行 Build 命令编译连接,最后生成一名为 pt_install_test.exe 的文件。 

两种方法最后生成的 pt_install_test.exe 文件完全一样,只是这两种方法的调试环境不同,一般推荐采用 VC 开发环境作为调试方法,主要是因为在 VC 调试环境下可以反复修改源程序。 

2 . 注册 

在此工作目录下,建立一个注册文件 protk.dat 文件。注册文件是一个专门用来告知 Pro/ENGINEER 系统应用程序相关信息的文件,以便 Pro/ENGINEER 系统能够识别并执行我们的 Pro/TOOLKIT 应用程序。 

此 protk.dat 文件的内容如下: 

name install_test 

exec_file D:\test\pt_install_test.exe 

text_dir D:\PTC\proewildfire\protoolkit\protk_appls\ 

pt_install_test\text 

revision 24 

end 

3 . 程序的执行 

以包含上面的 protk.dat 文件的目录为启动目录启动 Pro/ENGINEER 系统, Pro/ENGINEER 将启动应用程序 pt_install_test 。 当该程序正确执行时,在 Pro/ENGINEER 系统的 File 菜单下会增添一个新的命令 -Install Test。 

当用户单击此命令时,就会在 Pro/ENGINEER 窗口中弹出一个对话框,在该对话框中显示出“ The Pro/TOOLKIT Installation Test succeeded ”的信息。 

4 . 以 DLL 方式重新测试此程序 

以 DLL 方式编译和连接此应用程序, make_install 文件无需修改,只是在 MS-DOS 命令提示符中输入的是: 

nmake –f make_install dll 

完成编译和连接后,会生成一动态连接库文件 pt_install_test.dll 。 

在注册此应用程序时,需要对 protk.dat 文件进行如下修改: 

name install_test 

startup dll 

exec_file D:\test\pt_install_test.dll 

text_dir D:\PTC\proewildfire\protoolkit\protk_appls\pt_install_test\text\ 

revision 24 

end 

所做的修改是在此文件的第二行加入了一句“ startup dll ”,表示此程序以 dll 方式启动。 

程序注册后,在包含 protk.dat 的目录下启动 Pro/ENGINEER ,程序执行结果同 1.2.2 节的第 3 小节中的结果完全一样。 

二、 “ Hello World ”的编写与编译 

2. 1 编写源文件 

源文件包括资源文件和程序源文件:资源文件包括菜单资源文件、窗口信息资源文件、对话框资源文件(分别用来完成创建和修改 Pro/ENGINEER 菜单、窗口信息和对话框等功能)等;程序源文件指我们所要编写的 C 语言程序,它是整个 Pro/TOOLKIT 程序开发的核心部分。 

“ Hello World ”程序非常简单,其功能只是在 Pro/ENGINEER 窗口内显示欢迎信息,没有对菜单资源等进行的修改,所以此程序没有资源文件。该程序的程序源代码如下: 

/* hello_world.c */ 

// 头文件包含 

#include "ProToolkit.h" 

#include "ProGraphics.h" 

/* 函数: int user_initialize */ 

/* 功能:用户初始化函数 */ 

int user_initialize(int argc, char *argv[]) 



// 函数声明 

int hello_function(); 

// 调用函数 hello_function 

hello_function(); 

return (0); 



/* 函数: user_terminate */ 

/* 功能:用户结束中断函数 */ 

void user_terminate() 



printf("Pro/Toolkit application terminated successfully\n"); 

return ; 



/* 函数: hello_function */ 

/* 功能:显示出“ Hello World ”欢迎信息 */ 

int hello_function() 



wchar_t wtext[64]; 

double pt[3]; 

pt[0] = 150.0; 

pt[1] = 375.0; 

/* 设置变量 wtext 内容为“ Hello World ” */ 

ProStringToWstring(wtext, "Hello World"); 

/* 显示出“ Hello World ”信息 */ 

ProGraphicsTextDisplay(pt, wtext); 

return (0); 



这个程序是非常简单的,但从中可以看出 Pro/TOOLKIT 程序的基本结构。整个程序由文件包含部分、用户初始化函数 user_initialize() 和用户结束中断函数 user_terminate() 组成。关于用户初始化函数 user_initialize() 和用户结束中断函数 user_terminate() 的作用以及具体用法,我将会在后续的文章中进行介绍。 

2 . 2 程序的编译和连接 

为了编译连接所编制的程序代码,一般需要制作 Makefile 工程文件,可以根据 Pro/TOOLKIT 自带的 Makefile 修改。该文件主要指定库文件、头文件、源文件的位置及要生成的可执行文件和动态连接库名称等。也就是说,此文件是用来说明如何进行应用程序编译和连接的,当然也可以在 VC++6.0 环境中指定上述各种项目。 

“ Hello World ”程序的 Makefile 文件 make_hello 内容如下: 
// 文件开始 

# File Name // 定义 make 文件名称 

MAKEFILENAME = make_hello 

# Machine Type // 定义机器类型 

PRO_MACHINE_TYPE = i486_nt 

# Executable names // 定义生成的执行文件 

EXE = hello.exe 

EXE_DLL = hello.dll 

# Pro/Toolkit Source & Machine Loadpoint (EXTERNAL USE - DEFAULT) // 定义 # Pro/Toolkit 安装根目录 

PTC_DIR = D:\PTC\proeWildfire 

PROTOOL_SRC = $(PTC_DIR)/protoolkit 

PROTOOL_SYS = $(PROTOOL_SRC)/$(PRO_MACHINE_TYPE) 

PRODEV_SRC = $(PTC_DIR)/prodevelop 

PRODEV_SYS = $(PRODEV_SRC)/$(PRO_MACHINE_TYPE) 

# Pro/Toolkit Source & Machine Loadpoint (PTC INTERNAL USE) 

#PROTOOL_SRC = $(PTCSRC)/protoolkit 

#PROTOOL_SYS = $(PTCSYS) 

#PRODEV_SRC = $(PTCSRC)/prodevelop 

#PRODEV_SYS = $(PTCSYS) 

# Include File Paths 

INCS = -I. -I$(PROTOOL_SRC)/protk_appls/includes -I$(PROTOOL_SRC)/includes \ 

-I$(PRODEV_SRC)/includes 

# Compiler Flags // 定义编译特征值 

CC = cl 

MACH = -DPRO_MACHINE=29 -DPRO_OS=4 

CCFLAGS = -Dhypot=_hypot -DMSB_LEFT -Dfar=ptc_far -Dhuge=p_huge -Dnear=p_near -c -W2 -G4 -Za -D_X86_=1 -D_WSTDIO_DEFINED 

CFLAGS = $(CCFLAGS) $(INCS) $(MACH) 

# Libraries // 定义库文件路径 

PTCLIBS = $(PRODEV_SYS)/obj/prodevelop.lib $(PROTOOL_SYS)/obj/protoolkit.lib 

PTCLIBS_DLL = $(PRODEV_SYS)/obj/prodev_dll.lib $(PROTOOL_SYS)/obj/protk_dll.lib 

LIBS = libc.lib kernel32.lib user32.lib wsock32.lib advapi32.lib mpr.lib winspool.lib 

# Object files // 定义目标文件 

OBJS = hello.obj 

# Linker // 编译器 

LINK = link 

$(EXE) : $(OBJS) $(PTCLIBS) 

@echo Start at `date` 

@echo PROTOOL_SRC = $(PROTOOL_SRC) 

@echo PROTOOL_SYS = $(PROTOOL_SYS) 

$(LINK) /subsystem:console -out:$(EXE) /debug:none /debugtype:coff /machine:i386 @<<longline.list 

$(OBJS) $(PTCLIBS) $(LIBS) 

<< 

@echo Finished at `date` 

del $(OBJS) 

# Dll target // 定义 dll 文件 

dll: $(EXE_DLL) 

$(EXE_DLL) : $(OBJS) $(PTCLIBS_DLL) 

@echo Start at `date` 

@echo PROTOOL_SRC = $(PROTOOL_SRC) 

@echo PROTOOL_SYS = $(PROTOOL_SYS) 

$(LINK) /subsystem:console -out:$(EXE_DLL) /debug:none /debugtype:coff /machine:i386 /dll @<<longline.list 

$(OBJS) $(PTCLIBS_DLL) $(LIBS) 

<< 

@echo Finished at `date` 

del $(OBJS) 

# object dependencies // 定义目标文件依附关系 

PROTK_APPLS = D:\protoolkit-work\hello_word 

hello.obj: $(PROTK_APPLS)/hello.c 

$(CC) $(CFLAGS) $(PROTK_APPLS)/hello.c 

clean : 

del $(OBJS) 

del $(EXE) 

nmake -f $(MAKEFILENAME) 

clean_dll : 

del $(OBJS) 

del $(EXE_DLL) 

nmake -f $(MAKEFILENAME) dll 

// 文件结束 

有关 make 文件的格式及改写也将在以后的文章中给于详细的介绍。修改完成后将此 make_hello 文件改名为 make_hello.mak ,打开 VC++6.0 的 File 主菜单,单击 Open Workspace 按钮,在打开的 Open Workspace 对话框中将文件类型改为 Makefiles(mak) ,打开文件 make_hello.mak 。 VC++6.0 就会根据 make_hello.mak 文件生成一个工程文件,编译连接该工程,生成 hello.dll 文件。 

2 . 3 应用程序的注册 

要使应用程序能够集成到 Pro/ENGINEER 系统中运行,必须制作一个扩展名为 .dat 的注册文件,用该文件进行应用程序的注册。 

“ Hello World ”程序的注册文件为 protk.dat ,假设放在 Pro/ENGINEER 启动目录下,文件内容如下: 

name hello 

startup dll 

exec_file D:\ work\hello \hello.dll 

text_dir text 

allow_stop true 

revision 24 

end 

在含有 protk.dat 文件的目录下启动 Pro/ENGINEER ,“ Hello World ”应用程序会自动执行,执行结果为在 Pro/ENGINEER 图形窗口内显示出“ Hello World ”欢迎信息,如图。 

OK !在这里我们已经完成了第一个 Pro/TOOLKIT 应用程序“ Hello World ”的全部开发。怎么样?看着自己的成果是不是有点想飘的感觉,原来一直只是在琢磨 PTC 还有什么,现在我们可以自己来改变它了!千万不要现在就飘呀!以后的会更精彩!
加入网摘:365Key  | 新浪ViVi  | 和讯网摘  | 天极网摘  | POCO网摘 
文章录入:教程录入:mould365    责任编辑:mould365