ZWCAD二次开发文档简易指南

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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);

相关文档
最新文档