《cad如何制作工具箱》由會員分享,可在線閱讀,更多相關(guān)《cad如何制作工具箱(18頁珍藏版)》請在裝配圖網(wǎng)上搜索。
1、如何制作工具箱
一、 制作菜單和工具條
菜單和工具條有三種格式,分別是CUI、MNR、MNU,這三者區(qū)別請自行百度,我要講的是MNU格式。這種格式使用記事本即可以編寫,非常方便。
下面是一個例子
//一、菜單文件開始
***MENUGROUP=flytoday
***POP1
ID_H10BENHAI [用于學(xué)習(xí)]
ID_xd1_Button [ 高程三角網(wǎng)]^C^Cgcsw
ID_xd2_Button [ 高程插點(diǎn)]^C^Cgccd
***TOOLBARS
**TB_CTT
**用于學(xué)習(xí)
ID1 [_Toolbar("用于學(xué)習(xí)
2、", _Floating, _SHOW, 90, 110, 1)]
ID_gcsw [_Button("高程三角網(wǎng)", "GCSW", "GCSW")]^C^Cgcsw
ID_gccd [_Button("高程插點(diǎn)", "GCCD", "GCCD")]^C^Cgccd
***ACCELERATORS
["F1"]_.REDRAW
這個例子中//就是注釋的意思,后面寫一些說明,第二行就是本菜單的名稱,此例中是“flytoday”,“***POP1”就是菜單,一般簡單的程序使用一個菜單就行了。***TOOLBARS就是工具條的意思,知道這個框架后,大家只
3、需要在里面添加自己需要的東西即可。如果要生成二級菜單,看下面的格式。也就是使用[-]來進(jìn)行分割,使用[->繪圖及修改一&A]來表示二給菜單的開始,[<-文字刷A&G]^C^Cdg來表示二級菜單的結(jié)束,同理三級菜單可以使用此方法進(jìn)行編寫。大家要想實現(xiàn)多菜單,多工具條,可以看看燕秀工具箱的菜單文件,做的很出色。
//一、菜單文件開始
***MENUGROUP=flytoday
***POP1
ID_H10BENHAI [用于學(xué)習(xí)]
ID_xd1_Button [ 高程三角網(wǎng)]^C^Cgcsw
ID_xd2_Button [ 高程插點(diǎn)]^C^Cgccd
[--]
4、 [->繪圖及修改一&A]
ID_xd1_Button [ 高程三角網(wǎng)]^C^Cgcsw
ID_xd2_Button [ 高程插點(diǎn)]^C^Cgccd
ID_dg [<-文字刷A&G]^C^Cdg
[--]
***TOOLBARS
**TB_CTT
**用于學(xué)習(xí)
ID1 [_Toolbar("用于學(xué)習(xí)", _Floating, _SHOW, 90, 110, 1)]
ID_gcsw [_Button("高程三角網(wǎng)", "GCSW", "GCSW")]^C^Cgcsw
ID_gccd
5、 [_Button("高程插點(diǎn)", "GCCD", "GCCD")]^C^Cgccd
***ACCELERATORS
["F1"]_.REDRAW
我建議***MENUGROUP=flytoday這里的菜單名和你另存的菜單MNU文件名要一致,這樣大家不用區(qū)分太多名詞,方便走出第一步,當(dāng)我們制作出第一個工具箱的時候,再來探究這個名詞的含義。
使用MNU格式使用記事本可以編輯,所以別人也就可以打開了。為此可以使用CUI和MNR。
使用menuload命令打開菜單加載。
加載后CAD會自動在同路徑下生成以上兩種格式的菜單文件。
二、 制作工具條的資源DLL
網(wǎng)
6、上有一些介紹制作工具條圖標(biāo)的方法,我了解的就是直接使用BMP,但這個成功率似乎不高,下面我介紹使用ResHacker 3.5來將圖標(biāo)打包成一個DLL文件,非常方便。
第一步打開空白的DLL文件。
程序默認(rèn)資源名稱是大寫的。重復(fù)把所有圖標(biāo)資源添加至空白DLL中。需要特別注意的是,如果你想實現(xiàn)大圖標(biāo)的效果,請注意在工具條的書寫中有ID_cxx [_Button("工藝", "cxxs", "cxx")]^C^Ccxx,是里面cxxs 是小圖標(biāo),cxx 是大圖標(biāo),如果你不需要這個,請無視。如何打開大圖標(biāo),見下圖。
使用大圖標(biāo)后,工具欄中圖標(biāo)很大,見下圖。
7、
小圖標(biāo)的格式是16*16的BMP,大圖標(biāo)是32*32像素的,大家可以使用繪圖、PhotoShop等軟件來制作大圖標(biāo)。圖標(biāo)文件在DLL中的名稱一定要和菜單、工具條中的名稱一致,這樣才能正確顯示。
三、 自動添加文件支持路徑。
一個工具箱,一定要讓用戶什么操作都不要,這樣傻瓜化的程序才是好程序。下面是代碼,大家可以放在程序的開頭。
;;添加支持路徑,是不能隨便更改的,其它要求用戶不更改路徑也很正常,因為安裝時只有一次
(defun zclj ()
(setvar "cmdecho" 0)
(setq acadpath (getenv "ACAD"))
(setq l
8、sp (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
9、acadpath))
(getenv "ACAD")
)
(zclj)
以上代碼中,藍(lán)色字體的是路徑,大家可以修改,另外LSP是表,也就是說可以有不止一個路徑被添加至CAD的文件支持路徑。
四、 自動加載菜單
下面這段代碼可以自動添加菜單,需要注意的僅僅是你要理解“菜單名”“菜單文件名”,如果大家在第一步制作菜單的工具條時做的很好,這步就會很簡單,不然這些概念會讓我們頭大。再重申一遍:我建議***MENUGROUP=flytoday這里的菜單名和你另存的菜單MNU文件名要一致,這樣大家不用區(qū)分太多名詞,方便走出第一步,當(dāng)我們制作出第一個工具箱的時候,再來探究這個名詞的含義。
10、;;自動添加菜單和工具條
(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+ C
11、NT))
)
(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)
;;卸載自定義菜單
12、
(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未
13、找到需要卸載的菜單!")
)
(princ)
)
五、 設(shè)置注冊過程
一個程序,有一個注冊界面,會顯示這個軟件非常有價值,而且可以限制軟件的非正常使用。下面給個注冊人簡單例子,無DCL,非常適合簡單的注冊過程,但需要注意的是,此程序是明碼(請百度明碼、非明碼),很容易破解。使用方法見作者的說明。
;;-----------------------------------------------------------------------------------
;;2012-7-26 soly2006 調(diào)試成功!簡單加密,目的是要用也要問別人,不問也要花些時間來破
14、;;理解所有為代碼付出的優(yōu)秀人才!
;;如果看到有你代碼的影子,請不要見怪。
;;正式版應(yīng)增加:
;;1、補(bǔ)齊已注冊碼與申請碼一致;
;;2、求余要每機(jī)不同;
;;3、沒必要用DCL,又不是經(jīng)常用到,何必考慮人機(jī)界面;
;;4、用法:在命令后面加上(rere)就是。
;;5、再奉勸你,多用中文
;;-----------------------------------------------------------------------------------
(defun rere( / 已注冊碼 注冊碼 輸入注冊碼)
(setq 已注冊碼 (vl-registry
15、-read "HKEY_CURRENT_USER\\Software\\solycad" "SN"))
(setq cpusn (cpu))
(setq 注冊碼 (strcat (加密字串 (substr cpusn 2 4) ) (加密字串 (substr cpusn 7 4) )))
(princ (strcat " 你要給別人的注冊碼為:" 注冊碼 "\n")) ;顯示已注冊碼 便于調(diào)試,給程序不要有這條啊,
(if (/= 已注冊碼 注冊碼)
(progn
(setq 已注冊碼 注冊碼)
(princ (strcat " 申請碼為:
16、 " "\n\n" cpusn))
(setq 輸入注冊碼 (getstring "\n請輸入已注冊碼:"))
(if (/= 已注冊碼 輸入注冊碼)
(progn
(alert "請輸入正確的已注冊碼")
(exit)
)
(progn
(vl-registry-write "HKEY_CURRENT_USER\\Software\\solycad" "SN" 輸入注冊碼)
(princ "注冊成功!")
)
)
)
(alert " \n 已注冊")
17、)
(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
18、ConnectServer "."
"\\root\\cimv2" "" ""
"" "" 128 nil
) ;_ 結(jié)束VLAX-INVOKE
) ;_ 結(jié)束SETQ
(setq lExecQuery
(vlax-invoke
lcom
ExecQuery
;;"Select * From Win32_BIOS"
"Select * from Win32_Processor"
) ;_ 結(jié)束v
19、lax-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
)
;; ---------
20、-----------字串分解----------------------------------
(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)
)
21、
;;-------------------------加密字串---------------------------------------------
(defun 加密字串(字串 / 字串表 串)
(setq 串 字串)
(setq 字串表 (字串分解 串))
(setq 串 (apply strcat (mapcar (lambda (X) (加密字符 X)) 字串表)))
)
;;-----------------------------加密字符------------------------------------------------
;;精
22、華所在:密=字符+字符對5求余
(defun 加密字符(字符 )
(chr (+ (ascii 字符) (rem (ascii 字符) 5)))
)
六、 打包成EXE
我們的程序使用的是LSP文件格式,用戶可以直接打開,我們最好把對話框,LSP文件打包成VLX格式,安全性很好。
輸入“Vlide”命令或都通過菜單進(jìn)行Visual LISP編程環(huán)境。
單擊完成就可以打包成VLX文件,將此文件放入事先準(zhǔn)備好的文件夾中。
這里面一個程序文件,兩個菜單文件,一個工具條的資源DLL,A、B是秋楓大俠程序打包時使用的兩個圖片,不是必須的。
秋楓大俠的程序如何使用,請見置頂貼
打包后的程序圖標(biāo)如下,不太美觀》
我們將其再轉(zhuǎn)化成美觀一點(diǎn)和圖標(biāo)。
七、 自定義程序圖標(biāo)
使用Iconworkshop-制作ICO圖標(biāo).exe和PS可以很方便地制作出ICO文件,如果大家不會制作的話,可以百度一下下載現(xiàn)成的ICO圖標(biāo)。將所有素材弄好,放在文件夾中。
注意注釋里面的文件內(nèi)容。
選中文件夾中所有文件,點(diǎn)右鍵,
此時生成的圖標(biāo)就是我們自己定義的啦