明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 5132|回复: 6

DCL对话框高手路过的帮忙看看哪出问题了!

[复制链接]
发表于 2011-12-20 17:39 | 显示全部楼层 |阅读模式
本帖最后由 328302216 于 2011-12-21 10:47 编辑

AutoCAD完全应用指南》P282页的代码,执行之后没有得到书上的结果,是不是书上的代码本身有问题?
  1. (defun c:dia5b()
  2.   (setvar "cmdecho" 0)
  3.   (dcl_dia5b)
  4.   (prin1)
  5.   )

  6. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  7. (defun dcl_dia5b()          ;子程序
  8.   (setq dcl_id (load_dialog "dia5b"))      ;加载dcl文件
  9.   (new_dialog "dia5b" dcl_id)        ;启动dia5b对话框
  10.   (set_tile "kww" "50")          ;设置ww起始值
  11.   (set_tile "khh" "50")          ;设置hh起始值
  12.   (action_tile "bb1" "(get_ww_hh) (done_dialog 1)")  ;退出对话框并返回1
  13.   (action_tile "bb2" "(get_ww_hh) (done_dialog 2)")  ;……………………2
  14.   (action_tile "bb3" "(get_ww_hh) (done_dialog 3)")  ;……………………3
  15.   (setq dd (start_dialog))
  16.   (cond ((= dd 1) (c:dia5b1))
  17.   ((= dd 2) (c:dia5b2))
  18.   ((= dd 3) (c:dia5b3))
  19.   (t (alert "\n未完成任何操作!!!"))
  20.   )
  21.   )

  22. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  23. (defun get_ww_hh()          ;获取对话框的ww与hh值
  24.   (setq ww (atof (get_tile "kww")))
  25.   (setq hh (atof (get_tile "khh")))
  26.   )

  27. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  28. (defun c:dia5b1()          ;L形主程序
  29.   (setvar "cmdecho" 0)
  30.   (get_input_data)
  31.   (command "pline" p1 p2 p3 pm34 pm pm14 "c")
  32.   (prin1)
  33.   )

  34. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  35. (defun c:dia5b2()          ;X行子程序
  36.   (setvar "cmdecho" 0)
  37.   (get_input_data)
  38.   (command "pline" p1 p2 p3 p4 "c")
  39.   (command "line" p1 p3 "")
  40.   (command "line" p2 p4 "")
  41.   (prin1)
  42.   )

  43. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  44. (defun c:dia5b3()          ;沙漏型子程序
  45.   (setvar "cmdecho" 0)
  46.   (get_input_data)
  47.   (command "pline" p1 p2 p4 p3 "c")
  48.   (prin1)
  49.   )

  50. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

  51. (defun get_input_data()
  52.   ;;;(setq ww (getreal "宽度 WW:"))
  53.   ;;;(setq hh (getreal "\n高度 HH:"))
  54.   (setq p1 (getpoint "\n插入点:"))
  55.   (setq p2(polar p1 0 ww))
  56.   (setq p3 (polar p2 (* pi 0.5) hh))
  57.   (setq p4 (polar p3 pi ww))
  58.   (setq pm (inters p1 p3 p2 p4))
  59.   (setq pm12 (polar p1 0 (* ww 0.5)))
  60.   (setq pm34 (polar p3 pi (* ww 0.5)))
  61.   (setq pm23 (polar p2 (* pi 0.5) (* hh 0.5)))
  62.   (setq pm14 (polar p1 (* pi 0.5) (* hh 0.5)))
  63.   )

路过的帮忙看看!执行后弹出的是子程序(defun dcl_dia5b)里面的“未完成任何操作!!!”

本帖被以下淘专辑推荐:

 楼主| 发表于 2011-12-21 11:27 | 显示全部楼层
哪位大哥有《AutoCAD完全应用指南》这本书的?或者其他高手帮忙看看是哪里的问题啊  
不过我觉得《AutoCAD完全应用指南》这本书错误的地方也真的有点多!!!
 楼主| 发表于 2011-12-21 17:33 | 显示全部楼层
各位大侠们,帮看看到底要怎么整才有效果啊!是书上错的还是我操作的问题?我按照书上一步一步的操作还是得不到效果啊!后面的这个也得不到效果!
  1. dia5d:dialog{
  2.   label="对话框<text>文字实例测试";
  3.   :concatenation{
  4.   :text_part {label="共选择了[";}
  5.   :text{width=6;key="t_cir";}
  6.   :text_part{label="]个 CIRCLE";}
  7. }
  8.   :concatenation{
  9.   :text_part {label="共选择了[";}
  10.   :text{width=6;key="t_line";}
  11.   :text_part{label="]个 LINE";}
  12. }
  13.   :concatenation{
  14.   :text_part {label="共选择了[";}
  15.   :text{width=6;key="t_text";}
  16.   :text_part{label="]个 TEXT";}
  17. }
  18.   ok_cancel;
  19. }
  1. (defun c:dia5d()
  2.   (setvar "cmdecho" 0)
  3.   (sub_dia5d)    ;调用子程序
  4.   (if ss (dcl_dia5d))  ;调用对话框子程序
  5.   (prin1)
  6.   )
  7. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  8. (defun sub_dia5d()
  9.   (setq ss (ssget))  ;选择对象
  10.   (if(null ss)(setq ss (ssadd)))  ;如果ss不存在,设置ss为空选集
  11.   (setq cir_num 0 line_num 0 text_num 0)  ;设置默认起始值
  12.   (setq n 0)
  13.   (repeat (sslength ss)
  14.     (setq en (ssname ss n))
  15.     (setq entype (cdr (assoc 0 (entget en))))  ;获取对象类别
  16.     (cond ((= entype "CIRCLE") (setq cir_num (+ 1 cir_num)))
  17.     ((= entype "LINE") (setq line_num (+ 1 line_num)))
  18.     ((= entype "TEXT") (setq text_num (+ 1 text_num)))
  19.       )
  20.     (setq n(+ 1 n))
  21.     )
  22.   )
  23. ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
  24. (defun dcl_dia5d()
  25.   (setq dcl_id (load_dialog "dia5d"))  ;加载DCL文件
  26.   (if (not (new_dialog "dia5d" dcl_id))(exit))  ;启动对话框
  27.   (set_tile "t_cir" (itoa cir_num))  ;显示圆的统计数量于对话框
  28.   (set_tile "t_line" (itoa line_num))  ;显示直线的统计数量于对话框
  29.   (set_tile "t_text" (itoa text_num))  ;显示文字的统计数量与对话框
  30.   (setq dd (start_dialog))
  31.   )

 楼主| 发表于 2011-12-21 17:36 | 显示全部楼层
后面的这个也是书上面的,对于各位老大们来说帮可能的只是一个小忙,但是对于我来说可是大忙了!
 楼主| 发表于 2011-12-21 17:44 | 显示全部楼层
终于自己整出来了
发表于 2012-4-20 22:54 | 显示全部楼层

大半个月也没人来过
发表于 2022-4-22 21:35 | 显示全部楼层
没有啥问题,需要仔细一点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-18 20:45 , Processed in 0.288396 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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