![zwcad二次開發(fā)文檔簡易指南_第1頁](http://file4.renrendoc.com/view/3aa4d638a5db8891107c0ed2806ff3ca/3aa4d638a5db8891107c0ed2806ff3ca1.gif)
![zwcad二次開發(fā)文檔簡易指南_第2頁](http://file4.renrendoc.com/view/3aa4d638a5db8891107c0ed2806ff3ca/3aa4d638a5db8891107c0ed2806ff3ca2.gif)
![zwcad二次開發(fā)文檔簡易指南_第3頁](http://file4.renrendoc.com/view/3aa4d638a5db8891107c0ed2806ff3ca/3aa4d638a5db8891107c0ed2806ff3ca3.gif)
![zwcad二次開發(fā)文檔簡易指南_第4頁](http://file4.renrendoc.com/view/3aa4d638a5db8891107c0ed2806ff3ca/3aa4d638a5db8891107c0ed2806ff3ca4.gif)
![zwcad二次開發(fā)文檔簡易指南_第5頁](http://file4.renrendoc.com/view/3aa4d638a5db8891107c0ed2806ff3ca/3aa4d638a5db8891107c0ed2806ff3ca5.gif)
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
概述TOC\o"1-5"\h\z\o"CurrentDocument"二?使用SDS進行二次開發(fā) .\o"CurrentDocument"SDS和ADS接口的主要差異 2\o"CurrentDocument"編譯SDS應(yīng)用程序 4三.使用AUTOLISP進行開發(fā) 四.使用VBA/VB進行開發(fā)五.ZWCAD的定制\o"CurrentDocument"屏幕菜單及其定制 5\o"CurrentDocument"IMAGE菜單(圖標(biāo)菜單)的定制 7\o"CurrentDocument"PROFILE的定制 9\o"CurrentDocument"ZWCAD.LSP和ZWCAD.SDS文件的作用和定制 10別名的定制 11其他定制 11(內(nèi)部參考)一.概述在zwcad上可以通過二次開發(fā)來定制和擴展zwcad的功能.當(dāng)前的zwcad提供AutoLISP,SDS以及VisualBasicforApplications(VBA,C0M開發(fā)包進行二次開發(fā).在zwcad上,你也可以使用許多原來在autocad平臺上開發(fā)的應(yīng)用程序.例如使用autolisp編制的程序可以在幾乎不用修改的情況下移植到zwcad平臺.Zwcad還完整支持AutoCADDialogControl(DCL)語言,不需修改.目前的zwcad還不支持ObjectARX,DBX.使用SDS進行二次開發(fā)SDS是一個和ADS?(AutoCAD?DevelopmentSystem)開發(fā)包相兼容的C/C++語言接口.大部分ads應(yīng)用程序經(jīng)過再編譯可以直接應(yīng)用于zwcad。中望建筑就是用sdssdk開發(fā)的。下面所述內(nèi)容均以ads開發(fā)包為比較對象,以ads開發(fā)程序員為講解對象?具體的sds函數(shù)說明請參考幫助文檔.SDS和ADS接口的主要差異SDS和ADS的接口差異可以直接從sds.h和ads.h這兩個頭文件的比較得出.主要差異如下.1?Sds開發(fā)包的接口函數(shù)以sds_為前綴.Ads開發(fā)包的接口函數(shù)主要以ads_,acad_,andacrx—等為前綴.在sds.h中提供了移植ads用的宏例如#defineads_entdelsds_entdel這樣只需要在ads應(yīng)用程序源代碼中將#include“ads.h”以#include“sds.h”替換,并將要鏈接的庫文件改為sds.lib編譯鏈接即可完成從ads到sds的移植.2?sds開發(fā)包主要擴展的函數(shù)#ifdefined(_WINDOWS_)HDC*sds_getviewhdc(void);intsds_getrgbvalue(intnColor);RGBHPALETTEsds_getpalette(void);HWNDsds_getviewhwnd(void);HWNDsds_getmainhwnd(void);intsds_drawLinePattern(HDCh_dc,RECTrect,structsds_resbuf*lineParam);
#endifintsds_setcallbackfunc(int(*cbfnptr)(intflag,void*arg1,void*arg2,void*arg3));//CommandStart/End.#defineSDS_CBCMDBEGIN0//arg1="commandname"castas(char*)//CallbackreturnRTERRORwillcausecommandtonotbecalled.#defineSDS_CBCMDEND1//arg1="commandname"castas(char*)//Returncodedoesnotmatter.//MousemovementsandMousebuttons.2//arg1=Xpixel3//2//arg1=Xpixel3//arg1=Xpixel4//arg1=Xpixel5//arg1=Xpixel6//arg1=Xpixel7//arg1=Xpixelarg2=Ypixelarg2=Ypixelarg2=Ypixelarg2=Ypixelarg2=Ypixelarg2=Ypixel#defineSDS_CBLBUTTONDN#defineSDS_CBLBUTTONUP#defineSDS_CBLBUTTONDBLCLK#defineSDS_CBRBUTTONDN#defineSDS_CBRBUTTONUP etc.//進度條的控制.intsds_progresspercent(intiPercentDone);intsds_progressstart(void);intsds_progressstop(void);〃加載別名文件--pgp文件intsds_readaliasfile(char*szAliasFile);〃不同于sds_printf,這個函數(shù)可以發(fā)送命令,例如”LINE”intsds_sendmessage(char*szCommandMsg);//在繪制窗口和命令歷史窗口間切換焦點.intsds_swapscreen();//組操作intsds_createGroup(constchar*pName,constchar*pDescription,intselectable,intunnamed,sds_namesdsGroupName);intsds_modifyGroup(constchar*pNewName,constchar*pNewDescription,intselectable,sds_namesdsGroupName);intsds_addSSToGroup(sds_namess,sds_namesdsGroupName);intsds_removeSSFromGroup(sds_namess,sds_namesdsGroupName);intsds_getSSFromGroup(sds_namess,sds_namesdsGroupName);intsds_findGroup(constchar*pName,sds_namesdsGroupName);intsds_findGroupByEnt(sds_nameentity,sds_namessGroups);//求實體交點intsds_intersect(sds_nameentFirst,sds_nameentSecond,structsds_resbuf**ptList);//實體所占矩形空間voidsds_entextent(sds_nameename,sds_pointminPoint,sds_pointmaxPoint);SDS不支持的ads函數(shù)主要有以下幾個int ads_ssGetKwordCallbackPtr(structresbuf*(**pFunc)(constchar*));int ads_ssSetKwordCallbackPtr(structresbuf*(*pFunc)(constchar*));int ads_ssGetOtherCallbackPtr(structresbuf*(**pFunc)(constchar*));int ads_ssSetOtherCallbackPtr(structresbuf*(*pFunc)(constchar*));adsw_acadMainWnd, 〃sds中使用HWNDsds_getmainhwnd(void);andadsw_acadDocWnd.〃sds中使用HWNDsds_getviewhwnd(void);注意一個函數(shù)SDS:intsds_dictdel(constsds_namenmDict,constchar*szDelThis);ADS:int ads_dictremove(constads_namedictname,constchar*symname);編譯SDS應(yīng)用程序一般使用VC編譯環(huán)境主要做好sds頭文件和庫文件的路徑設(shè)置,然后#include“sds.h”#pragmacomment(lib,sds)或設(shè)置鏈接弓I用到sds.libOK使用AutoLISP進行開發(fā)zwcad提供了調(diào)用Autolisp程序的接口,可以將大部分的lisp程序正常執(zhí)行,但需要注
意以下事項最為重要的一點。Zwcad中的LISP無法進行COM調(diào)用,無法使用VLA開頭的函數(shù)。因此,在ZWCAD中,你就不能通過lisp使用ACTICEX方式產(chǎn)生圖元并用變量儲存該圖元的指針以進行以后的修改查詢等操作,你只能使用COMMAND和ENTMAKE的方式進行產(chǎn)生圖元,同時你只能使用圖元名間接對圖元進行操作。(VLISP提供的AutoLISP擴展函數(shù)由曲線測量函數(shù)、數(shù)據(jù)轉(zhuǎn)換函數(shù)、對象處理函數(shù)、特性處理函數(shù)、集合操作函數(shù)和詞典函數(shù)組成。函數(shù)名以vlax-為前綴。這些函數(shù)和ActiveX方法都提供vla-*函數(shù)。有些vlax-*函數(shù)在使用ActiveX命令時是必需的。)無實現(xiàn)如VLISP中的反應(yīng)器及其機制。Zwcad也并沒有提供一個如acad中的visuallisp的編譯環(huán)境,只能直接使用寫好的的lisp程序。ZWCAD能加載未經(jīng)加密的*.LSP文件或以“AutoCADPROTECTEDLISPfile”方式加密的*.LSP文件。ZWCAD的LISP中能使用DCL文件。ZWCAD不能加載經(jīng)AUTOCAD的VISUALLISP編譯集成的VISUALLISP可執(zhí)行文件vax(一個或多個LSP文件和/或?qū)υ捒蚩刂普Z言(DCL)文件的編譯集合。)ZWCAD不能加載FAS文件(.fas)-一個LSP程序文件的二進制編譯版本。使用VBA/VB進行開發(fā)zwcad可以提供vba/vb支持,但是在一般的版本里沒有提供.重要區(qū)別:Automation對象不同.使用支持vba版本的zwcad,最重要的是理解,zwcad里面的對象和acad的對象是不相同的.zwcad的對象和acad的對象可能在使用上和名字上有很多相似的地方,但是他們是不同的對象,有自己的唯一標(biāo)識id.以前基于acad開發(fā)的vba/vb應(yīng)用引用到的acad對象,其對象實現(xiàn)在acad里,不在zwcad里,所以不能把這些應(yīng)用直接拿到zwcad上使用。另外,Acad中關(guān)于界面的對象如MenuBar,PopMenu,MenuGroup(s),Toolbar(s),PopMenuItem,ToolbarItem等對象在中望CAD中還沒有實現(xiàn).五.ZWCAD的定制屏幕菜單及其定制五.ZWCAD的定制p中望建筑▼尺寸標(biāo)注H門窗標(biāo)注半墻中標(biāo)注I4J墻厚標(biāo)注p中望建筑▼尺寸標(biāo)注H門窗標(biāo)注半墻中標(biāo)注I4J墻厚標(biāo)注m沿直墻注雨逐點標(biāo)注A角注弧墻尺半徑標(biāo)注文字避讓A標(biāo)注斷開V標(biāo)注合并直,改尺寸值C恢復(fù)原值摞?標(biāo)注精度N擦除標(biāo)注44*尺寸平移|尺寸縱移▼中望建筑卜平面卜立面卜剖面卜總圖卜圖框卜圖庫卜圖層工貝卜苴它工具卜尺寸標(biāo)注卜標(biāo)高標(biāo)號卜文字表格卜出圖以后版本類似的屏幕菜單.中望建筑軟件使用了該功能,如右圖所示.功能詳解:樣式如卜立 可的淺藍色底,實心箭頭朝下的按鈕表明了當(dāng)前激活的菜單.圖中所示,尺寸標(biāo)注為當(dāng)前激活的菜單.除了頂級菜單按鈕(這里是“中望建筑”)外,可以右鍵點擊當(dāng)前激活的菜單按鈕,可以彈出其下的所有級別的菜單及菜單項.帶有卜的按鈕,左鍵點擊可以進入的下一層菜單.右鍵點擊可以彈出其下的所有級別的菜單及菜單項.帶有▽的按鈕是當(dāng)前激活菜單的上級菜單.左鍵點擊可以直接回到該菜單。右鍵點擊可以彈出其下的所有級別的菜單及菜單項.沒有箭頭的按鈕是菜單命令項.左鍵點擊執(zhí)行命令。中望CAD開始運行時,會檢測當(dāng)前目錄下是否存在ScreenMnu.mnu文件,如果存在就會加載該菜單文件.定制該文件主要注意事項可以使用/*...*/及//來注釋內(nèi)容MENU_TITLE指出該屏幕菜單的頂級文字,如中望建筑中為MENU_TITLE二〃中望建筑〃.***SCREEN行下開始定義菜單菜單項定義如下.MENUITEM_ID [MenuItemName]CommandStringMenuItemName是顯示在屏幕菜單上的名稱CommandString是發(fā)送給命令行窗口的命令如ID_Desaxis [直線軸網(wǎng)廠LLCzhxzhw如果要指明當(dāng)前的項有子菜單可以使用->符號表明菜單進入點.如ID_Axis [->軸 網(wǎng)]使用<-表明該菜單項為子菜單最后一項,如ID_axin [〈-取消外偏廠LLCqxwp又如ID_DELMDBT [〈-〈-刪除窗套廠LLCshchcht返回兩級菜單.子菜單可以嵌套但不可以交叉.***RESOURCE行下開始定義圖標(biāo)圖標(biāo)定義如下MENUITEM_ID="MenuItemBmp.bmp"只需要求菜單項定義中的ID和圖標(biāo)定義中的ID一致即可把圖標(biāo)和命令項聯(lián)系起來.可以不給菜單項指定圖標(biāo).注意,位圖必須位于當(dāng)前目錄下的子目錄icon中.[--]行指明一個分割條Image菜單(圖標(biāo)菜單)的定制在***IMAGE行下開始定義圖標(biāo)菜單,格式同acad菜單文件.例如一個簡單的screenmnu.mnu文件如下MENU_TITLE="ImageTest"http://屏幕菜單***SCREENID_TEST[->Test]ID_SCREENMENUITEM [Item1]$I=JZD$i=*ID_SCREENMENUITEM [<-Item2]$I=WTBZ$i=****IMAGE**JZD[界址相關(guān)符號][cass2(jzdl,界址線)]WAPjzline;AP[cass2(jzd2,街道線)]WAPdd;300010;AP[cass2(jzd3,街坊線)]WAPdd;300020;AP**WTBZ[圖標(biāo)菜單項調(diào)用圖標(biāo)菜單][cass3(bz1,Test)]$i=JZD$i=****RESOURCEID_SCREENMENUITEM ="1.bmp","歡迎"點擊Item1的效果如下
profile的定制通過profile的定制可以在zwcad上指定菜單以及工具欄和指定支持路徑(搜索路徑).定制profile的方法是:1.在程序圖標(biāo)的“目標(biāo)”項加命令參數(shù)“/p配置項”(配置項是字符串,如zwarch、zwfur等)和“起始位置”項加程序的工作路徑(如右圖),這樣以“/p配置項”來啟動ZWCAD,ZWCAD會在注冊表里的[HKEY_CURRENT_USER\Software\中望龍騰\ZWCAD]建立一個為“配置項”的配置。2.在注冊表里的[HKEY_CURRENT_USER\Software\中望龍騰\ZWCAD\配置項\Config]的"MenuFile"項指定菜單位置(路徑和名稱不包括菜單的擴展名)和"Drawing"、"Font"、"Help"、"Xref"、"HatchPat"、"Blocks"指定相應(yīng)的支持路徑(搜索路徑)路徑間用分號連接。下面以中望建筑軟件為例說明:配置項”為ZWARCHZWCAD的安裝路徑為:“D:\ProgramFiles、中望CAD\zwcad.exe"中望建筑軟件安裝路徑為:“D:\ProgramFiles\中望建筑軟件1.0”,要加載的菜單為ZWARCH.mnu。1.程序圖標(biāo)項設(shè)置:如:目標(biāo):"D:\ProgramFiles\中望CAD\zwcad.exe"/PZWARCH起始位置:"D:\ProgramFiles\中望建筑軟件1.0"2.注冊表項設(shè)置:需在注冊表里寫以下注冊項[HKEY_CURRENT_USER\Software\中望龍騰\ZWCAD\ZWARCH\Config]//菜單:"MenuFile"="D
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度航空航天設(shè)備研發(fā)生產(chǎn)合作協(xié)議
- 醫(yī)用針頭購買合同范例
- 充電樁安裝合同范本
- 2025年度影視化妝技術(shù)支持服務(wù)合同
- 假發(fā)買賣合同范本
- 保育員合同范本
- 刷墻協(xié)議合同范本
- 工程項目人員職責(zé)劃分-圖文
- 中介有解約合同范本
- 保潔勞務(wù)標(biāo)準(zhǔn)合同范本
- BMS基礎(chǔ)知識培訓(xùn)
- 質(zhì)保管理制度
- 2024年全國卷新課標(biāo)1高考英語試題及答案
- 2024年10月自考13003數(shù)據(jù)結(jié)構(gòu)與算法試題及答案
- 華為經(jīng)營管理-華為激勵機制(6版)
- 2024年標(biāo)準(zhǔn)化工地建設(shè)管理實施細則(3篇)
- 2024新版《藥品管理法》培訓(xùn)課件
- 干燥綜合征診斷及治療指南
- 浙江省杭州市2024年中考英語真題(含答案)
- 《陸上風(fēng)電場工程設(shè)計概算編制規(guī)定及費用標(biāo)準(zhǔn)》(NB-T 31011-2019)
- 電鍍工業(yè)園項目可行性研究報告-用于立項備案
評論
0/150
提交評論