明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3191|回复: 10

请求一个简单DCL对话框的lisp代码

  [复制链接]
发表于 2011-12-15 18:35 | 显示全部楼层 |阅读模式
本帖最后由 lizhu 于 2012-3-26 10:50 编辑

挂了一个CAD外挂,但图标太多,想用一个image_button对话框集中调用一些功能,每个image_button对应外挂的一个命令。我是菜鸟,写不了lisp代码调用命令,恳请高手编一个。


已知DCL的fil1至fil6 对应 fil1_sld至fil6_sld,相对应的外挂命令是yx_yt、yx_roo、yx_dfx、yx_dad、yx_sg、yx_4mi。
外挂安装在d:\cad下

DCL对话框:
dcl_settings : default_dcl_settings{audit_level = 0;}
ima_but:image_button{width=16;aspect_ratio=0.6;color=152;}
fil:dialog{label="常用功能";
:row{
:ima_but{key="fil1";}
:ima_but{key="fil2";}
:ima_but{key="fil3";}
}
:row{
:ima_but{key="fil4";}
:ima_but{key="fil5";}
:ima_but{key="fil6";}
}
:row{fixed_width=true; alignment=centered;
cancel_button;
}
}
==============








发表于 2011-12-17 09:09 | 显示全部楼层
本帖最后由 ZZXXQQ 于 2023-9-12 00:04 编辑

  1. (defun c:tt ()
  2. (if (> (setq dcl_id (load_dialog (findfile "fil.dcl"))) 0) (progn
  3.   (if (new_dialog "fil" dcl_id "") (progn
  4.    (showsld)
  5.    (action_tile "fil1" "(done_dialog 1)")
  6.    (action_tile "fil2" "(done_dialog 2)")
  7.    (action_tile "fil3" "(done_dialog 3)")
  8.    (action_tile "fil4" "(done_dialog 4)")
  9.    (action_tile "fil5" "(done_dialog 5)")
  10.    (action_tile "fil6" "(done_dialog 6)")
  11.    (action_tile "cancel" "(done_dialog 0)")
  12.    (setq re (start_dialog))
  13.   )
  14.    (princ "\n无法显示对话框!")
  15.   )
  16.   (unload_dialog dcl_id)
  17. )
  18.   (princ "\n无法加载对话框!")
  19. )
  20. (cond
  21.   ((= re 1) (load "d:/cad/yx_yt") (c:yx_yt))
  22.   ((= re 2) (load "d:/cad/yx_roo") (c:yx_roo))
  23.   ((= re 3) (load "d:/cad/yx_dfx") (c:yx_dfx))
  24.   ((= re 4) (load "d:/cad/yx_dad") (c:yx_dad))
  25.   ((= re 5) (load "d:/cad/yx_sg") (c:yx_sg))
  26.   ((= re 6) (load "d:/cad/yx_4mi") (c:yx_4mi))
  27. )
  28. (princ)
  29. )
  30. ;已知DCL的fil1至fil6 对应 fil1_sld至fil6_sld
  31. (defun showsld ()
  32. (setq sldname "fil" i 1)
  33. (repeat 6
  34.   (setq sldnm (strcat sldname (itoa i))
  35.         x (dimx_tile sldnm)
  36.         y (dimy_tile sldnm))
  37.   (if (setq sld (findfile (strcat sldnm "_sld.sld"))) (progn
  38.    (start_image sldnm)
  39.    (fill_image 0 0 x y -2)
  40.    (slide_image 0 0 x y sld)
  41.    (end_image)
  42.   )
  43.    (set_tile sldnm (strcat sldnm "_sld.sld"))
  44.   )
  45.   (setq i (1+ i))
  46. )
  47. )
 楼主| 发表于 2011-12-17 10:18 | 显示全部楼层
感谢大大!
可是为什么我加载输入tt命令对话框一闪就不见了呢???
还有我需要加载sld幻灯片的代码,就是 fil1对 fil1_sld,fil2对 fil2_sld.............
 楼主| 发表于 2011-12-17 14:28 | 显示全部楼层
找到问题了,老大的(defun sowsld ()漏了一个字母,应是(defun showsld ()。
可问题是点幻灯片调用不了外挂命令呀。
发表于 2012-2-17 21:24 | 显示全部楼层
shousld函数重名了。所以只能有一个程序能正常执行。
发表于 2013-1-29 14:44 | 显示全部楼层
lizhu 发表于 2011-12-17 14:28
找到问题了,老大的(defun sowsld ()漏了一个字母,应是(defun showsld ()。
可问题是点幻灯片调用不了外挂 ...

为什么不显示名字?只有白色底子
(defun c:tt ()
(if (> (setq dcl_id (load_dialog (findfile "fil.dcl"))) 0) (progn
  (if (new_dialog "fil" dcl_id "") (progn
   (showsld)
   (action_tile "画箭头" "(done_dialog 1)")
   (action_tile "fil2" "(done_dialog 2)")
   (action_tile "fil3" "(done_dialog 3)")
   (action_tile "fil4" "(done_dialog 4)")
   (action_tile "fil5" "(done_dialog 5)")
   (action_tile "fil6" "(done_dialog 6)")
   (action_tile "cancel" "(done_dialog 0)")
   (setq re (start_dialog))
  )
   (princ "\n无法显示对话框!")
  )
  (unload_dialog dcl_id)
)
  (princ "\n无法加载对话框!")
)
(cond
  ((= re 1) (load "D:/soft/工具/画箭头.lsp") (c:hjt))
  ((= re 2) (load "d:/cad/yx_roo") (c:yx_roo))
  ((= re 3) (load "d:/cad/yx_dfx") (c:yx_dfx))
  ((= re 4) (load "d:/cad/yx_dad") (c:yx_dad))
  ((= re 5) (load "d:/cad/yx_sg") (c:yx_sg))
  ((= re 6) (load "d:/cad/yx_4mi") (c:yx_4mi))
)
(princ)
)
;已知DCL的fil1至fil6 对应 fil1_sld至fil6_sld
(defun showsld ()
(setq sldname "fil" i 1)
(repeat 6
  (setq sldnm (strcat sldname (itoa i))
        x (dimx_tile sldnm)
        y (dimy_tile sldnm))
  (if (setq sld (findfile (strcat sldnm "_sld.sld"))) (progn
   (start_image sldnm)
   (fill_image 0 0 x y -2)
   (slide_image 0 0 x y sld)
   (end_image)
  )
   (set_tile sldnm (strcat sldnm "_sld.sld"))
  )
  (setq i (1+ i))
)
)

dcl_settings : default_dcl_settings{audit_level = 0;}
ima_but:image_button{width=8;aspect_ratio=0.6;color=255;}
fil:dialog{label="常用功能";
:row{
     :boxed_column{
     fixed_width=true;
     label="图层类";
:ima_but{key="画箭头";}
:ima_but{key="fil2";}
:ima_but{key="fil3";}
}
}
:row{
:ima_but{key="fil4";}
:ima_but{key="fil5";}
:ima_but{key="fil6";}
}
:row{fixed_width=true; alignment=centered;
cancel_button;
}
}

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2022-8-2 11:31 | 显示全部楼层
本帖最后由 lee50310 于 2022-8-2 18:45 编辑

提供一個完整的範例(含幻燈片) 可參考看看

檔案存放路徑 d槽 temp 目錄下
若放在其他地方 則需修改 程式中的 路徑  (setq path "D:\\TEMP\\")
執行指令:tt2

效果如動態圖


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-9-11 22:17 | 显示全部楼层

这里就执行不了

点评

再下载一次试试  发表于 2023-9-12 00:07
发表于 2023-9-12 12:15 | 显示全部楼层
shcvip 发表于 2023-9-11 22:17
这里就执行不了

(load_dialog (findfile "fil.dcl"))
程序停在这里了。
发表于 2023-9-12 14:14 | 显示全部楼层



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-17 11:48 , Processed in 0.277567 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表