caxa二次开发文档格式.docx
- 文档编号:18364943
- 上传时间:2022-12-15
- 格式:DOCX
- 页数:164
- 大小:335.12KB
caxa二次开发文档格式.docx
《caxa二次开发文档格式.docx》由会员分享,可在线阅读,更多相关《caxa二次开发文档格式.docx(164页珍藏版)》请在冰豆网上搜索。
4.1.2点17
4.1.3矩形边界17
4.1.4结点17
4.1.5选择集18
4.2常量定义18
4.2.1函数返回值18
4.2.2线型定义18
4.2.3颜色定义19
4.2.4层定义20
4.2.5尺寸类型定义20
4.2.6其他定义20
4.3公共变量21
第5章应用程序接口(API)函数概述22
5.1交互实现22
5.1.1立即菜单22
5.1.2提示信息22
5.1.3交互取值22
5.2系统操作23
5.2.1文件存取23
5.2.2绘图状态设置23
5.2.3界面定制及消息响应23
5.2.4Undo/Redo操作24
5.2.5用户窗口中预显图形24
5.3实体部分24
5.3.1实体操作24
5.3.2基本实体生成24
5.3.3块操作25
5.3.4尺寸标注25
5.3.5选择集操作25
5.4数据管理26
5.4.1得到属性数据26
5.4.2设置、修改属性数据26
5.4.3得到结点几何数据26
5.4.4设置、修改结点的几何数据27
5.4.5扩充数据管理27
5.5几何运算27
5.6图形编辑28
第6章应用程序接口(API)函数详解29
6.1交互实现29
6.1.1立即菜单29
6.1.2提示信息32
6.1.3交互取值32
6.2系统操作34
6.2.1文件存取34
6.2.2绘图状态设置35
6.2.3界面定制及消息响应39
6.2.4Undo/Redo操作43
6.2.5用户窗口中预显图形44
6.3实体部分45
6.3.1实体操作45
6.3.2基本实体生成48
6.3.3块操作52
6.3.4尺寸标注54
6.3.5选择集操作55
6.4数据管理60
6.4.1得到属性数据60
6.4.2设置、修改属性数据61
6.4.3得到结点几何数据62
6.4.4设置、修改结点的几何数据65
6.4.5扩充数据管理68
6.5几何运算69
6.6图形编辑70
第7章实用编程技术74
7.1使用AFX_MANAGE_STATE宏74
7.2界面定制74
7.2.1菜单74
7.2.2对话框76
7.2.3立即菜单79
7.2.4键盘命令81
7.3消息响应82
7.4消息循环83
7.5面向实体操作的编程86
7.5.1生成实体86
7.5.2拾取实体86
7.5.3数据管理87
7.5.4实体扩充数据管理87
7.5.5选择集操作89
7.5.6系统图形数据库91
7.5.7图形编辑93
7.6构件库的使用与开发93
7.6.1构件库的使用93
7.6.2构件库的开发94
第1章绪论
1.1概述
CAXA电子图板是功能齐全的通用计算机辅助设计(CAD)软件。
它以交互图形方式,对几何模型进行实时的构造、编辑和修改。
CAXA电子图板提供形象化的设计手段,帮助设计人员发挥创造性,提高工作效率,缩短新产品的设计周期,把设计人员从繁重的设计绘图工作中解脱出来,并有助于促进产品设计的标准化、系列化、通用化,使得整个设计规范化。
CAXA电子图板适合于所有需要二维绘图的场合。
利用它可以进行零件图设计、装配图设计、零件图组装装配图、装配图拆画零件图、工艺图表设计、平面包装设计、电气图纸设计等。
它已经在机械、电子、航空、航天、汽车、船舶、轻工、纺织、建筑及工程建设等领域得到广泛的应用。
随着CAXA电子图板的不断完善,它将是设计工作中不可缺少的工具。
虽然CAXA电子图板的通用性很强,使用范围非常广,但是每个设计工程师或绘图员有自己的工作风格,大多数企业也有自己的技术规格和标准。
而且用户所需要的不仅仅是一块电子的“绘图板”,除了计算机辅助绘图功能外,更重要的是实现辅助设计的功能。
因此电子图板不可能满足每一个用户的需求。
但是电子图板拥有“开放的体系结构”,允许用户或第三方厂家根据自己的需求,通过在电子图板开发平台基础之上进行二次开发,扩充电子图板的功能,实现用户化、专业化,使电子图板成为既能通用于各个领域,有适用于特殊专业的软件。
1.2应用程序接口
用户开发的应用程序实质上是一种动态连接库,加载后进入内存,卸载后又释放掉所占用的系统资源,如果关闭电子图板,所有未卸载的应用程序将自动被卸载。
在应用程序的整个生命周期内(即从被加载开始到被释放掉为止),与电子图板及其它应用程序是无缝集成在一起的,成为电子图板的一个功能模块。
在CAXA电子图板中,使用“应用程序管理器”作为电子图板与应用程序之间的接口,对用户开发的应用程序进行统一管理。
通过应用程序管理器可以实现对应用程序的进程管理和自动加载管理,通过进程管理可对应用程序进行加载和卸载操作,通过自动加载管理可对自动加载的应用程序列表进行编辑,使在列表中列出的应用程序在电子图板启动时就同时加载进来。
有关应用程序管理器的内容在第二章详细介绍。
1.3应用程序开发环境
CAXA电子图板采用C/C++作为二次开发语言,选用MicroSoftVisualC++6.0(简称为VC++6.0)作为开发环境,编译、连接以及调试均在VC++6.0中进行。
用户在安装完VC++6.0后,需安装电子图板二次开发平台EBADS(ElectronicBoardApplicationDevelopSystem),在EBADS中提供了二次开发过程中所用到的所有资源。
在二次开发过程中可以使用的函数包括:
MFC提供的类及库函数、运行库函数、WindowsAPI函数、OPENGL库函数、电子图板二次开发平台EBADS提供的API函数等等。
其中EBADS提供的API函数包括交互实现、系统操作、实体部分、数据管理、几何运算、图形编辑几大部分,可实现几乎所有有关图形的操作。
这部分内容将在第六章中详细介绍,第五章中的内容主要是对所有API函数功能的快速察看。
1.4进行二次开发的基本要求
用户在进行二次开发之前,应对以下几方面知识有所了解:
由于电子图板的二次开发是以C/C++作为开发语言,因此首先用户应熟悉C/C++语言。
用户应对电子图板的功能和使用方法比较熟悉,这也是一项基本要求。
由于电子图板采用VC++6.0作为开发环境,因此用户应对VC++6.0的基本使用方法有所了解,比如如何生成工程、如何利用资源编辑器进行可视化编辑资源、如何利用调试器调试程序以及ClassWizard的使用等等,如果能熟练掌握VC++6.0的使用方法,将大大提高工作的效率,开发出高质量的应用程序。
熟悉EBADS提供的API函数及电子图板特有的消息响应及流程控制方法。
以上这些要求除了掌握VC++6.0开发环境稍有难度以外,其余三项均比较简单,仅需简单的学习和实践就可以熟练掌握。
如果用户已有一定的编程经验,将很快就能开发出高水平的应用程序。
1.5主要特点
1.执行速度快、运行效率高
电子图板二次开发应用程序(eba)的实质为标准的Windows动态连接库(DLL)程序,被电子图板加载后,成为电子图板进程的一部分,它们之间采用消息传递机制直接进行进程内通讯,而不需要诸如LISP语言等作为中介,因此执行速度非常快,运行效率很高。
简而言之,当用户开发的应用模块加载后,就立即和电子图板无缝集成在一起,运行和使用与电子图板自身的功能模块(如绘制直线等)没有差别。
2.交互手段灵活多样,界面定制方便实用
在电子图板二次开发应用程序中,既可以使用Windows标准的交互方式,如菜单、工具条、对话框、快捷键等等,也可以使用电子图板所特有的交互方式,如立即菜单、键盘命令等等。
利用资源编辑器进行可视化编辑,利用EBADS提供的简单的API函数进行加载、卸载和显示,就可以生成各种交互界面。
EBADS提供的这种可视化编辑方法各用户提供了极大的方便,使用户不必忙于界面的定制,而把大部分精力投入到对流程的控制及功能的实现上。
3.功能强大
首先二次开发是在VC++6.0环境中进行的,VC++6.0是迄今为止功能最强大的开发工具之一,利用它可以开发出各种功能的应用程序。
其次在编制程序过程中,可使用多种库函数,EBADS本身也提供了功能强大的各类函数,覆盖了编程所需的各个方面,如交互实现、系统操作、实体部分、数据管理、几何运算、图形编辑等等。
此外,还可以在开发过程中利用ActiveX、数据库等技术已满足各种开发需求。
因此,在电子图板二次开发平台上可以开发出功能强大的应用程序。
4.编程方便
EBADS提供了应用程序模板,与VC++6.0所提供的AppWizard的功能完全相同,可直接生成应用程序的框架,并在需要用户添加代码的地方给出提示,用户只需在此框架基础之上添加自己的功能实现代码即可。
在编程方式上采用面向图形实体对象(如一根线、一个圆等等)的方法,生成、修改、编辑和计算均对实体对象操作,与实际绘图的过程类似,更符合一般编程的习惯;
编程过程中不需要记忆DXF组码和管道命令,所用到的API函数也比较容易记忆,因此用户编程更方便。
1.6二次开发新版本的改进
1.6.1开发环境
由于开发工具的更新比较快,因此采用更加先进、功能更强大的VC++6.0作为编程开发环境,不再支持VC++5.0。
1.6.2应用程序管理器
应用程序管理器的界面和EB2000的应用程序管理器已经完全不一样了,详细的使用方法您可以参照第2章的介绍。
1.6.3应用程序开发向导
应用程序开发向导以及自动生成的程序框架都进行了改变,使框架更加简洁,详细内容请参照第三章的内容。
1.6.4构件库
在普通二次开发应用程序的基础之上稍加改动就可以是将二次开发模块变成一个构件库模块,详细内容参见第8章的介绍。
1.6.5API函数
1.新增函数
为了满足开发的需要,新增了一些API函数,这些函数有:
EbDeleteMenu(CMenu)
在主菜单末尾删除菜单
ebAppendMenu(CMenu)
在主菜单末尾添加子菜单
ebChgRGBToIndex
将RGB颜色值转换为最接近的索引值
ebGetSnapMode
得到点的捕捉方式
ebGetGridDistance
得到栅格点间距
ebGetGridShow
是否显示栅格点
ebGetPaperScale
得到图纸比例
ebGetPaperDirect
得到图纸方向
ebGetPaperSize
得到图纸大小
ebGetPaperSizeByUser
得到用户定制得图纸大小
ebGetCurrentFileName
得到当前的文件名
ebGetMainFrame
得到主窗口指针
ebDeleteSelect
删除选择集中元素,并释放元素所占用的内存
ebGetLoopArea
计算一个环所包围的面积
2.废除函数
由于采用了电子图板采用了新的界面风格,因此在新的二次开发函数库中,废除了一些与老界面相关的函数,这些函数在下面列出。
ebAppendMenu(UINT)
在主菜单的末尾添加一组菜单
ebDeleteMenu(UINT)
将用户在主菜单的末尾添加的一组菜单删除掉
ebAddButton
向右侧菜单条中添加一个或多个图形按钮
ebDelButton
删除掉用户向右侧菜单条中添加的一个或多个图形按钮
ebAddToolBar
向右侧菜单条中添加一个工具条菜单
ebDelToolBar
删除掉用户向右侧菜单条中添加的工具条菜单
ebShowToolBar
在右侧菜单条中显示工具条菜单
1.7与老版本二次开发应用程序的兼容性
由于开发环境已经从VC++5改为VC++6,因此使用Eb2000中的二次开发平台编译生成的二次开发应用程序(eba)在EBv2版本中可能加载不上或者运行不正常,因此您必须将原来的程序在VC++6中重新编译链接一遍,步骤如下:
首先,在VC++6中打开VC++5版本的二次开发项目,将项目从VC++5的格式转换为VC++6格式,这个工作VC++6会在打开项目文件时自动实现。
接下来在VC++6的“Build”菜单中单击“RebuildAll”命令,将整个工程重新编译链接一遍,就可以在EBv2版本中加载运行了。
要注意的一点是,由于在EBv2版本中使用了新界面,因此Eb2000版本二次开发库中的一些用于界面定制的函数,比如ebAddButton、ebDelButton、ebAddToolBar、ebDelToolBar、ebShowToolBar等函数在新版本中已经不再使用,但是在您的程序中如果使用了这些函数也不会影响编译、链接,只不过没有任何运行效果。
第2章应用程序管理器
在CAXA电子图板中,使用应用程序管理器对用户开发的应用程序进行统一管理,通过应用程序管理器可以实现对应用程序的进程管理和自动加载管理,通过进程管理可对应用程序进行加载和卸载操作,通过自动加载管理可对自动加载的应用程序列表进行编辑,在EBv2版本中采用了新的应用程序管理器。
2.1运行应用程序管理器
图21应用程序管理器
应用程序管理器用来管理电子图板二次开发应用程序的,在“文件”菜单中选择“应用程序管理器”命令,可以弹出如图2-1所示的对话框。
在“应用程序路径”列表框中列出了您所选择的二次开发应用程序所在的路径,在“应用程序列表”中列出了所有选中路径中所包含的二次开发应用程序,通过应用程序管理器您可以实现以下操作:
添加应用程序路径
删除应用程序路径
修改应用程序路径
加载和卸载二次开发程序
设置自动加载应用程序
2.2添加应用程序路径
在如图2-1所示的对话框中单击
按钮或按“Insert”键,会弹出如图2-2所示的对话框。
图22查找应用程序所在目录
在对话框中可以选择所需要的路径,单击“确定”按钮后,会在“应用程序路径”列表框中添加上所选的路径,而且在下面的“应用程序列表”中会列出该路径中的所有电子图板二次开发应用程序,您可以选择进行加载。
2.3删除应用程序路径
在“应用程序路径”列表框中选择要删除的路径,然后单击
按钮或按“Delete”键,如果该路径中没有二次开发应用程序被加载,则所选的路径就可以被删除掉;
如果在该路径中有应用程序被加载,请卸载后再删除路径。
2.4修改应用程序路径
在“应用程序路径”列表框中,使用鼠标左键双击需要修改的路径,则会在相同位置上出现一个编辑框,在编辑框中可以输入新的路径,输入完成以后按回车确认,如果修改前的路径中有应用程序被加载,则修改操作会失败,请卸载后再修改路径。
2.5加载和卸载二次开发程序
在“应用程序列表”中列出了所有的可供加载的二次开发应用程序,每一个应用程序对应着一个核选框,选中以后表示加载,否则为不加载,单击“确定”按钮以后,应用程序管理器会根据选择对应用程序进行相应的加载和卸载处理。
2.6设置自动加载应用程序
如果选中“在下次启动CAXA-EB时自动加载列表框中选中的应用程序”选项,则当前加载的所有列表框在下次电子图板启动时会自动加载,如果不选择这个选项,则下次电子图板启动是不会加载任何二次开发应用程序。
第3章二次开发环境及编程基础
CAXA电子图板的二次开发是在电子图板开发平台基础之上,使用C/C++作为二次开发语言,编译、连接和调试均在VisualC++6.0环境下进行,添加菜单、对话框、快捷键等资源均使用可视化编辑。
用户在进行二次开发过程中,可使用的库函数包括:
WindowsAPI函数、OPENGL库函数、VC++提供的MFC类、运行库函数以及电子图板提供的API函数。
在这一章里,将介绍电子图板提供的二次开发环境及一些基本编程知识。
3.1二次开发平台的安装与设置
CAXA电子图板提供的二次开发是在VisualC++6.0环境中进行的,因此在安装二次开发平台之前应先安装VisualC++6.0。
假定用户将电子图板安装在C:
\EB路径下,VC++安装在C:
\MicrosoftVisualStudio\VC98路径下,则应做以下两步工作:
1.将C:
\EB\EBADS\Wizard目录下的文件ebadw.awx拷贝到C:
\MicrosoftVisualStudio\Common\MSDev98\Template目录下
2.启动VC++,在Tools菜单中单击Options菜单,在弹出对话框中选取Directories标签,在Includefiles中加入在二次开发编译过程中所需要包含的头文件所在的路径C:
\EB\EBADS\INCLUDE,在Libraryfiles中加入在连接过程中需要连接的库所在的路径C:
\EB\EBADS\LIB。
3.2创建第一个二次开发程序
3.2.1创建二次开发工程
图31创建二次开发应用程序项目
二次开发平台安装完成后,就可以我们的第一个二次开发程序了。
首先进入VC6.0开发环境,创建一个新的工程,在“file”下拉菜单中选取“new”菜单,弹出如图3-1所示的的对话框:
图32二次开发应用程序向导
在对话框中选择“Project”标签,在相应的列表框中选择“CAXA电子图板应用程序开发向导”选项,并输入工程的名称和路径,输入完成后,单击“OK”按钮可弹出如图3-2所示的的对话框:
图33二次开发应用程序项目信息
由于二次开发的应用程序实质上也属于一种动态连接库,因此这个对话框与VC++6.0中创建动态连接库的对话框基本一样,这里二次开发应选择第二种动态库类型(即常规动态连接库RegularDLL),这里注意在Eb2000的二次开发模板中选用的是第三种动态库类型,这两种选择的区别是非常大的。
如果用户在二次开发中需要用到自动化或网络编程,可选择Automatin或WindowsSockets属性,如果需要修改工程名称或路径可单击“Back”按钮返回图3-1所示的的对话框进行修改,单击“Finish”按钮可弹出如图3-3所示的对话框:
在对话框中列出了工程中的主要文件,而不是所有文件,用户要将自己的程序实现代码添加到这些文件中。
有VC++创建的其他文件(如资源文件等)在这里没有列出,用户可通过其他有关VC++的参考书来学习。
如果用户确认生成该工程文件,可单击“OK”按钮,这时VC++将会自动生成该工程的程序框架。
3.2.2应用程序框架分析
图34文件结构
使用上一节介绍的方法生成的工程中所包含的文件结构如图3-4所示,StdAfx.h、StdAfx.cpp和stddll.cpp文件均为标准扩展型动态连接库相关文件,其中StdAfx.h、StdAfx.cpp的作用是生成动态连接库的预编译头,stddll.cpp中包含了标准动态连接库的初始化和终止操作代码,对于这三个文件用户一般可不作修改;
first.rc为动态连接库的资源文件,该文件中列出了所有在应用程序中用到的Windows资源,如图标、位图、菜单、字串、对话框、快捷键等等,用户可通过VC++提供的资源编辑器添加、修改和删除自己的资源;
first.def为动态连接库的模块定义文件,在文件中定义了动态连接库的输出信息,如果用户在二次开发的应用程序中提供了一些函数以供其它二次开发的应用程序使用,则应在此文件中输出这些函数;
在ReadMe.txt文件中,简要介绍了应用程序开发模板所生成的每个文件;
FuncDef.h为函数声明头文件,用于声明用户自定义的消息响应函数;
first.cpp为最主要的文件,在文件中可实现应用程序的初始化和终止处理,以及其它用户编制的消息响应函数,文件的内容如下:
#include"
StdAfx.h"
eb_api.h"
//CAXAEBAPI函数
funcdef.h"
//包含用户消息响应函数声明的头文件
resource.h"
FUNTABLEft[]={
//TODO:
添加消息响应函数与对应ID值的对应组并删除下面的NULL
NULL
};
CMDDTABLEpCmd[]={
添加执行消息响应函数的命令名与对应ID值的对应组并删除下面的NULL
NULL
voidSTARTUP()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
AfxGetApp()->
m_pMainWnd=newCFrameWnd;
m_pMainWnd->
m_hWnd=ebGetMainFrame()->
m_hWnd;
for(inti=0;
i<
ELEMENTS(ft);
i++)
ebRegistFunc(&
ft[i]);
for(i=0;
ELEMENTS(pCmd);
ebRegistCmd(&
pCmd[i]);
//TODO:
定制用户界面,例如加载用户自定义的菜单等
添加其他初始化信息
}
voidFINISH()
ebDelFunc(&
ebDelCmd(&
//TODO:
添加应用程序终止时的处理,如删除掉在STARTUP()
//函数中加载的用户自定义菜单
ASSERT(AfxGetMainWnd()!
=NULL);
AfxGetMainWnd()->
m_hWnd=NULL;
deleteAfxGetMainWnd();
//////////////////////////////////////////////////////
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- caxa 二次开发