明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 814|回复: 5

[提问] 如何修改实现下面功能

[复制链接]
发表于 2020-3-22 15:55 | 显示全部楼层 |阅读模式
正在编写一个结构画节点大样的程序 ,已经实现点一个幻灯片画出大样,如何修改能让他们进行自由组合?就是勾选两个或三个(可以考虑加方框)  让他们一起画?相同部分代码是共用的。下面是DCL代码

  1. lwwjddy:dialog {
  2. label = "【舞】节点大样 " ;
  3. :boxed_row {
  4. label = "基本节点形式" ;


  5. :column {
  6. :text {
  7. label = " 悬挑板(雨篷)" ;
  8. alignment = centered  ;
  9. }
  10. :image_button {
  11. key = "jddyimage1";
  12. color = -2 ;
  13. width = 40 ;
  14. aspect_ratio = 0.66 ;
  15. allow_accept = true ;
  16. }

  17. :text {
  18. label = "悬挑板(空调板)" ;
  19. alignment = centered ;
  20. }
  21. :image_button {
  22. key = "jddyimage2";
  23. color = -2;
  24. width = 40;
  25. aspect_ratio = 0.66;
  26. allow_accept = true;
  27. }

  28. }


  29. :column {
  30. :text {
  31. label = "上翻" ;
  32. alignment = centered ;
  33. }
  34. :image_button {
  35. key = "jddyimage3";
  36. color = -2;
  37. width = 20;
  38. aspect_ratio = 1.32;
  39. allow_accept = true;
  40. }

  41. :text {
  42. label = "下挂";
  43. alignment = centered ;
  44. }
  45. :image_button {
  46. key = "jddyimage4";
  47. color = -2;
  48. width = 20;
  49. aspect_ratio = 1.32;
  50. allow_accept = true;
  51. }
  52. }


  53. :column {
  54. :text {
  55. label = "上翻(L型)" ;
  56. alignment = centered ;
  57. }
  58. :image_button {
  59. key = "jddyimage5";
  60. color = -2;
  61. width = 20;
  62. aspect_ratio = 1.32;
  63. allow_accept = true;
  64. }

  65. :text {
  66. label = "下挂(L型)";
  67. alignment = centered ;
  68. }
  69. :image_button {
  70. key = "jddyimage6";
  71. color = -2;
  72. width = 20;
  73. aspect_ratio = 1.32;
  74. allow_accept = true;
  75. }
  76. }


  77. :column {
  78. :text {
  79. label = "上翻(砖砌)";
  80. alignment = centered ;
  81. }
  82. :image_button {
  83. key = "jddyimage7";
  84. color = -2;
  85. width = 20;
  86. aspect_ratio = 1.32;
  87. allow_accept = true;
  88. }

  89. :text {
  90. label = "下挂(圈梁)";
  91. alignment = centered ;
  92. }
  93. :image_button {
  94. key = "jddyimage8";
  95. color = -2;
  96. width = 20;
  97. aspect_ratio = 1.32;
  98. allow_accept = true;
  99. }
  100. }


  101. :column {
  102. :text {
  103. label = "悬挑板(造型)" ;
  104. alignment = centered ;
  105. }
  106. :image_button {
  107. key = "jddyimage9";
  108. color = -2;
  109. width = 40;
  110. aspect_ratio = 0.66;
  111. allow_accept = true;
  112. }


  113. :text {
  114. label = "悬挑板(砌墙)";
  115. alignment = centered ;
  116. }
  117. :image_button {
  118. key = "jddyimage10";
  119. color = -2;
  120. width = 40;
  121. aspect_ratio = 0.66;
  122. allow_accept = true;
  123. }
  124. }





  125. }
  126. :boxed_row {
  127. label = "相关尺寸";
  128. :column {
  129. :edit_box {label = "梁宽" ; key = "bbbb";}
  130. :edit_box {label = "梁高" ; key = "hhhh";}
  131. :edit_box {label = "板厚" ; key = "dddd";}
  132. }
  133. :column {
  134. :edit_box {label = "a" ; key = "kaa";}
  135. :edit_box {label = "b" ; key = "kbb";}
  136. :edit_box {label = "c" ; key = "kcc";}
  137. }
  138. :column {
  139. :edit_box {label = "d" ; key = "kdd";}
  140. :edit_box {label = "e" ; key = "kee";}
  141. :edit_box {label = "f" ; key = "kff";}
  142. :edit_box {label = "g" ; key = "kgg";}
  143. }

  144. :column {
  145. :edit_box {label = "h" ; key = "khh";}
  146. :edit_box {label = "i" ; key = "kii";}
  147. :edit_box {label = "j" ; key = "kjj";}
  148. }

  149. :column {
  150. :edit_box {label = "k" ; key = "kkk";}
  151. :edit_box {label = "l" ; key = "kll";}

  152. }



  153. }
  154. spacer_1;
  155. ok_cancel;
  156. }



本帖子中包含更多资源

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

x
 楼主| 发表于 2020-3-22 16:00 | 显示全部楼层
本帖最后由 江南十笑 于 2020-3-22 16:01 编辑

lisp 代码没写完  主要框架如下:
  1. (defun c:tt()
  2.   (setq clay (getvar "clayer"))   ;;图层
  3.   (setq cm (getvar "cmdecho"))   ;;回显
  4.   (setq osm (getvar "osmode"))    ;;抓点
  5.   (setvar "cmdecho" 0)
  6.   (setvar "osmode" 0)
  7.   (dcl_lwwjddy)
  8.   (setvar "clayer" clay)
  9.   (setvar "cmdecho" cm)
  10.   (setvar "osmode" osm)
  11.   ( prin1 )
  12. )
  13. (defun dcl_lwwjddy ()
  14.   (setq dcl_id ( load_dialog "lwwjddy" ))
  15.   ( new_dialog "lwwjddy" dcl_id )
  16.   ( def_lwwjddy )
  17.   (action_tile "jddyimage1" "( setq ddtype 1)")
  18.   (action_tile "jddyimage2" "( setq ddtype 2)")
  19.   (action_tile "jddyimage3" "( setq ddtype 3)")
  20.   (action_tile "jddyimage4" "( setq ddtype 4)")
  21.   (action_tile "accept" "(ok_lwwjddy) (done_dialog 1)")
  22.   (setq flag (start_dialog))
  23.   (if( = flag 1)
  24.     (draw_lwwjddy)
  25.   )
  26.   
  27.   
  28. )
  29. (defun def_lwwjddy()
  30.   
  31.   (if sjbbbb
  32.     (set_tile "bbbb" ( rtos sjbbbb 2 0))
  33.     (set_tile "bbbb" "200")
  34.   )
  35.   (if sjhhhh
  36.     (set_tile "hhhh" ( rtos sjhhhh 2 0))
  37.     ( set_tile "hhhh" "600" )
  38.   )
  39.   (if sjdddd
  40.     (set_tile "dddd" ( rtos sjdddd 2 0))
  41.     ( set_tile "dddd" "120" )
  42.   )
  43.   (if sjkaa
  44.     (set_tile "kaa" ( rtos sjkaa 2 0))
  45.     ( set_tile "kaa" "100" )
  46.   )
  47.   (if sjkbb
  48.     (set_tile "kbb" ( rtos sjkbb 2 0))
  49.     ( set_tile "kbb" "1000" )
  50.   )
  51.   (if sjkcc
  52.     (set_tile "kcc" ( rtos sjkcc 2 0))
  53.     ( set_tile "kcc" "100" )
  54.   )

  55.   
  56.   (setq sldkey_list '( "jddyimage1" "jddyimage2" "jddyimage3" "jddyimage4"))
  57.   (setq sld_list '("lwwjddy01" "lwwjddy02" "lwwjddy03" "lwwjddy04"))
  58.   (mapcar 'show_sld  sldkey_list sld_list)
  59. )
  60. (defun show_sld ( key sld)
  61.   (setq x ( dimx_tile key ))
  62.   (setq y ( dimy_tile key ))
  63.   (start_image key )
  64.   (fill_image 0 0 x y -2 )
  65.   (slide_image 0 0 x y sld )
  66.   (end_image)
  67. )
  68. (defun ok_lwwjddy()
  69.   (setq bbb (* 4 ( atof ( get_tile "bbbb"))))
  70.   (setq sjbbbb ( atof ( get_tile "bbbb")))
  71.   (setq hhh (* 4 ( atof ( get_tile "hhhh"))))
  72.   (setq sjhhhh ( atof ( get_tile "hhhh")))
  73.   (setq ddd (* 4 ( atof ( get_tile "dddd"))))
  74.   (setq sjdddd ( atof ( get_tile "dddd")))
  75.   (setq aa (* 4 ( atof ( get_tile "kaa"))))
  76.   (setq sjkaa ( atof ( get_tile "kaa")))
  77.   (setq bb (* 4 ( atof ( get_tile "kbb"))))
  78.   (setq sjkbb ( atof ( get_tile "kbb")))
  79.   (setq cc (* 4 ( atof ( get_tile "kcc"))))
  80.   (setq sjkcc ( atof ( get_tile "kcc")))
  81.   (setq dd (* 4 ( atof ( get_tile "kdd"))))
  82.   (setq sjkdd ( atof ( get_tile "kdd")))
  83.   (setq ee (* 4 ( atof ( get_tile "kee"))))
  84.   (setq sjkee ( atof ( get_tile "kee")))

  85.   
  86.   
  87.   
  88. )
  89. (defun draw_lwwjddy()
  90.   (if (not(tblsearch "style" "TSSD_Norm"))(vl-cmdf "-style" "TSSD_Norm" "Tssdeng.shx,hztxt.shx" "" 0.7 "" "" "" ""))
  91.   (if (not(tblsearch "style" "TSSD_THZX"))(vl-cmdf "-style" "TSSD_THZX" "complex.shx,gbcbig.shx" "" 1.0 "" "" "" ""))

  92.   (setq pt1 ( getpoint "指定插入点:"))
  93.   ;以下为三个模块共享的点坐标变量
  94.   (setq pt2 (polar pt1 ( * pi 0.5) hhh))
  95.   (setq pt3 (polar pt2 0 bbb ))
  96.   (setq pt4 (polar pt1  0 bbb))
  97.   (setq pt5 (polar pt3 0 1600))
  98.   (setq pt6 (polar pt5 (* pi 1.5) ddd))
  99.   (setq pt7 (polar pt3 (* pi 1.5) ddd))
  100.   (setq pt8 (lww_midPt pt1 pt3))
  101.   (setq pt81 (polar pt8 0 1200))
  102.   (setq pt82 (lww_xyzPt pt81 -150 200 0))
  103.   
  104.   (setq pt51 (polar pt5 (* pi 0.5) 180))
  105.   (setq pt52 (polar pt5 (* pi 1.5) 110))
  106.   (setq pt53 (polar pt52 (* pi 1.9) 230))
  107.   (setq pt61 (polar pt6 (* pi 1.5) 180))
  108.   (setq pt62 (polar pt6 (* pi 0.5) 110))
  109.   (setq pt63 (polar pt62 (* pi 0.9) 230))
  110.   (setq ppt1 (polar (lww_midPt pt3 pt5) pi  350) )
  111.   (setq ppt2 (polar ppt1 (* pi 0.5) 300))
  112.   (setq ppt3 (polar ppt2 pi 300))
  113.   (setq ppt4 (polar ppt2 0  300))
  114.   (setq ppt5 (polar ppt4 0 600))
  115.   (setq ppt6 (polar ppt5 (* pi 0.75) 85))
  116.   (command "clayer" "S-BG")
  117.   (command "pline" ppt5 "w" "0" "0" ppt3 ppt1 ppt4 "")
  118.   (command "text" "s" "TSSD_Norm" "J" "BR" ppt6 "300" "0" "Hs")
  119.   (command "clayer" "S-DETL")
  120.   (command "pline" pt1 pt2 pt3 pt4  "C" "" )
  121.   (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 2) '(6 . "DASHED") (cons 10 pt1) (cons 10 pt3)))
  122.   (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 2) '(6 . "DASHED") (cons 10 pt2) (cons 10 pt4)))
  123.   (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 2)  (cons 10 pt3) (cons 10 pt5)))
  124.   (entmake (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") (cons 90 2)  (cons 10 pt7) (cons 10 pt6)))
  125.   (command "pline" pt51 pt52 pt53 pt63 pt62 pt61 "" )
  126.   (command "pline" pt8 pt81 "" )
  127.   
  128.   (entmake (list '(0 . "TEXT") (cons 1 "梁") (cons 8 "S-TEXT") (cons 7 "TSSD_Norm") (cons 41 0.7) (cons 72 1)(cons 73 2) (cons 10 pt82) (cons 11 pt82) (cons 40 300)))
  129.   
  130.   ;以下依据不同的类别,调用不同的绘图模式
  131.   (cond
  132.     (( = ddtype 1)  ;;悬挑雨棚型
  133.       (setq apt1 (polar pt1 pi  bb))
  134.       (setq apt2 (polar apt1 ( * pi 0.5) aa ))
  135.      
  136.       (command "pline" pt1 apt1 apt2 apt3 "" )
  137.       (command "pline" apt12 apt13 apt14 "" )
  138.      
  139.     )
  140.    
  141.     (( = ddtype 2)       ;;;悬挑板空调板型
  142.         (setq bpt1 (lww_xyzPt pt2 ( - 0 dd) ( - 0 ee) 0))
  143.       (setq bpt2 (polar bpt1 ( * pi 0.5) ee ))
  144.      
  145.       )
  146.    
  147.     )
  148.     (( = ddtype 3)       ;;上翻型
  149.         (setq cpt1 (polar pt2( * pi 0.5) hh ))
  150.       (setq cpt2 (polar cpt1 0 ii ))
  151.   
  152.     )
  153.     (( = ddtype 4)     ;;下挂型
  154.         (setq dpt1 (polar pt1( * pi 1.5) kk ))
  155.       (setq dpt2 (polar dpt1 0 ll ))
  156.    
  157.      
  158.     )
  159.    
  160.    
  161.    
  162.    
  163.   );结束cond
  164. )




 楼主| 发表于 2020-3-22 16:05 | 显示全部楼层
就是同时勾选  悬挑板(雨棚)和上翻 在文字后面加复选框  就画出

本帖子中包含更多资源

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

x
 楼主| 发表于 2020-3-23 09:21 | 显示全部楼层
有米有大佬啊
发表于 2020-3-23 10:46 | 显示全部楼层
只要定义好基点,画完一个就接着画下一个,有什么问题?
 楼主| 发表于 2020-3-23 11:29 | 显示全部楼层
mikewolf2k 发表于 2020-3-23 10:46
只要定义好基点,画完一个就接着画下一个,有什么问题?

怎么在面板上由用户选择 那几个组合  然后点确定绘图   现在只能一个一个画
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-6-14 00:52 , Processed in 0.138820 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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