- 积分
- 391
- 明经币
- 个
- 注册时间
- 2010-11-12
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
(defun create_xgj.mnu ( / filen lst menuname stream tempname x);创建cass小工具工具栏
(defun getmenu ( / lst x) ; 获得cad加载的菜单列表
(vlax-for x (vla-get-menugroups (vlax-get-acad-object))
(setq lst (cons (vla-get-name x) lst))
)
)
(setvar "cmdecho" 0)
(vl-load-com)
(if (member "XGJ" (getmenu)) ; 判断cad是否加载zct工具栏
(command "TOOLBAR" "cass小工具" "S") ; 如果已加载,则显示该工具栏
(progn ; 如果没加载,则自动执行下面程序
(alert "\n程序自动创建\"cass小工具\"工具栏,请稍后……")
(setq menuname (cond
((setq tempname "xgj.mnu" ; 在cad搜索目录创建一个菜单mnu文件
filen (open tempname "w") ; 打开该菜单并写状态
)
(foreach stream '("***MENUGROUP=xgj\n" "***TOOLBARS\n" ; 写入工具栏内容,图标最好采用cad自带的图标
"**若干测绘用实用小程序\n" "ID_xgj001 [_Toolbar(\"cass小工具\", _Floating, _Hide, 10, 340, 2)]\n"
"ID_xgj008 [_Button(\"打开所有图层\", \"RCDATA_16_OSNEND\", \"RCDATA_16_OSNEND\")]^C^Cpon\n"
"ID_xgj009 [_Button(\"关闭所选图层以外图层\", \"RCDATA_16_OSNEND\", \"RCDATA_16_OSNEND\")]^C^Cpoff\n"
"ID_xgj010 [_Button(\"关闭所选图层\", \"RCDATA_16_OSNEND\", \"RCDATA_16_OSNEND\")]^C^Cpgbtc\n"
"ID_xgj011 [_Button(\"图元表\", \"RCDATA_16_OSNEND\", \"RCDATA_16_OSNEND\")]^C^Cptyb\n"
"ID_xgj012 [_Button(\"en对象\", \"RCDATA_16_DIMOBL\", \"RCDATA_16_DIMOBL\")]^C^Cpty\n"
"ID_xgj013 [_Button(\"vla对象\", \"RCDATA_16_DIMOBLBB\", \"RCDATA_16_DIMOBLBB\")]^C^Cpvla\n"
)
(princ stream filen)
)
(close filen) ; 关闭mnu文件
tempname
)
)
)
(command "menuload" menuname) ; 加载刚才创建的mnu文件
(command "TOOLBAR" "cass小工具" "S") ; 显示工具栏
)
)
(princ)
)
(create_xgj.mnu)
(转自本论坛)
--------------------------------------------------
上面程序只能利用CAD自带的图标:
"ID_xgj013 [_Button(\"vla对象\", \"RCDATA_16_DIMOBLBB\", \"RCDATA_16_DIMOBLBB\")]^C^Cpvla\n"
如何把自定义图标加进去,效果:
"ID_xgj013 [_Button(\"vla对象\", \"自定义图标 \", \"自定义图标 \")]^C^Cpvla\n"
DLL封装图标是否可以解决?哪位高手详细解答一下具体操作过程,谢谢!@
|
|