佳工机电网 在线工博会 我的佳工网 手机版 English
关键字  
  选择展区 >>
您的位置: 首页 > CAD/CAM/PDM/PLM展区 > CAD/CAM软件展厅 > 产品库 > CAD软件 > 技术论文 > 正文 产品库 会展 人才 帮助 | 注册 登录  
CAD/CAM软件
 按行业筛选
 按产品筛选
查看本类全部文章
e展厅 产品库 最新动态 技术文章 企业目录 资料下载 视频/样本 反馈/论坛
  技术应用 | 基础知识 | 外刊文摘 | 业内专家 | 文章点评 投稿 发表科技文章 
北京数码大方科技有限公司(CAXA)
北京数码大方科技有限公司(CAXA) (编号 573) http://www.caxa.com
公司介绍 | 产品与服务 | 新闻 | 技术文章 | 联系方式
如何利用API函数实现CAXA电子图板图层快速转换的编程
作者:
欢迎访问e展厅
展厅
1
CAD/CAM软件展厅
CAD软件, CAD/CAM, CAM, 钣金CAD/CAM, CAI, ...
摘 要:介绍了在CAXA电子图板中,使用二次开发平台EBAS提供的API函数实现图素图层转换的编程方法并给出了实例。

引言

CAXA电子图板是功能齐全的通用计算机辅助设计(CAD)软件。它以交互图形方式,对几何模型进行实时的构造、编辑和修改。CAXA电子图板拥有“开放的体系结构”,允许用户或第三方厂家根据自己的需求,通过在电子图板开发平台基础之上进行二次开发,扩充电子图板的功能,实现用户化、专业化,使电子图板成为既能通用于各个领域,有适用于特殊专业的软件。本人通过实践,利用API函数实现了CAXA电子图板图素图层的快速转换,从而更方便的对各图素的图层进行转换,下图作以详细介绍。

1.安装二次开发平台

CAXA电子图板提供的二次开发是在Visual C++ 6.0环境中进行的,因此在安装二次开发平台之前应先安装Visual C++ 6.0。假定用户将电子图板安装在C:\CAXA\CAXAEB路径下,VC++安装在C:\ Microsoft Visual Studio\VC98路径下,则应做以下两步工作:

1). 将C:\CAXA\CAXAEB\Ebads\Wizard目录下的文件 ebadw.awx 拷贝到C:\ Microsoft Visual Studio\Common\MSDev98\Template目录下

2). 启动VC++,在Tools菜单中单击Options菜单,在弹出对话框中选取Directories标签,在Include files中加入在二次开发编译过程中所需要包含的头文件所在的路径C:\EB\EBADS\INCLUDE,在Library files中加入在连接过程中需要连接的库所在的路径 C:\EB\EBADS\LIB。

2.新建二次开发程序

二次开发平台安装完成后,下面我们就开始创建二次开发程序了。首先进入VC 6.0开发环境,创建一个新的工程,在“file”下拉菜单中选取“new”菜单,弹出如图a所示的的对话框:在对话框中选择“Project”标签,在相应的列表框中选择“CAXA EB Application Wizard开发向导”选项,并输入工程的名称(如:EBTC)和路径,输入完成后,单击“OK”按钮可弹出如图b所示的的对话框,接着再点击Finish完成工程的创建。

newmaker.com
图a

newmaker.com
图b
创建二次开发应用程序项目

3.创建菜单资源

在新建的工程里创建菜单资料,在“插入”菜单中选择“资源”在资源对话框中选择“Menu”再点击新建按钮,接着添加菜单项目如图3.a所示

newmaker.com
图3.a

4.添加加载菜单的代码

利用ebAppendMenu(CMenu)函数在主菜单末尾添加子菜单,在EBTC.CPP文件中找到STARTUP()函数在其中加入以下代码:

void WINAPI STARTUP()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
AfxGetApp()->m_pMainWnd=new CFrameWnd;
AfxGetApp()->m_pMainWnd->m_hWnd=ebGetMainFrame()->m_hWnd;
for(int i=0; i ebRegistFunc(&ft[i]);
for(i=0; i ebRegistCmd(&pCmd[i]);
// TODO: 定制用户界面,例如加载用户自定义的菜单等
// 添加用户定义的菜单
CMenu menu;
menu.LoadMenu(IDR_MENU_APPEND);
ebAppendMenu(&menu);
//IDR_MENU_APPEND是所创建的菜单资源ID
// TODO: 添加其他初始化信息
}
在FINISH()函数中添加电子图板程序终止时的处理,如删除掉在STARTUP()函数中加载的用户自定义菜单
void WINAPI FINISH()
{
AFX_MANAGE_STATE(AfxGetStaticModuleState())
for(int i=0; i ebDelFunc(&ft[i]);
for(i=0; i ebDelCmd(&pCmd[i]);
// TODO: 添加应用程序终止时的处理,如删除掉在STARTUP()
// 函数中加载的用户自定义菜单
// 删除添加的菜单
CMenu menu;
menu.LoadMenu(IDR_MENU_APPEND);
ebDeleteMenu(&menu);
ASSERT(AfxGetMainWnd()!=NULL);
AfxGetMainWnd()->m_hWnd=NULL;
delete AfxGetMainWnd();
}

5.添加菜单项的消息响应函数及对应的键盘命令

在EBTC.CPP文件中加入以下代码:

FUNTABLE ft[] = {
// TODO: 添加消息响应函数与对应ID值的对应组并删除下面的NULL
{ ID_EBTC0, usrAppTC0},
{ ID_EBTC1, usrAppTC1},
{ ID_EBTC2, usrAppTC2},
{ ID_EBTC3, usrAppTC3},
{ ID_EBTC4, usrAppTC4},
{ ID_EBTC5, usrAppTC5},
{ ID_EBTC6 usrAppTC6},
// ID_EBTC0~6是菜单项的ID
};

CMDDTABLE pCmd[] = {
// TODO: 添加执行消息响应函数的命令名与对应ID值的对应组并删除下面的NULL
{"T0",ID_EBTC0},
{"T1",ID_EBTC1},
{"T2",ID_EBTC2},
{"T3",ID_EBTC3},
{"T4",ID_EBTC4},
{"T5",ID_EBTC5},
{"T6",ID_EBTC6},
//T0~T6是对应的键盘命令
};

6.菜单的响应函数的声明及添加功能实现代码

6.1在FuncDef.h中加入各函数的声明代码如下:

// TODO: 声明用户自定义的消息响应函数
extern int usrAppTC0(int& step,int& flag);
extern int usrAppTC1(int& step,int& flag);
extern int usrAppTC2(int& step,int& flag);
extern int usrAppTC3(int& step,int& flag);
extern int usrAppTC4(int& step,int& flag);
extern int usrAppTC5(int& step,int& flag);
extern int usrAppTC6(int& step,int& flag);

6.2在EBTC.CPP中加入各函数的勾成代码如下:

int usrAppTC0(int &step,int &flag)
{
int ret;
static EB_SELECT select;
ret = ebGetSelectByPick(select , step , flag);
ebPrompt("拾取图素继续修改......"); // 如果交互没有结束则返回
if(ret!=RT_ISOVER) return ret;// 如果交互结束, 判断选择集是否为空
if(ebIfSelectEmpty(select)==TRUE) // 结束交互
{
ebSetCurrentLayer(0);
ebSetCurrentLType(251);
ebSetCurrentColor(251);
ebEndCommand();
ebClearMenu();
return ret;
}
// 恢复正常显示选择集
ebDrawSelect(select,NORMAL); // 修改结点的属性
int num=ebGetSelectLength(select); // 得到选择集中的结点个数
for(int index=0;index {
// 从选择集中提取结点,并修改结点属性
EB_NODE node=ebGetObjectFromSelect(select,index);
ebSetNodeAttrib(node,0,251,251);
}
ebFreeSelect(select); // 释放不再使用的选择集
ebSetCurrentLayer(0);
ebSetCurrentLType(251);
ebSetCurrentColor(251);
ebRedraw();
ebEndCommand();
ebClearMenu();
return RT_ISOVER;
}

其中函数中主要使用的API函数见下表

newmaker.com

其余usrAppTC1~ usrAppTC6的代码与usrAppTC0类似,只需将层的数值做相应的修改即可。

7.编译与加载

7.1在“工程”菜单中选择“设置”项在对话框中选择“调试”项如图7.a所示,再选择“连接”项如图7.b所示,设置好后单击确定;接着就可以点击newmaker.com图标生成程序文件了。

newmaker.com
图7.a

newmaker.com
图7.b

7.2加载二次开发的程序,利用CAXA电子图板应用程序管理器用来管理电子图板二次开发应用程序的,在“文件”菜单中选择“应用程序管理器”命令,可以弹出如图7.2a所示的对话框。添加应用程序的路径再选择需加载就用程序;最后加载结果如图图7.2b所示。

newmaker.com

结束语:二次开发应用程序被电子图板加载后,成为电子图板进程的一部分,它们之间采用消息传递机制直接进行进程内通讯,面不需要诸如LISP语言等作为中介,因此执行速度非常快,运行效率很高。而且应用程序中,既可以使用Windows标准的交互方式,如菜单、工具条、对话框、快捷键等等,也可以使用电子图板所特有的交互方式,如立即菜单、键盘命令等等,利用资源编辑器进行可视化编辑,利用此程序提供的简单的API函数进行加载、卸载和显示,就可以生成各种交互界面。这种可视化编辑方法为用户提供了极大部分精力投入到对流程的控制及功能的实现上。同时,此应用程序还具有功能强大、编辑方便等优点。
文章内容仅供参考 (投稿) (如果您是本文作者,请点击此处) (3/11/2009)
北京数码大方科技有限公司(CAXA)联系方式:
网址: http://www.caxa.com 电话:86-010-82321350
地址: 中国·北京·海淀区知春路甲63号卫星大厦802室 邮编100080
查看更多CAD软件相关文章: more
·厦门东亚机械:CAXA提升企业设计效率 (3/11/2009)
·CAXA电子图板CAD繁体环境下简体文字输入方案 (3/11/2009)
·CAXA电子图板应用小技巧 (3/11/2009)
·利用CAXA实体设计进行地面水平注水电泵的参数化设计 (3/11/2009)
·用CAXA实体设计 快速绘制风扇 (3/11/2009)
·CAXA电子图板“公式曲线”应用技巧 陕西西京砖机制造公司 郝振英 (3/11/2009)
·CAXA电子图板CAD机械总装图绘制技巧 (3/11/2009)
·CAXA电子图板CAD应用技巧和体会 天水红山试验机一分厂 张崇文 (3/11/2009)
·CAXA良好的服务是江苏如高高压电器信息化成功的保障 newmaker (3/11/2009)
·埃尔凯电器与CAXA合作实现CAD正版化 (3/11/2009)
查看更多CAD/CAM软件相关文章: more
·厦门东亚机械:CAXA提升企业设计效率 (3/11/2009)
·CAXA制造工程师软件在模具设计与制造中的应用 (3/11/2009)
·应用CAXA电子图板转图工具的转图流程及注意事项 (3/11/2009)
·CAXA数控车软件在程序员鉴定中的应用 (3/11/2009)
·如何利用API函数实现CAXA电子图板图层快速转换的编程 (3/11/2009)
·CAXA电子图板CAD繁体环境下简体文字输入方案 (3/11/2009)
·CAXA电子图板应用小技巧 (3/11/2009)
·利用CAXA实体设计进行地面水平注水电泵的参数化设计 (3/11/2009)
·用CAXA实体设计 快速绘制风扇 (3/11/2009)
·CAXA制造工程师的实例应用--右下抿角器造型部分 newmaker (3/11/2009)
查看相关文章目录:
·CAD/CAM/PDM/PLM展区 > CAD/CAM软件展厅 > CAD软件 > CAD/CAM软件文章
文章点评 查看全部点评 投稿 进入贴吧


对 CAD/CAM软件 有何见解?请到 CAD/CAM软件论坛 畅所欲言吧!


网站简介 | 企业会员服务 | 广告服务 | 服务条款 | English | Showsbee | 会员登录  
© 1999-2024 newmaker.com. 佳工机电网·嘉工科技