明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1085|回复: 2

[已解决][求助][求助]

[复制链接]
发表于 2008-1-19 19:32 | 显示全部楼层 |阅读模式
本帖最后由 作者 于 2008-1-19 22:05:19 编辑

小弟刚学lisp.用的是AutoLisp&DCL基础篇这本书,看到书上这段程序时,调试了好多次都不行。
希望各位高手有时间帮小弟看一下。
  1. (defun c:dia6b()
  2.    (setvar "cmdecho" 0)
  3.    (setq blkname "dia6att")
  4.    (dcl_dia6b)
  5.    (prin1)
  6. )
  7. (defun c:dia6b1()
  8.    (setvar "cmdecho" 0)
  9.    (setq blkname "dia6att")
  10.    (setq dd 99)
  11.    (while (>= dd 1)
  12.           (dcl_dia6b)
  13.    )
  14.    (prin1)
  15. )
  16. (defun dcl_dia6b()
  17.    (setq dcl_id (load_dialog "dia6b"))
  18.    (new_dialog "dia6b" dcl_id)
  19.    (setq defkey1 "rb14" defkey2 "rb21")
  20.    (set_tile defkey1 "1")
  21.    (set_tile defkey2 "1")
  22.    (setq name(get_attr defkey1 "label"))
  23.    (setq ssca(get_attr defkey2 "label"))
  24.    (action_tile "rb11" "(setq name(get_attr $key "label"))")
  25.    (action_tile "rb12" "(setq name(get_attr $key "label"))")
  26.    (action_tile "rb13" "(setq name(get_attr $key "label"))")
  27.    (action_tile "rb14" "(setq name(get_attr $key "label"))")
  28.    (action_tile "rb21" "(setq ssca(get_attr $key "label"))")
  29.    (action_tile "rb22" "(setq ssca(get_attr $key "label"))")
  30.    (action_tile "rb23" "(setq ssca(get_attr $key "label"))")
  31.    (action_tile "rb24" "(setq ssca(get_attr $key "label"))")
  32.    (action_tile "rb25" "(setq ssca(get_attr $key "label"))")
  33.    (action_tile "ins_ok" "(ok_dia6b)(done_dialog 1)")
  34.    (setq dd(start_dialog))
  35.    (if (= dd 1)
  36.        (progn
  37.   ;(setq inspt (getpoint "\n选取属性图块的插入点:"))
  38.          ;(command "insert" blkname inspt 1 1 0 dwgnum name ssca)
  39.          ;(command "insert" blkname "x" 1 "y" 1 "r" 0 pause dwgnum name ssca)
  40.           (command "insert" blkname '(0 0) 1 1 0 dwgnum name ssca)
  41.           (command "move" (entlast) "" '(0 0) pause)  
  42.        )
  43.    )
  44. )
  45. (defun ok_dia6b()
  46.    (setq dwgnum (get_tile "dwgnum"))
  47. )

以下是对话框DCl:
  1. dia6b:dialog{
  2. label="轻松掌握 radio_button 单选按钮";
  3.   :text{label="【 插入带有属性的图块 DIA6B 】";
  4.         alignment=centered;
  5.   }
  6.   :row{
  7.      :boxed_radio_column{
  8.         label="设计者";
  9.         :radio_button{label="忍者龟";key="rb11";}
  10.         :radio_button{label="小叮当";key="rb12";}
  11.         :radio_button{label="钟楼怪人";key="rb13";}
  12.         :radio_button{label="无敌铁金刚";key="rb14";value="1";}
  13.      }
  14.      :boxed_radio_column{
  15.         label="比例";
  16.         :radio_button{label="1/1";  key="rb21";value="1";}
  17.         :radio_button{label="1/30"; key="rb22";}
  18.         :radio_button{label="1/50"; key="rb23";}
  19.         :radio_button{label="1/100";key="rb24";}
  20.         :radio_button{label="1/200";key="rb25";}
  21.      }
  22.   }
  23.   :edit_box{
  24.      label="图档编号";
  25.      key="dwgnum";
  26.      edit_width=8;
  27.      edit_limit=8;
  28.      fixed_width=true;
  29.   }
  30.   spacer_1;
  31.   :row{
  32.       fixed_width = true;
  33.       alignment = centered;
  34.      :button{
  35.         label="插入图块";
  36.         key="ins_ok";
  37.         width=8;
  38.     }
  39.     : spacer {width = 2;}
  40.     cancel_button;
  41.   }
  42. }


[upload=rar]

本帖子中包含更多资源

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

x
发表于 2008-1-19 21:13 | 显示全部楼层
本帖最后由 作者 于 2008-1-19 21:17:55 编辑

插入图块前要关闭对话框显示。书本写得太繁琐了。
  1. (defun c:dia6b()
  2. (setvar "cmdecho" 0)
  3. (setq blkname "dia6att")
  4. (dcl_dia6b)
  5. (prin1)
  6. )
  7. (defun c:dia6b1()
  8. (setvar "cmdecho" 0)
  9. (setq blkname "dia6att")
  10. (while (>= dd 1) (dcl_dia6b))
  11. (prin1)
  12. )
  13. (defun dcl_dia6b()
  14. (setq dcl_id (load_dialog "dia6b"))
  15. (new_dialog "dia6b" dcl_id)
  16. (action_tile "ins_ok" "(ok_dia6b)(done_dialog 1)")
  17. (action_tile "cancel" "(done_dialog 0)")
  18. (setq dd (start_dialog))
  19. (if (= dd 1) (progn
  20.    ;(setq inspt (getpoint "\n选取属性图块的插入点:"))
  21.           ;(command "insert" blkname inspt 1 1 0 dwgnum name ssca)
  22.           ;(command "insert" blkname "x" 1 "y" 1 "r" 0 pause dwgnum name ssca)
  23.   (setvar "ATTDIA" 0)
  24.   (command "-insert" blkname '(0 0) 1 1 0 dwgnum nm ssca)
  25.   (setvar "ATTDIA" 1)
  26.   (command "move" "L" "" '(0 0) pause)  
  27. ))
  28. )
  29. (defun ok_dia6b()
  30. (setq nm (get_attr (get_tile "sj") "label"))
  31. (setq scca (get_attr (get_tile "bl") "label"))
  32. (setq dwgnum (get_tile "dwgnum"))
  33. )
  1. dia6b:dialog{
  2. label="轻松掌握 radio_button 单选按钮";
  3. :text{label="【 插入带有属性的图块 DIA6B 】";alignment=centered;}
  4. :row{
  5.   :boxed_radio_column{
  6.    label="设计者";
  7.    key=sj;
  8.    :radio_button{label="忍者龟";key="rb11";}
  9.    :radio_button{label="小叮当";key="rb12";}
  10.    :radio_button{label="钟楼怪人";key="rb13";}
  11.    :radio_button{label="无敌铁金刚";key="rb14";value="1";}
  12.   }
  13.   :boxed_radio_column{
  14.    label="比例";
  15.    key=bl;
  16.    :radio_button{label="1/1";  key="rb21";value="1";}
  17.    :radio_button{label="1/30"; key="rb22";}
  18.    :radio_button{label="1/50"; key="rb23";}
  19.    :radio_button{label="1/100";key="rb24";}
  20.    :radio_button{label="1/200";key="rb25";}
  21.   }
  22. }
  23. :edit_box{label="图档编号";key="dwgnum";edit_width=8;edit_limit=8;fixed_width=true;}
  24. spacer_1;
  25. :row{
  26.   fixed_width = true;
  27.   alignment = centered;
  28.   :button{label="插入图块";key="ins_ok";width=8;}
  29.   : spacer {width = 2;}
  30.   cancel_button;
  31. }
  32. }
 楼主| 发表于 2008-1-19 21:58 | 显示全部楼层
本帖最后由 作者 于 2008-1-19 22:03:32 编辑

原来是忘了更改attdia这个系统变量

谢谢ZZXXQQ版主,每次都这么及时的解决我的问题


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

本版积分规则

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

GMT+8, 2024-5-13 11:11 , Processed in 0.140806 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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