明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2664|回复: 12

请问幻灯片如何与按钮关联

  [复制链接]
发表于 2008-6-27 00:22 | 显示全部楼层 |阅读模式

以上是对话框文件,请问如何才能实现点击按钮"左上"时在幻灯片显示的地方显示名为"左上"的幻灯片,点击按钮"右上"时在幻灯片显示的地方就切换为"右上"的幻灯片,以此类推......

本帖子中包含更多资源

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

x
发表于 2008-6-27 09:50 | 显示全部楼层
本帖最后由 作者 于 2008-6-30 8:22:24 编辑

  1. hjwt:dialog{
  2. label="绘制虾壳弯头程序:M6";        
  3. :cluster {
  4.   :row {    //建立横列元件
  5.    :image{key="img";width=36;height=12;color=-3;}    //建立影象元件
  6.   }                //关闭横列元件
  7.   : boxed_column {                //带注释框的列,框名:"绘图数据:"
  8.    label="绘图数据:";
  9.    : edit_box {label="输入虾壳弯管外径:";key="DW";edit_width=6;}
  10.    : edit_box {label="输入虾接弯曲半径:";key="R";edit_width=6;}
  11.    : edit_box {label="输入虾接弯角角度:";key="V";edit_width=6;}
  12.    : edit_box {label="输入虾接切分数量:";key="N";edit_width=6;}
  13.    : button {label="(原点绘图)/拾取>>";key="pick";}
  14.   }
  15. }
  16. : radio_row {
  17.   key="htfx";
  18.   value="0°";
  19.   spacer;
  20.   :radio_button {label="左上";key="0°";}
  21.   spacer;
  22.   :radio_button {label="右上";key="90°";}
  23.   spacer;
  24.   :radio_button {label="右下";key="180°";}
  25.   spacer;
  26.   :radio_button {label="左下";key="270°";}
  27.   :toggle{label="标注";value=1;key="bz";}
  28.   spacer;
  29. }
  30. ok_cancel;
  31. }
  32. 主程序:
  33. ……
  34.   (action_tile "htfx" "(showsld $value)")
  35. ……
  36. 子程序定义:
  37. (defun showsld (stt / sldnm tile_v tile_h)
  38. (cond
  39.   ((= stt "0°") (setq sldnm "hdfx0.sld"))
  40.   ((= stt "90°") (setq sldnm "hdfx90.sld"))
  41.   ((= stt "180°") (setq sldnm "hdfx180.sld"))
  42.   ((= stt "270°") (setq sldnm "hdfx270.sld"))
  43. )
  44. (start_image "img")
  45. (setq tile_v (dimy_tile "img")
  46.        tile_h (dimx_tile "img"))
  47. (fill_image 0 0 tile_h tile_v -3)
  48. (slide_image 0 0 tile_h tile_v sldnm)
  49. (end_image)
  50. )
 楼主| 发表于 2008-6-27 21:57 | 显示全部楼层

感谢斑竹提示,使用以上程序后出现如下问题:

1,当初次显示对话框时:默认的"hdfx0.sld"不会自动显示,需点击"右上"或其他按钮后才会显示幻灯片图象.

2.:toggle{label="标注";value=1;key="bz";}这句失效,一旦点击则提示; error: bad argument type: stringp nil后退出.

请帮忙核查原因,谢谢

发表于 2008-6-27 22:10 | 显示全部楼层
将你的代码贴上来,不然没法找原因。
 楼主| 发表于 2008-6-27 22:24 | 显示全部楼层

麻烦斑竹了...

本帖子中包含更多资源

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

x
发表于 2008-6-28 10:09 | 显示全部楼层
本帖最后由 作者 于 2008-6-30 8:24:09 编辑

改了改,兼容R14版。
  1. hjwt:dialog{
  2. label="绘制虾壳弯头程序:M6";        
  3. :cluster {
  4.   :row {    //建立横列元件
  5.    :image{key="img";width=36;height=12;color=-3;}    //建立影象元件
  6.   }                //关闭横列元件
  7.   : boxed_column {                //带注释框的列,框名:"绘图数据:"
  8.    label="绘图数据:";
  9.    : edit_box {label="输入虾壳弯管外径:";key="DW";edit_width=6;}
  10.    : edit_box {label="输入虾接弯曲半径:";key="R";edit_width=6;}
  11.    : edit_box {label="输入虾接弯角角度:";key="V";edit_width=6;}
  12.    : edit_box {label="输入虾接切分数量:";key="N";edit_width=6;}
  13.    : button {label="(原点绘图)/拾取>>";key="pick";}
  14.   }
  15. }
  16. :toggle{label="标注";value="1";key="bz";}
  17. : radio_row {
  18.   key="htfx";
  19.   value="a0";
  20.   spacer;
  21.   :radio_button {label="左上";key="a0";}
  22.   spacer;
  23.   :radio_button {label="右上";key="a90";}
  24.   spacer;
  25.   :radio_button {label="右下";key="a180";}
  26.   spacer;
  27.   :radio_button {label="左下";key="a270";}
  28.   spacer;
  29. }
  30. ok_cancel;
  31. }
  1. ; 绘制虾壳管
  2. ;程序成功调入提示信息
  3. (if (> (ATOI (GETVAR "ACADVER")) 18) (setvar "AUTOSNAP" 47))  ;打开极轴
  4. (if (> (atoi (getvar "ACADVER")) 14) (setvar "osmode" 15359)) ;恢复对象捕捉  
  5. (princ "\n欢迎使用虾壳管弯头绘制程序,需要启动请敲: hjwt")
  6. ;;;;;;;;;;取得由对话框输入的关键值模块;;;;;;;;;
  7. (defun getdata ()                   ;用于取得由对话框输入的关键值   
  8. (setq DW (atof (get_tile "DW"))    ;抽取对话框D并付值于D
  9.             R  (atof (get_tile "R"))     ;抽取对话框R并付值于R
  10.             V  (atof (get_tile "V"))     ;抽取对话框V并付值于V
  11.             N  (atof (get_tile "N"))     ;抽取对话框N并付值于N
  12. )
  13. (prin1 (get_tile "bz"))
  14. (setq A90  (atoi (get_tile "a90"))
  15.             A180 (atoi (get_tile "a180"))
  16.             A270 (atoi (get_tile "a270"))
  17.             htfx (get_tile "htfx")
  18. )
  19. (setq bz   (atoi (get_tile "bz")))
  20. )
  21. ;;;;;;;;;;;标注尺寸;;;;;;;;;
  22. (defun bzcc ()
  23. (command "_dimaligned" PT1 PT3 d1 "_dimaligned" PT4 PT2 d2)
  24. )
  25. ;;;;;;;;;;;变化坐标;;;;;;;;
  26. (defun xgzbx1 () (command "_ucs" "y" "180"))
  27. (defun xgzbx2 () (command "_ucs" "z" "180"))
  28. (defun xgzbx3 () (command "_ucs" "x" "180"))
  29. ;;;;;;;;;;数据处理模块;;;;;;;;
  30. (defun cal_draw ()
  31. (setq Y1 0                      ;为变量x1赋初值
  32.             X1 0                      ;为变量y1赋初值
  33.             pt1 (list X1 Y1)          ;将坐标X1,Y1赋给PT1点
  34.             pt2 (list Y1 X1)          ;将坐标Y1,X1赋给PT2点
  35.             A   (- R (/ DW 2))
  36.             B   (+ R (/ DW 2))
  37.             Y   (* (/ (/ V (* (- N 1) 2)) 180) PI)
  38.             X1  A
  39.             X2  B
  40.             Y1  0
  41.             Y2  0
  42.             PT1 (list X1 Y1)          ;将坐标X1,Y1赋给PT1点
  43.             PT2 (list X2 Y2)          ;将坐标X2,Y2赋给PT2点
  44.             TT  1
  45. )
  46. (setvar "osmode" 0)             ;关闭对象捕捉
  47. (if (= A90 1) (xgzbx1))
  48. (if (= A180 1) (xgzbx2))
  49. (if (= A270 1) (xgzbx3))
  50. (command ".pline" PT1 PT2 "")   ;用多义线连接点PT1,PT2
  51. (setq A (/ A (cos Y))
  52.             B (/ B (cos Y))
  53. )
  54. (while (< TT (* (- N 1) 2))     ;如果TT<(N-1)*2,就执行以下程序
  55.   (setq X3  (* (cos (* Y TT)) A)
  56.               y3  (* (sin (* Y TT)) A)
  57.               X4  (* (cos (* Y TT)) B)
  58.               y4  (* (sin (* Y TT)) B)
  59.               pt3 (list X3 Y3)        ;将坐标X3,Y3赋给PT3点
  60.               pt4 (list X4 Y4)        ;将坐标X4,Y4赋给PT4点
  61.               XC1 (/ (+ X1 X2) 2)     ;计算点C1的X坐标值
  62.               XC2 (/ (+ X3 X4) 2)     ;计算坐C2的X坐标值
  63.               YC1 (/ (+ Y1 Y2) 2)     ;计算坐C1的Y坐标值
  64.               YC2 (/ (+ Y3 Y4) 2)     ;计算坐C2的Y坐标值
  65.               C1  (list XC1 YC1)      ;将坐标XC1,YC1赋给C1点
  66.               C2  (list XC2 YC2)      ;将坐标XC2,YC2赋给C2点
  67.   )
  68.   (command ".pline" PT1 PT3 PT4 PT2 "")  ;用多义线连接点PT1,PT3,PT4,PT2
  69.   (setq Xd1 (- (/ (+ X1 X3) 2) 20)    ;计算点d1的X坐标值
  70.               Xd2 (+ (/ (+ X2 X4) 2) 20)    ;计算坐d2的X坐标值
  71.               Yd1 (- (/ (+ Y1 Y3) 2) 20)    ;计算坐d1的Y坐标值
  72.               Yd2 (+ (/ (+ Y2 Y4) 2) 20)    ;计算坐d2的Y坐标值
  73.               d1  (list Xd1 Yd1)            ;将坐标Xd1,Yd1赋给d1点
  74.               d2  (list Xd2 Yd2)            ;将坐标Xd2,Yd2赋给d2点
  75.   )
  76.   (command ".line" C1 C2 "")          ;用多义线连接点C1,C2
  77.                                       ;标注PT1到PT3的距离,标注PT4到PT2的距离
  78.   (if (= bz 1) (bzcc))              ;如果bz值为1.0,执行bzcc                          
  79.   (setq X1  X3
  80.               X2  X4
  81.               Y1  Y3
  82.               Y2  Y4
  83.               PT1 PT3
  84.               PT2 PT4
  85.               TT  (+ TT 2)
  86.   )
  87. )
  88. (setq A   (- R (/ DW 2))
  89.              B   (+ R (/ DW 2))
  90.              X3  (* (cos (* (/ V 180) PI)) A)
  91.              y3  (* (sin (* (/ V 180) PI)) A)
  92.              X4  (* (cos (* (/ V 180) PI)) B)
  93.              y4  (* (sin (* (/ V 180) PI)) B)
  94.              pt3 (list X3 Y3)           ;将坐标X3,Y3赋给PT3点
  95.              pt4 (list X4 Y4)           ;将坐标X4,Y4赋给PT4点
  96.              XC1 (/ (+ X1 X2) 2)        ;计算点C1的X坐标值
  97.              XC2 (/ (+ X3 X4) 2)        ;计算坐C2的X坐标值
  98.              YC1 (/ (+ Y1 Y2) 2)        ;计算坐C1的Y坐标值
  99.              YC2 (/ (+ Y3 Y4) 2)        ;计算坐C2的Y坐标值
  100.              C1  (list XC1 YC1)         ;将坐标XC1,YC1赋给C1点
  101.              C2  (list XC2 YC2)         ;将坐标XC2,YC2赋给C2点
  102. )
  103.      ;用直线连接点PT1,PT3,PT4,PT2,C1,C2
  104. (command ".Pline" PT1 PT3 PT4 PT2 "" ".line" C1 C2 "")
  105. (setq Xd1 (- (/ (+ X1 X3) 2) 20)    ;计算点d1的X坐标值
  106.              Xd2 (+ (/ (+ X2 X4) 2) 20)    ;计算坐d2的X坐标值
  107.              Yd1 (- (/ (+ Y1 Y3) 2) 20)    ;计算坐d1的Y坐标值
  108.              Yd2 (+ (/ (+ Y2 Y4) 2) 20)    ;计算坐d2的Y坐标值
  109.              d1  (list Xd1 Yd1)            ;将坐标Xd1,Yd1赋给d1点
  110.              d2  (list Xd2 Yd2)            ;将坐标Xd2,Yd2赋给d2点
  111. )
  112. (if (= bz 1) (bzcc))              ;如果bz值为1.0,执行bzcc
  113. )
  114. ;;;;;;;;;;调取幻灯片;;;;;;;;;
  115. (defun showsld (stt / sldnm tile_v tile_h)
  116. (cond
  117.   ((= stt "a0") (setq sldnm "htfx0.sld"))
  118.   ((= stt "a90") (setq sldnm "htfx90.sld"))
  119.   ((= stt "a180") (setq sldnm "htfx180.sld"))
  120.   ((= stt "a270") (setq sldnm "htfx270.sld"))
  121. )
  122. (start_image "img")
  123. (setq tile_v (dimy_tile "img")
  124.              tile_h (dimx_tile "img"))
  125. (fill_image 0 0 tile_h tile_v -3)
  126. (slide_image 0 0 tile_h tile_v sldnm)
  127. (end_image)
  128. )
  129. ;;;;;;;;;;;;;主程序模块
  130. (defun C:hjwt ()
  131. (if (> (atoi (getvar "ACADVER")) 18) (setvar "DYNmode" 0)) ;关闭动态输入
  132. (setq oldos (getvar "OSMODE"))
  133. (setvar "cmdecho" 0)        ;关闭命令行回现功能
  134. (setq DW 1000               ;给变量赋初值
  135.              R 1000
  136.              V 45
  137.              N 3
  138.              x 0
  139.              y 0
  140.              z 0
  141.              re 3
  142. )
  143. (if (> (setq id (load_dialog "hjwt")) 0) (progn   ;加载 DCL 文件
  144.   (while (> re 1)
  145.    (if (new_dialog "hjwt" id) (progn
  146.     (set_tile "DW" (rtos DW 2 2))
  147.     (set_tile "R" (rtos R 2 2))
  148.     (set_tile "V" (rtos V 2 2))
  149.     (set_tile "N" (rtos N 2 2))
  150.     (setq bz (atoi (get_tile "bz")))
  151.     (setq a90  (get_tile "a90")
  152.                 a180 (get_tile "a180")
  153.                 a270 (get_tile "a270")
  154.                 htfx (get_tile "htfx")
  155.     )
  156.     (if (= what 3) (showsld "a0"))
  157.     (action_tile "htfx" "(showsld $value)")
  158.     (action_tile "pick" "(done_dialog 2)")
  159.     (action_tile "accept" "(getdata)(done_dialog 1)")
  160.     (action_tile "cancel" "(done_dialog 0)")
  161.     (setq re (start_dialog))
  162.     (if (= re 2) (progn
  163.      (initget 1)
  164.      (setq pt_base (getpoint "\n选取绘图点位置:")
  165.         x       (car pt_base)
  166.         y       (cadr pt_base)
  167.                   z       (caddr pt_base)
  168.      )
  169.      (setq re 2)
  170.     ))
  171.    )
  172.     (alert "Unable to display dialog box!\n无法显示对话框!")
  173.    )
  174.   )
  175.   (unload_dialog id)             ;卸载该对话框
  176. )
  177.   (alert "Unable to load dialog box!\n无法装载对话框!")
  178. )
  179. (if (= re 1) (progn
  180.   (setq pt_base (list x y z))
  181.   (command ".ucs" "o" pt_base)
  182.   (cal_draw)
  183.   (PROMPT "\n本次绘图成功!")
  184. )
  185.   (PROMPT "\n您已取消了本次操作!")
  186. )
  187. (if (> (atoi (getvar "ACADVER")) 14) (setvar "AUTOSNAP" 47))  ;打开极轴
  188. (setvar "osmode" oldos) ;恢复对象捕捉
  189. (command ".ucs" "w")
  190. (princ)
  191. )
发表于 2008-6-28 10:12 | 显示全部楼层
改了改,兼容R14版。
  1. hjwt:dialog{
  2. &#160;label="绘制虾壳弯头程序:M6";       &#160;
  3. &#160;:cluster {
  4. &#160; :row {    //建立横列元件
  5. &#160;  :image{key="img";width=36;height=12;color=-3;}    //建立影象元件
  6. &#160; }                //关闭横列元件
  7. &#160; : boxed_column {                //带注释框的列,框名:"绘图数据:"&#160;
  8. &#160;  label="绘图数据:";
  9. &#160;  : edit_box {label="输入虾壳弯管外径:";key="DW";edit_width=6;}
  10. &#160;  : edit_box {label="输入虾接弯曲半径:";key="R";edit_width=6;}
  11. &#160;  : edit_box {label="输入虾接弯角角度:";key="V";edit_width=6;}
  12. &#160;  : edit_box {label="输入虾接切分数量:";key="N";edit_width=6;}
  13. &#160;  : button {label="(原点绘图)/拾取>>";key="pick";}
  14. &#160; }
  15. &#160;}&#160;
  16. &#160;: radio_row {
  17. &#160; key="htfx";
  18. &#160; value="a0";
  19. &#160; spacer;
  20. &#160; :radio_button {label="左上";key="a0";}
  21. &#160; spacer;
  22. &#160; :radio_button {label="右上";key="a90";}
  23. &#160; spacer;
  24. &#160; :radio_button {label="右下";key="a180";}
  25. &#160; spacer;
  26. &#160; :radio_button {label="左下";key="a270";}
  27. &#160; spacer;
  28. &#160; :toggle{label="标注";value="1";key="bz";}
  29. &#160;}
  30. &#160;ok_cancel;
  31. }
  1. ; 绘制虾壳管
  2. ;程序成功调入提示信息
  3. (if (> (ATOI (GETVAR "ACADVER")) 18) (setvar "AUTOSNAP" 47))  ;打开极轴
  4. (if (> (atoi (getvar "ACADVER")) 14) (setvar "osmode" 15359)) ;恢复对象捕捉 &#160;
  5. (princ "\n欢迎使用虾壳管弯头绘制程序,需要启动请敲: hjwt")
  6. ;;;;;;;;;;取得由对话框输入的关键值模块;;;;;;;;;
  7. (defun getdata ()                   ;用于取得由对话框输入的关键值   &#160;
  8. &#160;(setq DW (atof (get_tile "DW"))    ;抽取对话框D并付值于D
  9. &#160; &#160; &#160;&#160;      R  (atof (get_tile "R"))     ;抽取对话框R并付值于R
  10. &#160; &#160; &#160;&#160;      V  (atof (get_tile "V"))     ;抽取对话框V并付值于V
  11. &#160; &#160; &#160;&#160;      N  (atof (get_tile "N"))     ;抽取对话框N并付值于N
  12. &#160;)
  13. &#160;(prin1 (get_tile "bz"))
  14. &#160;(setq A90  (atoi (get_tile "a90"))
  15. &#160; &#160; &#160;&#160;      A180 (atoi (get_tile "a180"))
  16. &#160; &#160; &#160;&#160;      A270 (atoi (get_tile "a270"))
  17. &#160; &#160; &#160;&#160;      htfx (get_tile "htfx")
  18. &#160;)
  19. &#160;(setq bz   (atoi (get_tile "bz")))
  20. )
  21. ;;;;;;;;;;;标注尺寸;;;;;;;;;
  22. (defun bzcc ()
  23. &#160;(command "_dimaligned" PT1 PT3 d1 "_dimaligned" PT4 PT2 d2)
  24. )
  25. ;;;;;;;;;;;变化坐标;;;;;;;;
  26. (defun xgzbx1 () (command "_ucs" "y" "180"))
  27. (defun xgzbx2 () (command "_ucs" "z" "180"))
  28. (defun xgzbx3 () (command "_ucs" "x" "180"))
  29. ;;;;;;;;;;数据处理模块;;;;;;;;
  30. (defun cal_draw ()
  31. &#160;(setq Y1 0                      ;为变量x1赋初值
  32. &#160; &#160; &#160;&#160;      X1 0                      ;为变量y1赋初值
  33. &#160; &#160; &#160;&#160;      pt1 (list X1 Y1)          ;将坐标X1,Y1赋给PT1点
  34. &#160; &#160; &#160;&#160;      pt2 (list Y1 X1)          ;将坐标Y1,X1赋给PT2点
  35. &#160; &#160; &#160;&#160;      A   (- R (/ DW 2))
  36. &#160; &#160; &#160;&#160;      B   (+ R (/ DW 2))
  37. &#160; &#160; &#160;&#160;      Y   (* (/ (/ V (* (- N 1) 2)) 180) PI)
  38. &#160; &#160; &#160;&#160;      X1  A
  39. &#160; &#160; &#160;&#160;      X2  B
  40. &#160; &#160; &#160;&#160;      Y1  0
  41. &#160; &#160; &#160;&#160;      Y2  0
  42. &#160; &#160; &#160;&#160;      PT1 (list X1 Y1)          ;将坐标X1,Y1赋给PT1点
  43. &#160; &#160; &#160;&#160;      PT2 (list X2 Y2)          ;将坐标X2,Y2赋给PT2点
  44. &#160; &#160; &#160;&#160;      TT  1
  45. &#160;)
  46. &#160;(setvar "osmode" 0)             ;关闭对象捕捉
  47. &#160;(if (= A90 1) (xgzbx1))
  48. &#160;(if (= A180 1) (xgzbx2))
  49. &#160;(if (= A270 1) (xgzbx3))
  50. &#160;(command ".pline" PT1 PT2 "")   ;用多义线连接点PT1,PT2
  51. &#160;(setq A (/ A (cos Y))
  52. &#160; &#160; &#160;&#160;      B (/ B (cos Y))
  53. &#160;)
  54. &#160;(while (< TT (* (- N 1) 2))     ;如果TT<(N-1)*2,就执行以下程序
  55. &#160; (setq X3  (* (cos (* Y TT)) A)
  56. &#160; &#160;&#160; &#160;&#160;       y3  (* (sin (* Y TT)) A)
  57. &#160; &#160;&#160; &#160;&#160;       X4  (* (cos (* Y TT)) B)
  58. &#160; &#160;&#160; &#160;&#160;       y4  (* (sin (* Y TT)) B)
  59. &#160; &#160; &#160; &#160;       pt3 (list X3 Y3)        ;将坐标X3,Y3赋给PT3点
  60. &#160; &#160; &#160; &#160;       pt4 (list X4 Y4)        ;将坐标X4,Y4赋给PT4点
  61. &#160; &#160; &#160; &#160;       XC1 (/ (+ X1 X2) 2)     ;计算点C1的X坐标值
  62. &#160; &#160; &#160; &#160;       XC2 (/ (+ X3 X4) 2)     ;计算坐C2的X坐标值
  63. &#160; &#160; &#160; &#160;       YC1 (/ (+ Y1 Y2) 2)     ;计算坐C1的Y坐标值
  64. &#160; &#160; &#160; &#160;       YC2 (/ (+ Y3 Y4) 2)     ;计算坐C2的Y坐标值
  65. &#160;&#160; &#160; &#160;&#160;       C1  (list XC1 YC1)      ;将坐标XC1,YC1赋给C1点
  66. &#160; &#160; &#160; &#160;       C2  (list XC2 YC2)      ;将坐标XC2,YC2赋给C2点
  67. &#160; )
  68. &#160; (command ".pline" PT1 PT3 PT4 PT2 "")  ;用多义线连接点PT1,PT3,PT4,PT2
  69. &#160; (setq Xd1 (- (/ (+ X1 X3) 2) 20)    ;计算点d1的X坐标值
  70. &#160; &#160; &#160; &#160;       Xd2 (+ (/ (+ X2 X4) 2) 20)    ;计算坐d2的X坐标值
  71. &#160; &#160; &#160; &#160;       Yd1 (- (/ (+ Y1 Y3) 2) 20)    ;计算坐d1的Y坐标值
  72. &#160; &#160; &#160; &#160;       Yd2 (+ (/ (+ Y2 Y4) 2) 20)    ;计算坐d2的Y坐标值
  73. &#160; &#160; &#160; &#160;       d1  (list Xd1 Yd1)            ;将坐标Xd1,Yd1赋给d1点
  74. &#160;&#160; &#160; &#160;        d2  (list Xd2 Yd2)            ;将坐标Xd2,Yd2赋给d2点
  75. &#160; )
  76. &#160; (command ".line" C1 C2 "")          ;用多义线连接点C1,C2
  77. &#160;                                     ;标注PT1到PT3的距离,标注PT4到PT2的距离
  78. &#160; (if (= bz 1) (bzcc))              ;如果bz值为1.0,执行bzcc                         &#160;
  79. &#160; (setq X1  X3
  80. &#160; &#160; &#160; &#160;       X2  X4
  81. &#160; &#160; &#160; &#160;       Y1  Y3
  82. &#160; &#160; &#160; &#160;       Y2  Y4
  83. &#160; &#160; &#160; &#160;       PT1 PT3
  84. &#160; &#160; &#160; &#160;       PT2 PT4
  85. &#160; &#160; &#160; &#160;       TT  (+ TT 2)
  86. &#160; )
  87. &#160;)
  88. &#160;(setq A   (- R (/ DW 2))
  89. &#160;&#160; &#160; &#160;       B   (+ R (/ DW 2))
  90. &#160;&#160; &#160; &#160;       X3  (* (cos (* (/ V 180) PI)) A)
  91. &#160;&#160; &#160; &#160;       y3  (* (sin (* (/ V 180) PI)) A)
  92. &#160;&#160; &#160; &#160;       X4  (* (cos (* (/ V 180) PI)) B)
  93. &#160;&#160; &#160; &#160;       y4  (* (sin (* (/ V 180) PI)) B)
  94. &#160;&#160; &#160; &#160;       pt3 (list X3 Y3)           ;将坐标X3,Y3赋给PT3点
  95. &#160;&#160; &#160; &#160;       pt4 (list X4 Y4)           ;将坐标X4,Y4赋给PT4点
  96. &#160;&#160; &#160; &#160;       XC1 (/ (+ X1 X2) 2)        ;计算点C1的X坐标值
  97. &#160;&#160; &#160; &#160;       XC2 (/ (+ X3 X4) 2)        ;计算坐C2的X坐标值
  98. &#160;&#160; &#160; &#160;       YC1 (/ (+ Y1 Y2) 2)        ;计算坐C1的Y坐标值
  99. &#160;&#160; &#160; &#160;       YC2 (/ (+ Y3 Y4) 2)        ;计算坐C2的Y坐标值
  100. &#160;&#160; &#160; &#160;       C1  (list XC1 YC1)         ;将坐标XC1,YC1赋给C1点
  101. &#160;&#160; &#160; &#160;       C2  (list XC2 YC2)         ;将坐标XC2,YC2赋给C2点
  102. &#160;)
  103. &#160;    ;用直线连接点PT1,PT3,PT4,PT2,C1,C2
  104. &#160;(command ".Pline" PT1 PT3 PT4 PT2 "" ".line" C1 C2 "")
  105. &#160;(setq Xd1 (- (/ (+ X1 X3) 2) 20)    ;计算点d1的X坐标值
  106. &#160;&#160; &#160; &#160;       Xd2 (+ (/ (+ X2 X4) 2) 20)    ;计算坐d2的X坐标值
  107. &#160;&#160; &#160; &#160;       Yd1 (- (/ (+ Y1 Y3) 2) 20)    ;计算坐d1的Y坐标值
  108. &#160;&#160; &#160; &#160;       Yd2 (+ (/ (+ Y2 Y4) 2) 20)    ;计算坐d2的Y坐标值
  109. &#160;&#160; &#160; &#160;       d1  (list Xd1 Yd1)            ;将坐标Xd1,Yd1赋给d1点
  110. &#160;&#160; &#160; &#160;       d2  (list Xd2 Yd2)            ;将坐标Xd2,Yd2赋给d2点
  111. &#160;)
  112. &#160;(if (= bz 1) (bzcc))              ;如果bz值为1.0,执行bzcc
  113. )
  114. ;;;;;;;;;;调取幻灯片;;;;;;;;;
  115. (defun showsld (stt / sldnm tile_v tile_h)
  116. &#160;(cond
  117. &#160; ((= stt "a0") (setq sldnm "htfx0.sld"))
  118. &#160; ((= stt "a90") (setq sldnm "htfx90.sld"))
  119. &#160; ((= stt "a180") (setq sldnm "htfx180.sld"))
  120. &#160; ((= stt "a270") (setq sldnm "htfx270.sld"))
  121. &#160;)
  122. &#160;(start_image "img")
  123. &#160;(setq tile_v (dimy_tile "img")
  124. &#160; &#160; &#160; &#160;      tile_h (dimx_tile "img"))
  125. &#160;(fill_image 0 0 tile_h tile_v -3)
  126. &#160;(slide_image 0 0 tile_h tile_v sldnm)
  127. &#160;(end_image)
  128. )
  129. ;;;;;;;;;;;;;主程序模块
  130. (defun C:hjwt ()
  131. &#160;(if (> (atoi (getvar "ACADVER")) 18) (setvar "DYNmode" 0)) ;关闭动态输入
  132. &#160;(setq oldos (getvar "OSMODE"))
  133. &#160;(setvar "cmdecho" 0)        ;关闭命令行回现功能
  134. &#160;(setq DW 1000               ;给变量赋初值
  135. &#160; &#160; &#160; &#160;      R 1000
  136. &#160; &#160; &#160; &#160;      V 45
  137. &#160; &#160; &#160; &#160;      N 3
  138. &#160; &#160; &#160; &#160;      x 0
  139. &#160; &#160; &#160; &#160;      y 0
  140. &#160; &#160; &#160; &#160;      z 0
  141. &#160; &#160; &#160; &#160;      re 3
  142. &#160;)
  143. &#160;(if (> (setq id (load_dialog "hjwt")) 0) (progn   ;加载 DCL 文件
  144. &#160; (while (> re 1)
  145. &#160;  (if (new_dialog "hjwt" id) (progn
  146. &#160;   (set_tile "DW" (rtos DW 2 2))
  147. &#160;   (set_tile "R" (rtos R 2 2))
  148. &#160;   (set_tile "V" (rtos V 2 2))
  149. &#160;   (set_tile "N" (rtos N 2 2))
  150. &#160;   (setq bz (atoi (get_tile "bz")))
  151. &#160;   (setq a90  (get_tile "a90")
  152. &#160; &#160; &#160; &#160;         a180 (get_tile "a180")
  153. &#160; &#160; &#160; &#160;         a270 (get_tile "a270")
  154. &#160; &#160; &#160; &#160;         htfx (get_tile "htfx")
  155. &#160;   )
  156. &#160;   (if (= what 3) (showsld "a0"))
  157. &#160;   (action_tile "htfx" "(showsld $value)")
  158. &#160;   (action_tile "pick" "(done_dialog 2)")
  159. &#160;   (action_tile "accept" "(getdata)(done_dialog 1)")
  160. &#160;   (action_tile "cancel" "(done_dialog 0)")
  161. &#160;   (setq re (start_dialog))
  162. &#160;   (if (= re 2) (progn
  163. &#160;    (initget 1)
  164. &#160;    (setq pt_base (getpoint "\n选取绘图点位置:")
  165. &#160;&#160; &#160; &#160; &#160;x       (car pt_base)
  166. &#160;&#160; &#160; &#160; &#160;y       (cadr pt_base)
  167. &#160;&#160;&#160; &#160; &#160;           z       (caddr pt_base)
  168. &#160;    )
  169. &#160;    (setq re 2)
  170. &#160;   ))
  171. &#160;  )
  172. &#160;   (alert "Unable to display dialog box!\n无法显示对话框!")
  173. &#160;  )
  174. &#160; )
  175. &#160; (unload_dialog id)             ;卸载该对话框
  176. &#160;)
  177. &#160; (alert "Unable to load dialog box!\n无法装载对话框!")
  178. &#160;)
  179. &#160;(if (= re 1) (progn
  180. &#160; (setq pt_base (list x y z))
  181. &#160; (command ".ucs" "o" pt_base)
  182. &#160; (cal_draw)
  183. &#160; (PROMPT "\n本次绘图成功!")
  184. &#160;)
  185. &#160; (PROMPT "\n您已取消了本次操作!")
  186. &#160;)
  187. &#160;(if (> (atoi (getvar "ACADVER")) 14) (setvar "AUTOSNAP" 47))  ;打开极轴
  188. &#160;(setvar "osmode" oldos) ;恢复对象捕捉
  189. &#160;(command ".ucs" "w")
  190. &#160;(princ)
  191. )
 楼主| 发表于 2008-6-28 11:56 | 显示全部楼层

报告"ZZXXQQ"程序已试用,三楼问题依然存在.

1,当初次显示对话框时:默认的"hdfx0.sld"不会自动显示,需点击"右上"或其他按钮后才会显示幻灯片图象.

2.:toggle{label="标注";value=1;key="bz";}这句失效(即用户想不标注时),一旦点击,则提示"error: bad argument type: stringp nil"后退出.

请看看哪里原因

发表于 2008-6-28 17:16 | 显示全部楼层
对话框有误。
  1. hjwt:dialog{
  2. &#160;label="绘制虾壳弯头程序:M6";       &#160;
  3. &#160;:cluster {
  4. &#160; :row {    //建立横列元件
  5. &#160;  :image{key="img";width=36;height=12;color=-3;}    //建立影象元件
  6. &#160; }                //关闭横列元件
  7. &#160; : boxed_column {                //带注释框的列,框名:"绘图数据:"&#160;
  8. &#160;  label="绘图数据:";
  9. &#160;  : edit_box {label="输入虾壳弯管外径:";key="DW";edit_width=6;}
  10. &#160;  : edit_box {label="输入虾接弯曲半径:";key="R";edit_width=6;}
  11. &#160;  : edit_box {label="输入虾接弯角角度:";key="V";edit_width=6;}
  12. &#160;  : edit_box {label="输入虾接切分数量:";key="N";edit_width=6;}
  13. &#160;  : button {label="(原点绘图)/拾取>>";key="pick";}
  14. &#160;  :toggle{label="标注";value="1";key="bz";}
  15. &#160; }
  16. &#160;}&#160;
  17. &#160;: radio_row {
  18. &#160; key="htfx";
  19. &#160; value="a0";
  20. &#160; spacer;
  21. &#160; :radio_button {label="左上";key="a0";}
  22. &#160; spacer;
  23. &#160; :radio_button {label="右上";key="a90";}
  24. &#160; spacer;
  25. &#160; :radio_button {label="右下";key="a180";}
  26. &#160; spacer;
  27. &#160; :radio_button {label="左下";key="a270";}
  28. &#160; spacer;
  29. &#160;}
  30. &#160;ok_cancel;
  31. }
 楼主| 发表于 2008-6-28 17:33 | 显示全部楼层
好奇怪,为什么"标注"不能与那些选项在同一行呢???
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-5-3 12:51 , Processed in 0.573347 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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