找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2235|回复: 6

[求助] [求助]:请问如何实现点击dcl对话框中按钮执行lisp程序!

[复制链接]
发表于 2005-11-29 16:53:27 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
请问如何实现点击dcl对话框中按钮执行lisp程序!
我想把积累的lisp小程序合在一块,通过面板中的按钮点击执行.
谢谢赐教!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-11-29 18:48:59 | 显示全部楼层
到这里看一下,或许对你有帮助
http://p4.xdcad.net/forum/showth ... y=&pagenumber=1
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-30 10:09:02 | 显示全部楼层
非常感谢似水无痕,我会珍惜你提供的资料.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-30 10:13:16 | 显示全部楼层
不用感谢,我只是转个贴而已!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-30 11:52:35 | 显示全部楼层
似水无痕 ,你好,你能帮我写个范例吗?因本人愚昧,很喜欢这个.
代码:加宽直线(defun c:lw()
    (progn(write-line"\n 选择实体:")
        (setq selet (ssget))
    )
    (setq pw (getreal "\n输入线宽:"))
    (setq n 0)
    (if(/= selet nil)
    (repeat(sslength selet)
        (setq entname(ssname selet n))
        (setq ent (entget entname))
        (setq name (cdr(assoc 0 ent)))
    (if(or(= name "LINE")(= name "ARC"))
          (command"pedit"entname"y""w" pw \r)
    )
    (if(= name "LWPOLYLINE")
        (command "pedit" entname "w" pw \r)
    )
          (setq n (1+ n))
          )
          )
(princ)
)
         
弧长标注
(defun C:hu (/ obj sel el e r ang angs ange larc pnt multi)
  (setvar "CMDECHO" 0)
  (setq multi (getvar 'dimlfac));;;add 2002.5.15 can remove
  (setq obj (entsel "\nSelect ARC:<Exit> "))
  (setq sel (car obj))
  
  (setq pnt (getpoint "point"))
   
  (terpri)
  (if (/= sel nil)
    (progn
      (setq el (entget sel))
      
      (setq e (assoc 0 el))
      (if (= "ARC" (cdr e))
        (progn
          (setq r (assoc 40 el))
          (setq r (cdr r))
          (setq angs (assoc 50 el))
          (setq angs (cdr angs))
          (setq ange (assoc 51 el))
          (setq ange (cdr ange))
          (setq ang (- ange angs))
          (if (< ang 0)
            (setq ang (- (* 2 pi) (abs ang)))
          )
          (setq larc (* r ang))
          (setq larc (* larc multi));;;add 2002.2.20 can remove
                                   ;;;add muti as multiple
          ;;;(princ "Angle = ")
          ;;;(prin1 (* (/ ang pi) 180))
          ;;;(princ " , Radius = ")
          ;;;(prin1 r)
          ;;;(princ "\nLength of ARC is : ")
          ;;;(prin1 larc)

          
        )
        (princ "Object is not a ARC !")
      )
    )
  )
  (setq larc  (rtos larc 2 1) )
(command "dimangular"  obj  "t" larc pnt )
  (princ)
)
期待佳音,非常感谢!
摸索了好几天一直搞不懂,万般无奈只有向你讨教了.
哈哈,见笑

附我想要的面板:
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-11-30 12:36:55 | 显示全部楼层
哪里都是长老和斑竹的程序,我用的是下拉列表框,大概改了一下,你试试好用么?
lsp文件:

  1.   [FONT=courier new]
  2. ;;
  3. (defun c:test2 (/ dcl_id do_what)
  4.   (if (> 0 (setq dcl_id (load_dialog "tslisp02.dcl")))
  5.     (progn
  6.       (princ "\n未能加载对话框文件:tslisp02.dcl")
  7.       (setq dialogloaded nil)
  8.     )
  9.   )
  10.   (setq do_what 2)
  11.   (while (>= do_what 2)
  12.     (if        (= null (new_dialog "tslisp02" dcl_id))
  13.       (progn
  14.         (princ "\n未能显示输入键槽参数对话框。")
  15.         (setq dialogshow nil)
  16.         (exit)
  17.       )                                        ;progn结束
  18.     )
  19.     (action_tile "p_list" "(p_list)")
  20.     (action_tile
  21.       "accept"
  22.       "(done_dialog 1)"
  23.     )
  24.     (action_tile "cancel" "(done_dialog 0)")
  25.     (setq do_what (start_dialog))
  26.     (cond ((= do_what 1)
  27.            (if (= p_command "lw")
  28.              (c:lw)
  29.            )
  30.            (if (= p_command "hu")
  31.              (c:hu)
  32.            )
  33.           )
  34.           ((= do_what 0)
  35.            (exit)
  36.            (prompt "\n对话框被取消。")
  37.           )
  38.     )
  39.     (unload_dialog dcl_id)
  40.   )
  41. )
  42. (defun p_list ()
  43.   (setq        pr_index  (get_tile "p_list")
  44.         pr_list          '("lw" "hu")
  45.         p_command (nth (atoi pr_index) pr_list)
  46.   )
  47. )
  48.   [/FONT]


DCL文件:

  1.   [FONT=courier new]
  2. tslisp02:dialog{
  3.         label="LISP程式列表";
  4.         spacer;
  5.                 :popup_list{
  6.                         label="列表:";
  7.                         key="p_list";
  8.                         width=12;
  9.                         list="lw\nhu";
  10.                         value="lw";
  11.                 }
  12.                 spacer;
  13.         ok_cancel;
  14. }
  15.   [/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-11-30 18:45:01 | 显示全部楼层
谢谢,我先试试.再行恢复!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2025-9-28 20:47 , Processed in 0.469354 second(s), 45 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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