ZWCAD二次开发文档简易指南
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
一.概述 (2)
二.使用SDS进行二次开发 (2)
SDS和ADS接口的主要差异 (2)
编译SDS应用程序 (4)
三.使用AUTOLISP进行开发 (4)
四.使用VBA/VB进行开发 (5)
五.ZWCAD的定制 (5)
屏幕菜单及其定制 (5)
I MAGE菜单(图标菜单)的定制 (7)
PROFILE的定制 (9)
ZWCAD.LSP和ZWCAD.SDS文件的作用和定制 (10)
别名的定制 (11)
其他定制 (11)
(内部参考)
一.概述
在zwcad上可以通过二次开发来定制和扩展zwcad的功能.当前的zwcad提供AutoLISP,SDS以及Visual Basic for Applications(VBA,COM)开发包进行二次开发.在zwcad上,你也可以使用许多原来在autocad平台上开发的应用程序.例如使用autolisp编制的程序可以在几乎不用修改的情况下移植到zwcad平台.Zwcad还完整支持AutoCAD Dialog Control(DCL)语言,不需修改.目前的zwcad还不支持Object ARX,DBX.
二.使用SDS进行二次开发
SDS是一个和ADS®(AutoCAD®Development System)开发包相兼容的C/C++语言接口.大部分ads应用程序经过再编译可以直接应用于zwcad。中望建筑就是用sds sdk开发的。下面所述内容均以ads开发包为比较对象,以ads开发程序员为讲解对象.具体的sds函数说明请参考帮助文档.
SDS和ADS接口的主要差异
SDS和ADS的接口差异可以直接从sds.h和ads.h这两个头文件的比较得出.主要差异如下.
1.Sds开发包的接口函数以sds_为前缀.
Ads开发包的接口函数主要以ads_,acad_,and acrx_等为前缀.
在sds.h中提供了移植ads用的宏
例如#define ads_entdel sds_entdel
这样只需要在ads应用程序源代码中将#include“ads.h”以#include “sds.h”替换,并将要链接的库文件改为sds.lib编译链接即可完成从ads到sds的移植.
2.sds开发包主要扩展的函数
#if defined(_WINDOWS_)
HDC*sds_getviewhdc(void);
int sds_getrgbvalue(int nColor);RGB
HPALETTE sds_getpalette(void);
HWND sds_getviewhwnd(void);
HWND sds_getmainhwnd(void);
int sds_drawLinePattern(HDC h_dc,RECT rect,struct sds_resbuf*lineParam);
#endif
int sds_setcallbackfunc(int(*cbfnptr)(int flag,void*arg1,void*arg2,void*arg3)); //Command Start/End.
#define SDS_CBCMDBEGIN0
//arg1="command name"cast as(char*)
//Callback return RTERROR will cause command to not be called.
#define SDS_CBCMDEND1
//arg1="command name"cast as(char*)
//Return code does not matter.
//Mouse movements and Mouse buttons.
#define SDS_CBMOUSEMOVE2//arg1=X pixel arg2=Y pixel
#define SDS_CBLBUTTONDN3//arg1=X pixel arg2=Y pixel
#define SDS_CBLBUTTONUP4//arg1=X pixel arg2=Y pixel
#define SDS_CBLBUTTONDBLCLK5//arg1=X pixel arg2=Y pixel
#define SDS_CBRBUTTONDN6//arg1=X pixel arg2=Y pixel
#define SDS_CBRBUTTONUP7//arg1=X pixel arg2=Y pixel ……etc.
//进度条的控制.
int sds_progresspercent(int iPercentDone);
int sds_progressstart(void);
int sds_progressstop(void);
//加载别名文件--pgp文件
int sds_readaliasfile(char*szAliasFile);
//不同于sds_printf,这个函数可以发送命令,例如”LINE”
int sds_sendmessage(char*szCommandMsg);
//在绘制窗口和命令历史窗口间切换焦点.
int sds_swapscreen();
//组操作
int sds_createGroup(const char*pName,const char*pDescription,int selectable,int unnamed,
sds_name sdsGroupName);
int sds_modifyGroup(const char*pNewName,const char*pNewDescription,int selectable,sds_name sdsGroupName);
int sds_addSSToGroup(sds_name ss,sds_name sdsGroupName);
int sds_removeSSFromGroup(sds_name ss,sds_name sdsGroupName);
int sds_getSSFromGroup(sds_name ss,sds_name sdsGroupName);