cad如何制作工具箱
如何制作工具箱一、 制作菜單和工具條菜單和工具條有三種格式,分別是CUI、MNR、MNU,這三者區(qū)別請(qǐng)自行百度,我要講的是MNU格式。這種格式使用記事本即可以編寫,非常方便。下面是一個(gè)例子/一、菜單文件開始 *MENUGROUP=flytoday *POP1ID_H10BENHAI 用于學(xué)習(xí)ID_xd1_Button 高程三角網(wǎng)CCgcsw ID_xd2_Button 高程插點(diǎn)CCgccd*TOOLBARS*TB_CTT*用于學(xué)習(xí)ID1 _Toolbar("用于學(xué)習(xí)", _Floating, _SHOW, 90, 110, 1)ID_gcsw _Button("高程三角網(wǎng)", "GCSW", "GCSW")CCgcswID_gccd _Button("高程插點(diǎn)", "GCCD", "GCCD")CCgccd *ACCELERATORS"F1"_.REDRAW這個(gè)例子中/就是注釋的意思,后面寫一些說明,第二行就是本菜單的名稱,此例中是“flytoday”,“*POP1”就是菜單,一般簡(jiǎn)單的程序使用一個(gè)菜單就行了。*TOOLBARS就是工具條的意思,知道這個(gè)框架后,大家只需要在里面添加自己需要的東西即可。如果要生成二級(jí)菜單,看下面的格式。也就是使用-來進(jìn)行分割,使用->繪圖及修改一&A來表示二給菜單的開始,<-文字刷A&GCCdg來表示二級(jí)菜單的結(jié)束,同理三級(jí)菜單可以使用此方法進(jìn)行編寫。大家要想實(shí)現(xiàn)多菜單,多工具條,可以看看燕秀工具箱的菜單文件,做的很出色。/一、菜單文件開始 *MENUGROUP=flytoday *POP1ID_H10BENHAI 用于學(xué)習(xí)ID_xd1_Button 高程三角網(wǎng)CCgcsw ID_xd2_Button 高程插點(diǎn)CCgccd- ->繪圖及修改一&AID_xd1_Button 高程三角網(wǎng)CCgcsw ID_xd2_Button 高程插點(diǎn)CCgccdID_dg <-文字刷A&GCCdg -*TOOLBARS*TB_CTT*用于學(xué)習(xí)ID1 _Toolbar("用于學(xué)習(xí)", _Floating, _SHOW, 90, 110, 1)ID_gcsw _Button("高程三角網(wǎng)", "GCSW", "GCSW")CCgcswID_gccd _Button("高程插點(diǎn)", "GCCD", "GCCD")CCgccd *ACCELERATORS"F1"_.REDRAW我建議*MENUGROUP=flytoday這里的菜單名和你另存的菜單MNU文件名要一致,這樣大家不用區(qū)分太多名詞,方便走出第一步,當(dāng)我們制作出第一個(gè)工具箱的時(shí)候,再來探究這個(gè)名詞的含義。使用MNU格式使用記事本可以編輯,所以別人也就可以打開了。為此可以使用CUI和MNR。使用menuload命令打開菜單加載。加載后CAD會(huì)自動(dòng)在同路徑下生成以上兩種格式的菜單文件。二、 制作工具條的資源DLL網(wǎng)上有一些介紹制作工具條圖標(biāo)的方法,我了解的就是直接使用BMP,但這個(gè)成功率似乎不高,下面我介紹使用ResHacker 3.5來將圖標(biāo)打包成一個(gè)DLL文件,非常方便。第一步打開空白的DLL文件。程序默認(rèn)資源名稱是大寫的。重復(fù)把所有圖標(biāo)資源添加至空白DLL中。需要特別注意的是,如果你想實(shí)現(xiàn)大圖標(biāo)的效果,請(qǐng)注意在工具條的書寫中有ID_cxx _Button("工藝", "cxxs", "cxx")CCcxx,是里面cxxs 是小圖標(biāo),cxx 是大圖標(biāo),如果你不需要這個(gè),請(qǐng)無視。如何打開大圖標(biāo),見下圖。使用大圖標(biāo)后,工具欄中圖標(biāo)很大,見下圖。小圖標(biāo)的格式是16*16的BMP,大圖標(biāo)是32*32像素的,大家可以使用繪圖、PhotoShop等軟件來制作大圖標(biāo)。圖標(biāo)文件在DLL中的名稱一定要和菜單、工具條中的名稱一致,這樣才能正確顯示。三、 自動(dòng)添加文件支持路徑。一個(gè)工具箱,一定要讓用戶什么操作都不要,這樣傻瓜化的程序才是好程序。下面是代碼,大家可以放在程序的開頭。;添加支持路徑,是不能隨便更改的,其它要求用戶不更改路徑也很正常,因?yàn)榘惭b時(shí)只有一次(defun zclj () (setvar "cmdecho" 0) (setq acadpath (getenv "ACAD") (setq lsp (list "C:/Program Files/flytoday") (setq ls1 (car lsp) (setq HP2010lsp (strcat ls1 "") (setq lsp (vl-remove ls1 lsp) (while lsp (setq ls1 (car lsp) (setq HP2010lsp (strcat HP2010lsp ls1 "") (setq lsp (vl-remove ls1 lsp) ) (setenv "ACAD" (strcat HP2010lsp acadpath) (getenv "ACAD")(zclj)以上代碼中,藍(lán)色字體的是路徑,大家可以修改,另外LSP是表,也就是說可以有不止一個(gè)路徑被添加至CAD的文件支持路徑。四、 自動(dòng)加載菜單下面這段代碼可以自動(dòng)添加菜單,需要注意的僅僅是你要理解“菜單名”“菜單文件名”,如果大家在第一步制作菜單的工具條時(shí)做的很好,這步就會(huì)很簡(jiǎn)單,不然這些概念會(huì)讓我們頭大。再重申一遍:我建議*MENUGROUP=flytoday這里的菜單名和你另存的菜單MNU文件名要一致,這樣大家不用區(qū)分太多名詞,方便走出第一步,當(dāng)我們制作出第一個(gè)工具箱的時(shí)候,再來探究這個(gè)名詞的含義。;自動(dòng)添加菜單和工具條(defun c:ldmu (/ pre_filedia CNT) (if (not (menugroup "flytoday") (progn (setq pre_filedia (getvar "filedia") (setvar "filedia" 0) (vl-cmdf "menuload" "flytoday") (setq CNT 1) (while (menucmd (strcat "P" (itoa CNT) ".1=?")(setq CNT (1+ CNT) ) (if (> CNT 1)(setq CNT (- CNT 1)(setq CNT 1) ) (menucmd (strcat "P" (itoa CNT) "=+flytoday.pop1") (princ"n菜單及工具條已成功加載,歡迎您再次使用!" ) (setvar "filedia" pre_filedia) ) (prompt "n菜單已加載!") ) (princ)(c:ldmu);卸載自定義菜單(defun c:ulmu (/ pre_filedia) (if (menugroup "flytoday") (progn (setq pre_filedia (getvar "filedia") (setvar "filedia" 0) (vl-cmdf "menuunload" "flytoday") (princ"n菜單及工具條已成功卸載,歡迎您再次使用!" ) (setvar "filedia" pre_filedia) ) (prompt "n未找到需要卸載的菜單!") ) (princ)五、 設(shè)置注冊(cè)過程一個(gè)程序,有一個(gè)注冊(cè)界面,會(huì)顯示這個(gè)軟件非常有價(jià)值,而且可以限制軟件的非正常使用。下面給個(gè)注冊(cè)人簡(jiǎn)單例子,無DCL,非常適合簡(jiǎn)單的注冊(cè)過程,但需要注意的是,此程序是明碼(請(qǐng)百度明碼、非明碼),很容易破解。使用方法見作者的說明。http:/bbs.mjtd.com/forum.php?mod=viewthread&tid=95792大家只用在需要加密的程序段中加入(rere)就可以了。;-;2012-7-26 soly2006 調(diào)試成功!簡(jiǎn)單加密,目的是要用也要問別人,不問也要花些時(shí)間來破;理解所有為代碼付出的優(yōu)秀人才!;如果看到有你代碼的影子,請(qǐng)不要見怪。;正式版應(yīng)增加:;1、補(bǔ)齊已注冊(cè)碼與申請(qǐng)碼一致;2、求余要每機(jī)不同;3、沒必要用DCL,又不是經(jīng)常用到,何必考慮人機(jī)界面;4、用法:在命令后面加上(rere)就是。;5、再奉勸你,多用中文;-(defun rere( / 已注冊(cè)碼 注冊(cè)碼 輸入注冊(cè)碼) (setq 已注冊(cè)碼 (vl-registry-read "HKEY_CURRENT_USERSoftwaresolycad" "SN") (setq cpusn (cpu) (setq 注冊(cè)碼 (strcat (加密字串 (substr cpusn 2 4) ) (加密字串 (substr cpusn 7 4) ) (princ (strcat " 你要給別人的注冊(cè)碼為:" 注冊(cè)碼 "n") ;顯示已注冊(cè)碼 便于調(diào)試,給程序不要有這條啊, (if (/= 已注冊(cè)碼 注冊(cè)碼) (progn (setq 已注冊(cè)碼 注冊(cè)碼) (princ (strcat " 申請(qǐng)碼為: " "nn" cpusn) (setq 輸入注冊(cè)碼 (getstring "n請(qǐng)輸入已注冊(cè)碼:") (if (/= 已注冊(cè)碼 輸入注冊(cè)碼) (progn (alert "請(qǐng)輸入正確的已注冊(cè)碼") (exit) ) (progn (vl-registry-write "HKEY_CURRENT_USERSoftwaresolycad" "SN" 輸入注冊(cè)碼) (princ "注冊(cè)成功!") ) ) ) (alert " n 已注冊(cè)") )(princ);-CPU-;不明出處(defun CPU (/ Vlist VObj lcom lExecQuery item) (vl-load-com) (setq Vlist () (if (setq VObj (vlax-create-object "wbemscripting.swbemlocator") (progn (SETQ lcom (VLAX-INVOKE VObj ConnectServer "." "rootcimv2" "" "" "" "" 128 nil ) ;_ 結(jié)束VLAX-INVOKE ) ;_ 結(jié)束SETQ (setq lExecQuery (vlax-invoke lcom ExecQuery ;"Select * From Win32_BIOS" "Select * from Win32_Processor" ) ;_ 結(jié)束vlax-invoke ) ;_ 結(jié)束setq (vlax-for item lExecQuery (setq Vlist (vlax-get item ProcessorId) ;_ 結(jié)束cons ) ;_ 結(jié)束setq ) ;_ 結(jié)束vlax-for (vlax-release-object lExecQuery) (vlax-release-object lcom) (vlax-release-object Vobj) ) ) Vlist); -字串分解-(defun 字串分解 (字串 / i k s lst) (setq i 0 k (chr 160) (while (/= "" (setq s (substr 字串 (setq i (1+ i) 1) (if (< s k) (setq lst (cons s lst) (setq lst (cons (substr 字串 i 2) lst) i (1+ i) ) )(reverse lst) ;-加密字串-(defun 加密字串(字串 / 字串表 串) (setq 串 字串) (setq 字串表 (字串分解 串) (setq 串 (apply strcat (mapcar (lambda (X) (加密字符 X) 字串表);-加密字符-;精華所在:密=字符+字符對(duì)5求余(defun 加密字符(字符 )(chr (+ (ascii 字符) (rem (ascii 字符) 5)六、 打包成EXE我們的程序使用的是LSP文件格式,用戶可以直接打開,我們最好把對(duì)話框,LSP文件打包成VLX格式,安全性很好。輸入“Vlide”命令或都通過菜單進(jìn)行Visual LISP編程環(huán)境。單擊完成就可以打包成VLX文件,將此文件放入事先準(zhǔn)備好的文件夾中。這里面一個(gè)程序文件,兩個(gè)菜單文件,一個(gè)工具條的資源DLL,A、B是秋楓大俠程序打包時(shí)使用的兩個(gè)圖片,不是必須的。秋楓大俠的程序如何使用,請(qǐng)見置頂貼http:/bbs.mjtd.com/thread-35156-1-1.html打包后的程序圖標(biāo)如下,不太美觀我們將其再轉(zhuǎn)化成美觀一點(diǎn)和圖標(biāo)。七、 自定義程序圖標(biāo)使用Iconworkshop-制作ICO圖標(biāo).exe和PS可以很方便地制作出ICO文件,如果大家不會(huì)制作的話,可以百度一下下載現(xiàn)成的ICO圖標(biāo)。將所有素材弄好,放在文件夾中。注意注釋里面的文件內(nèi)容。選中文件夾中所有文件,點(diǎn)右鍵,此時(shí)生成的圖標(biāo)就是我們自己定義的啦