乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 76|回复: 10

[编程交流] 使弹出列表最后记住

[复制链接]

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 14:31:19 | 显示全部楼层 |阅读模式
大家好,
 
我有一个简单的代码,通过从弹出列表中选择来创建块,并在插入之前以相同的方式设置其比例。然后程序返回到它的主页以进行另一个选择。问题是选择总是返回到列表的顶部,而不是记住最后一个选择。我尝试过单选按钮、切换和编辑框,并在这些方面取得了成功,但从来没有想过如何使用弹出列表。我将感谢任何人能提供的任何帮助。
 
提前感谢,希望有人能对此有所帮助。
秃鹰
 
DCL代码
 
  1. ///////////////////////////////////////////////////////////////////////////////////////
  2.            sl : dialog {
  3.                 label = "Symbols Library";
  4.                 : boxed_column {
  5.                   label = "Symbol Image";
  6.                   : image {
  7.                     key = "im1";
  8.                     height = 7.66;
  9.                     fixed_height = true;
  10.                     width = 27.92;
  11.                     fixed_width = true;
  12.                     alignment = centered;
  13.                     color = 0;
  14.                   }
  15.                   : spacer {
  16.                     height = 0;
  17.                   }
  18.                 }
  19.                 : boxed_column {
  20.                   label = "Symbols List";
  21.                   : popup_list {
  22.                     key = "pl1";
  23.                     value = 0;
  24.                   }
  25.                   : spacer {
  26.                     height = 0;
  27.                   }
  28.                 }
  29.                 : boxed_column {
  30.                   label = "Drawing Scale";
  31.                   : popup_list {
  32.                     key = "ds1";
  33.                     value = 13;
  34.                   }
  35.                   : spacer {
  36.                     height = 0;
  37.                   }
  38.                 }
  39.                 : boxed_column {
  40.                   label = "Control Buttons";
  41.                   : button {
  42.                     label = "Insert";
  43.                     key = "accept";
  44.                     mnemonic = "I";
  45.                     is_default = true;
  46.            }
  47.            : button {
  48.                     label = "Cancel";
  49.              key = "cancel";
  50.              mnemonic = "C";
  51.                     is_cancel = true;
  52.            }
  53.                   : spacer {
  54.                     height = 0;
  55.                   }
  56.                 }
  57.               }
  58. ///////////////////////////////////////////////////////////////////////////////////////

 
LSP代码
 
  1. ;;;////////////////////////////////////////////////////////////////////////////////////
  2. ;;; 01 - Start-Up Function - Program Start.
  3. (defun C:SL ()
  4. (SL_SS)
  5. (princ)
  6. )
  7. (princ "\nSymbols Library Lisp, SL.lsp Loaded....")
  8. (princ "\nType SL to start program.")
  9. ;;;/////////////////////////////////////////////////////////////////
  10. ;;; 02 - Font Function - Font Style.
  11. (defun SL_FS ()
  12. (command "_.STYLE" "Romans" "romans.shx" "0.0" "1.0" "0" "N" "N" "N")
  13. )
  14. ;;;/////////////////////////////////////////////////////////////////
  15. ;;; 03 - Layer Function - Create Layer.
  16. (defun SL_CL (NLAY CLR LT / LAY FRZ)
  17. (setq LAY (tblsearch "layer" NLAY))
  18. (if (not LAY)
  19.    (command "_.layer" "m" NLAY "c" CLR "" "lt" LT "" "")
  20.    (progn
  21.      (setq FRZ (cdr (assoc 70 LAY)))
  22.      (if (= FRZ 65)
  23.        (progn
  24.          (command "_.layer" "t" NLAY "")
  25.          (command "_.layer" "s" NLAY ""))
  26.        (command "_.layer" "s" NLAY ""))))
  27. )
  28. ;;;/////////////////////////////////////////////////////////////////
  29. ;;; 04 - Layer Function - Layer Set.
  30. (defun SL_LS ()
  31. (SL_CL "TEXT" "2" "")
  32. (progn
  33.    (cond
  34.      ((= SYM "TRI")(SL_CL "TRIANGLE" "1" ""))
  35.      ((= SYM "SQR")(SL_CL "SQUARE" "1" ""))
  36.      ((= SYM "CIR")(SL_CL "CIRCLE" "1" ""))))
  37. )
  38. ;;;/////////////////////////////////////////////////////////////////
  39. ;;; 05 - Image Function - Show Image.
  40. (defun SL_SI ()
  41. (setq w (dimx_tile "im1")
  42.        h (dimy_tile "im1"))
  43. (start_image "im1")
  44. (fill_image 0 0 w h -15)
  45. (cond
  46.    ((= IMG "0")
  47.      (mapcar 'vector_image
  48.      (list  80  23 136  80)
  49.      (list   1  99  99   1)
  50.      (list  23 136  80  80)
  51.      (list  99  99   1   1)
  52.      (list   1   1   1   1)
  53.    ))
  54.    ((= IMG "1")
  55.      (mapcar 'vector_image
  56.      (list  30  30 127 127  30)
  57.      (list   1  98  98   1   1)
  58.      (list  30 127 127  30  30)
  59.      (list  98  98   1   1   1)
  60.      (list   1   1   1   1   1)
  61.    ))
  62.    ((= IMG "2")
  63.      (mapcar 'vector_image
  64.      (list 129 129 129 128 128 127 125 124 122 121
  65.            119 117 114 112 109 106 103 101  97  94
  66.             91  88  85  81  78  75  72  68  65  62
  67.             59  56  54  51  49  46  44  42  40  39
  68.             37  36  35  34  34  33  33  33  34  34
  69.             35  36  37  39  40  42  44  46  49  51
  70.             54  56  59  62  65  68  72  75  78  81
  71.             85  88  91  94  97 101 103 106 109 112
  72.            114 117 119 121 122 124 125 127 128 128
  73.            129 129 129)
  74.      (list  49  46  43  40  36  33  30  27  24  22
  75.             19  17  14  12  10   8   7   5   4   3
  76.              2   2   1   1   1   2   2   3   4   5
  77.              7   8  10  12  14  17  19  22  24  27
  78.             30  33  36  40  43  46  49  53  56  59
  79.             62  66  69  72  74  77  80  82  85  87
  80.             89  90  92  94  95  96  96  97  97  98
  81.             97  97  96  96  95  94  92  90  89  87
  82.             85  82  80  77  74  72  69  66  62  59
  83.             56  53  49)
  84.      (list 129 129 128 128 127 125 124 122 121 119
  85.            117 114 112 109 106 103 101  97  94  91
  86.             88  85  81  78  75  72  68  65  62  59
  87.             56  54  51  49  46  44  42  40  39  37
  88.             36  35  34  34  33  33  33  34  34  35
  89.             36  37  39  40  42  44  46  49  51  54
  90.             56  59  62  65  68  72  75  78  81  85
  91.             88  91  94  97 101 103 106 109 112 114
  92.            117 119 121 122 124 125 127 128 128 129
  93.            129 129 129)
  94.      (list  46  43  40  36  33  30  27  24  22  19
  95.             17  14  12  10   8   7   5   4   3   2
  96.              2   1   1   1   2   2   3   4   5   7
  97.              8  10  12  14  17  19  22  24  27  30
  98.             33  36  40  43  46  49  53  56  59  62
  99.             66  69  72  74  77  80  82  85  87  89
  100.             90  92  94  95  96  96  97  97  98  97
  101.             97  96  96  95  94  92  90  89  87  85
  102.             82  80  77  74  72  69  66  62  59  56
  103.             53  49  49)
  104.      (list   1   1   1   1   1   1   1   1   1   1
  105.              1   1   1   1   1   1   1   1   1   1
  106.              1   1   1   1   1   1   1   1   1   1
  107.              1   1   1   1   1   1   1   1   1   1
  108.              1   1   1   1   1   1   1   1   1   1
  109.              1   1   1   1   1   1   1   1   1   1
  110.              1   1   1   1   1   1   1   1   1   1
  111.              1   1   1   1   1   1   1   1   1   1
  112.              1   1   1   1   1   1   1   1   1   1
  113.              1   1   1)
  114.    ))
  115. )
  116. (end_image)
  117. )
  118. ;;;/////////////////////////////////////////////////////////////////
  119. ;;; 06 - Scale Function - Drawing Scale.
  120. (defun SL_DS ()
  121. (progn
  122.    (setq DSF (fix DSF))
  123.    (setq DSF (nth DSF ds_list))
  124.    (cond
  125.      ((= DSF "1/32" = 1'") (setq DSF  384))
  126.      ((= DSF "1/16" = 1'") (setq DSF  192))
  127.      ((= DSF "3/32" = 1'") (setq DSF  128))
  128.      ((= DSF "1/8" = 1'")  (setq DSF   96))
  129.      ((= DSF "3/16" = 1'") (setq DSF   64))
  130.      ((= DSF "1/4" = 1'")  (setq DSF   48))
  131.      ((= DSF "3/8" = 1'")  (setq DSF   32))
  132.      ((= DSF "1/2" = 1'")  (setq DSF   24))
  133.      ((= DSF "3/4" = 1'")  (setq DSF   16))
  134.      ((= DSF "1" = 1'")    (setq DSF   12))
  135.      ((= DSF "1-1/2" = 1'")(setq DSF    )
  136.      ((= DSF "3" = 1'")    (setq DSF    4))
  137.      ((= DSF "6" = 1'")    (setq DSF    2))
  138.      ((= DSF "1' = 1'")     (setq DSF    1))
  139.      ((= DSF "1" = 10'")   (setq DSF  120))
  140.      ((= DSF "1" = 20'")   (setq DSF  240))
  141.      ((= DSF "1" = 30'")   (setq DSF  360))
  142.      ((= DSF "1" = 40'")   (setq DSF  480))
  143.      ((= DSF "1" = 50'")   (setq DSF  600))
  144.      ((= DSF "1" = 60'")   (setq DSF  720))
  145.      ((= DSF "1" = 70'")   (setq DSF  840))
  146.      ((= DSF "1" = 80'")   (setq DSF  960))
  147.      ((= DSF "1" = 90'")   (setq DSF 1080))
  148.      ((= DSF "1" = 100'")  (setq DSF 1200))))
  149. )
  150. ;;;/////////////////////////////////////////////////////////////////
  151. ;;; 07 - Main Function - Symbol Select.
  152. (defun SL_SS ()
  153. (setq IMG "0")
  154. (setq DSF  1)
  155. (setq sl_list '("Triangle" "Square" "Circle"))
  156. (setq ds_list '("1/32" = 1'" "1/16" = 1'" "3/32" = 1'" "1/8" = 1'" "3/16" = 1'"  "1/4" = 1'"
  157.                  "3/8" = 1'"  "1/2" = 1'"  "3/4" = 1'"  "1" = 1'"   "1-1/2" = 1'" "3" = 1'"
  158.                  "6" = 1'"    "1' = 1'"     "1" = 10'"   "1" = 20'"  "1" = 30'"    "1" = 40'"
  159.                  "1" = 50'"   "1" = 60'"   "1" = 70'"   "1" = 80'"  "1" = 90'"    "1" = 100'"))
  160. (setq dcl_id (load_dialog "sl.dcl"))
  161. (if (not (new_dialog "sl" dcl_id))
  162.    (exit))
  163. (start_list "pl1")
  164. (mapcar 'add_list sl_list)
  165. (end_list)
  166. (start_list "ds1")
  167. (mapcar 'add_list ds_list)
  168. (end_list)
  169. (SL_SI)
  170. (action_tile "pl1" "(setq IMG $value)(itoa 0)(SL_SI)")
  171. (action_tile "cancel" "(done_dialog)(setq button nil)")
  172. (action_tile "accept"
  173.    (strcat
  174.     "(progn
  175.      (setq SYM (atof (get_tile "pl1")))"
  176.     "(setq DSF (atof (get_tile "ds1")))"
  177.     "(done_dialog)(setq button T))"))
  178. (start_dialog)
  179. (unload_dialog dcl_id)
  180. (if button
  181.    (progn
  182.      (setq SYM (fix SYM))
  183.      (setq SYM (nth SYM sl_list))
  184.      (cond
  185.        ((= SYM "Triangle")(setq SYM "TRI")(SL_IS))
  186.        ((= SYM "Square")  (setq SYM "SQR")(SL_IS))
  187.        ((= SYM "Circle")  (setq SYM "CIR")(SL_IS)))))
  188. (princ)
  189. )
  190. ;;;/////////////////////////////////////////////////////////////////
  191. ;;; 08 - Output Function - Insert Symbol.
  192. (defun SL_IS ()
  193. (SL_FS)
  194. (SL_LS)
  195. (SL_DS)
  196. (if (null (tblsearch "block" SYM))
  197.    (cond
  198.      ((= SYM "TRI")(SL_TRI))
  199.      ((= SYM "SQR")(SL_SQR))
  200.      ((= SYM "CIR")(SL_CIR))))
  201. (setq inpt (getpoint "\nInsertion point:"))
  202. (command "_.insert" SYM inpt DSF DSF pause)
  203. (SL_SS)
  204. )
  205. ;;;/////////////////////////////////////////////////////////////////
  206. ;;; 09 - Block Reference Function - Triangle Block Reference.
  207. (defun SL_TRI ()
  208. (entmake '((0 . "block")(2 . "TRI")(10 0.0 0.0 0.0)(70 . 2)))
  209. (entmake '((0 . "ATTDEF")(5 . "307")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "TEXT")(100 . "AcDbText")
  210.            (10 -0.158482 0.548598 0.0)(40 . 0.09375)(1 . "TEXT")(50 . 0.0)(41 . 1.0)(51 . 0.0)(7 . "Romans")
  211.            (71 . 0)(72 . 1)(11 0.0 0.517348 0.0)(210 0.0 0.0 1.0)(100 . "AcDbAttributeDefinition")(3 . "Text:")
  212.            (2 . "TEXT")(70 . (73 . 0)(74 . 1)))
  213. (entmake '((0 . "LWPOLYLINE")(5 . "289")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "0")(100 . "AcDbPolyline")
  214.            (90 . 3)(70 . 1)(43 . 0.0)(38 . 0.0)(39 . 0.0)(10 8.68009e-017 0.431864)(40 . 0.0)(41 . 0.0)(42 . 0.0)
  215.            (10 -0.249337 1.11022e-016)(40 . 0.0)(41 . 0.0)(42 . 0.0)(10 0.249337 -1.11022e-016)(40 . 0.0)(41 . 0.0)
  216.            (42 . 0.0)(210 0.0 0.0 1.0)))
  217. (entmake '((0 . "endblk")))
  218. )
  219. ;;;/////////////////////////////////////////////////////////////////
  220. ;;; 10 - Block Reference Function - Square Block Reference.
  221. (defun SL_SQR ()
  222. (entmake '((0 . "block")(2 . "SQR")(10 0.0 0.0 0.0)(70 . 2)))
  223. (entmake '((0 . "ATTDEF")(5 . "307")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "TEXT")(100 . "AcDbText")
  224.            (10 -0.158482 0.548598 0.0)(40 . 0.09375)(1 . "TEXT")(50 . 0.0)(41 . 1.0)(51 . 0.0)(7 . "Romans")
  225.            (71 . 0)(72 . 1)(11 0.0 0.517348 0.0)(210 0.0 0.0 1.0)(100 . "AcDbAttributeDefinition")(3 . "Text:")
  226.            (2 . "TEXT")(70 . (73 . 0)(74 . 1)))
  227. (entmake '((0 . "LWPOLYLINE")(5 . "28A")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "0")(100 . "AcDbPolyline")
  228.            (90 . 4)(70 . 1)(43 . 0.0)(38 . 0.0)(39 . 0.0)(10 -0.25 0.5)(40 . 0.0)(41 . 0.0)(42 . 0.0)
  229.            (10 -0.25 2.77556e-017)(40 . 0.0)(41 . 0.0)(42 . 0.0)(10 0.25 -5.55112e-017)(40 . 0.0)(41 . 0.0)
  230.            (42 . 0.0)(10 0.25 0.5)(40 . 0.0)(41 . 0.0)(42 . 0.0)(210 0.0 0.0 1.0)))
  231. (entmake '((0 . "endblk")))
  232. )
  233. ;;;/////////////////////////////////////////////////////////////////
  234. ;;; 11 -  Block Reference Function - Circle Block Reference.
  235. (defun SL_CIR ()
  236. (entmake '((0 . "block")(2 . "CIR")(10 0.0 0.0 0.0)(70 . 2)))
  237. (entmake '((0 . "ATTDEF")(5 . "307")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "TEXT")(100 . "AcDbText")
  238.            (10 -0.158482 0.548598 0.0)(40 . 0.09375)(1 . "TEXT")(50 . 0.0)(41 . 1.0)(51 . 0.0)(7 . "Romans")
  239.            (71 . 0)(72 . 1)(11 0.0 0.517348 0.0)(210 0.0 0.0 1.0)(100 . "AcDbAttributeDefinition")(3 . "Text:")
  240.            (2 . "TEXT")(70 . (73 . 0)(74 . 1)))
  241. (entmake '((0 . "CIRCLE")(5 . "2E9")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "0")(100 . "AcDbCircle")
  242.            (10 0.0 -1.38778e-017 0.0)(40 . 0.25)(210 0.0 0.0 1.0)))
  243. (entmake '((0 . "endblk")))
  244. )
  245. ;;;/////////////////////////////////////////////////////////////////
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:38:37 | 显示全部楼层
嘿,Buzzard,试试这个伙计:
 
  1. ; ds1 pl1
  2. ;;;////////////////////////////////////////////////////////////////////////////////////
  3. ;;; 01 - Start-Up Function - Program Start.
  4. (defun C:SL ()
  5. (SL_SS)
  6. (princ)
  7. )
  8. (princ "\nSymbols Library Lisp, SL.lsp Loaded....")
  9. (princ "\nType SL to start program.")
  10. ;;;/////////////////////////////////////////////////////////////////
  11. ;;; 02 - Font Function - Font Style.
  12. (defun SL_FS ()
  13. (command "_.STYLE" "Romans" "romans.shx" "0.0" "1.0" "0" "N" "N" "N")
  14. )
  15. ;;;/////////////////////////////////////////////////////////////////
  16. ;;; 03 - Layer Function - Create Layer.
  17. (defun SL_CL (NLAY CLR LT / LAY FRZ)
  18. (setq LAY (tblsearch "layer" NLAY))
  19. (if (not LAY)
  20.    (command "_.layer" "m" NLAY "c" CLR "" "lt" LT "" "")
  21.    (progn
  22.      (setq FRZ (cdr (assoc 70 LAY)))
  23.      (if (= FRZ 65)
  24.        (progn
  25.          (command "_.layer" "t" NLAY "")
  26.          (command "_.layer" "s" NLAY ""))
  27.        (command "_.layer" "s" NLAY ""))))
  28. )
  29. ;;;/////////////////////////////////////////////////////////////////
  30. ;;; 04 - Layer Function - Layer Set.
  31. (defun SL_LS ()
  32. (SL_CL "TEXT" "2" "")
  33. (progn
  34.    (cond
  35.      ((= SYM "TRI")(SL_CL "TRIANGLE" "1" ""))
  36.      ((= SYM "SQR")(SL_CL "SQUARE" "1" ""))
  37.      ((= SYM "CIR")(SL_CL "CIRCLE" "1" ""))))
  38. )
  39. ;;;/////////////////////////////////////////////////////////////////
  40. ;;; 05 - Image Function - Show Image.
  41. (defun SL_SI ()
  42. (setq w (dimx_tile "im1")
  43.        h (dimy_tile "im1"))
  44. (start_image "im1")
  45. (fill_image 0 0 w h -15)
  46. (cond
  47.    ((= IMG "0")
  48.      (mapcar 'vector_image
  49.      (list  80  23 136  80)
  50.      (list   1  99  99   1)
  51.      (list  23 136  80  80)
  52.      (list  99  99   1   1)
  53.      (list   1   1   1   1)
  54.    ))
  55.    ((= IMG "1")
  56.      (mapcar 'vector_image
  57.      (list  30  30 127 127  30)
  58.      (list   1  98  98   1   1)
  59.      (list  30 127 127  30  30)
  60.      (list  98  98   1   1   1)
  61.      (list   1   1   1   1   1)
  62.    ))
  63.    ((= IMG "2")
  64.      (mapcar 'vector_image
  65.      (list 129 129 129 128 128 127 125 124 122 121
  66.            119 117 114 112 109 106 103 101  97  94
  67.             91  88  85  81  78  75  72  68  65  62
  68.             59  56  54  51  49  46  44  42  40  39
  69.             37  36  35  34  34  33  33  33  34  34
  70.             35  36  37  39  40  42  44  46  49  51
  71.             54  56  59  62  65  68  72  75  78  81
  72.             85  88  91  94  97 101 103 106 109 112
  73.            114 117 119 121 122 124 125 127 128 128
  74.            129 129 129)
  75.      (list  49  46  43  40  36  33  30  27  24  22
  76.             19  17  14  12  10   8   7   5   4   3
  77.              2   2   1   1   1   2   2   3   4   5
  78.              7   8  10  12  14  17  19  22  24  27
  79.             30  33  36  40  43  46  49  53  56  59
  80.             62  66  69  72  74  77  80  82  85  87
  81.             89  90  92  94  95  96  96  97  97  98
  82.             97  97  96  96  95  94  92  90  89  87
  83.             85  82  80  77  74  72  69  66  62  59
  84.             56  53  49)
  85.      (list 129 129 128 128 127 125 124 122 121 119
  86.            117 114 112 109 106 103 101  97  94  91
  87.             88  85  81  78  75  72  68  65  62  59
  88.             56  54  51  49  46  44  42  40  39  37
  89.             36  35  34  34  33  33  33  34  34  35
  90.             36  37  39  40  42  44  46  49  51  54
  91.             56  59  62  65  68  72  75  78  81  85
  92.             88  91  94  97 101 103 106 109 112 114
  93.            117 119 121 122 124 125 127 128 128 129
  94.            129 129 129)
  95.      (list  46  43  40  36  33  30  27  24  22  19
  96.             17  14  12  10   8   7   5   4   3   2
  97.              2   1   1   1   2   2   3   4   5   7
  98.              8  10  12  14  17  19  22  24  27  30
  99.             33  36  40  43  46  49  53  56  59  62
  100.             66  69  72  74  77  80  82  85  87  89
  101.             90  92  94  95  96  96  97  97  98  97
  102.             97  96  96  95  94  92  90  89  87  85
  103.             82  80  77  74  72  69  66  62  59  56
  104.             53  49  49)
  105.      (list   1   1   1   1   1   1   1   1   1   1
  106.              1   1   1   1   1   1   1   1   1   1
  107.              1   1   1   1   1   1   1   1   1   1
  108.              1   1   1   1   1   1   1   1   1   1
  109.              1   1   1   1   1   1   1   1   1   1
  110.              1   1   1   1   1   1   1   1   1   1
  111.              1   1   1   1   1   1   1   1   1   1
  112.              1   1   1   1   1   1   1   1   1   1
  113.              1   1   1   1   1   1   1   1   1   1
  114.              1   1   1)
  115.    ))
  116. )
  117. (end_image)
  118. )
  119. ;;;/////////////////////////////////////////////////////////////////
  120. ;;; 06 - Scale Function - Drawing Scale.
  121. (defun SL_DS ()
  122. (progn
  123.    (setq DSF (fix DSF))
  124.    (setq DSF (nth DSF ds_list))
  125.    (cond
  126.      ((= DSF "1/32" = 1'") (setq DSF  384))
  127.      ((= DSF "1/16" = 1'") (setq DSF  192))
  128.      ((= DSF "3/32" = 1'") (setq DSF  128))
  129.      ((= DSF "1/8" = 1'")  (setq DSF   96))
  130.      ((= DSF "3/16" = 1'") (setq DSF   64))
  131.      ((= DSF "1/4" = 1'")  (setq DSF   48))
  132.      ((= DSF "3/8" = 1'")  (setq DSF   32))
  133.      ((= DSF "1/2" = 1'")  (setq DSF   24))
  134.      ((= DSF "3/4" = 1'")  (setq DSF   16))
  135.      ((= DSF "1" = 1'")    (setq DSF   12))
  136.      ((= DSF "1-1/2" = 1'")(setq DSF    )
  137.      ((= DSF "3" = 1'")    (setq DSF    4))
  138.      ((= DSF "6" = 1'")    (setq DSF    2))
  139.      ((= DSF "1' = 1'")     (setq DSF    1))
  140.      ((= DSF "1" = 10'")   (setq DSF  120))
  141.      ((= DSF "1" = 20'")   (setq DSF  240))
  142.      ((= DSF "1" = 30'")   (setq DSF  360))
  143.      ((= DSF "1" = 40'")   (setq DSF  480))
  144.      ((= DSF "1" = 50'")   (setq DSF  600))
  145.      ((= DSF "1" = 60'")   (setq DSF  720))
  146.      ((= DSF "1" = 70'")   (setq DSF  840))
  147.      ((= DSF "1" = 80'")   (setq DSF  960))
  148.      ((= DSF "1" = 90'")   (setq DSF 1080))
  149.      ((= DSF "1" = 100'")  (setq DSF 1200))))
  150. )
  151. ;;;/////////////////////////////////////////////////////////////////
  152. ;;; 07 - Main Function - Symbol Select.
  153. (defun SL_SS ()
  154. (setq IMG "0")
  155. (setq DSF  1)
  156. (setq sl_list '("Triangle" "Square" "Circle"))
  157. (setq ds_list '("1/32" = 1'" "1/16" = 1'" "3/32" = 1'" "1/8" = 1'" "3/16" = 1'"  "1/4" = 1'"
  158.                  "3/8" = 1'"  "1/2" = 1'"  "3/4" = 1'"  "1" = 1'"   "1-1/2" = 1'" "3" = 1'"
  159.                  "6" = 1'"    "1' = 1'"     "1" = 10'"   "1" = 20'"  "1" = 30'"    "1" = 40'"
  160.                  "1" = 50'"   "1" = 60'"   "1" = 70'"   "1" = 80'"  "1" = 90'"    "1" = 100'"))
  161. (setq dcl_id (load_dialog "sl.dcl"))
  162. (if (not (new_dialog "sl" dcl_id))
  163.    (exit))
  164. (start_list "pl1")
  165. (mapcar 'add_list sl_list)
  166. (end_list)
  167. (start_list "ds1")
  168. (mapcar 'add_list ds_list)
  169. (end_list)
  170. (SL_SI)
  171. [color=Red][b]  (if SYM:DEF
  172.    (set_tile "pl1" (itoa SYM:DEF)))
  173. (if DSF:DEF
  174.    (Set_tile "ds1" (itoa DSF:DEF)))[/b][/color]
  175. (action_tile "pl1" "(setq IMG $value)(itoa 0)(SL_SI)")
  176. (action_tile "cancel" "(done_dialog)(setq button nil)")
  177. (action_tile "accept"
  178.    (strcat
  179.     "(progn
  180.      (setq SYM (ato[color=Red][b]i[/b][/color] (get_tile "pl1")) [b][color=Red]SYM:DEF SYM[/color][/b])"
  181.     "(setq DSF (ato[b][color=Red]i[/color][/b] (get_tile "ds1"))[b][color=Red] DSF:DEF DSF[/color][/b])"
  182.     "(done_dialog)(setq button T))"))
  183. (start_dialog)
  184. (unload_dialog dcl_id)
  185. (if button
  186.    (progn
  187.      (setq SYM (fix SYM))
  188.      (setq SYM (nth SYM sl_list))
  189.      (cond
  190.        ((= SYM "Triangle")(setq SYM "TRI")(SL_IS))
  191.        ((= SYM "Square")  (setq SYM "SQR")(SL_IS))
  192.        ((= SYM "Circle")  (setq SYM "CIR")(SL_IS)))))
  193. (princ)
  194. )
  195. ;;;/////////////////////////////////////////////////////////////////
  196. ;;; 08 - Output Function - Insert Symbol.
  197. (defun SL_IS ()
  198. (SL_FS)
  199. (SL_LS)
  200. (SL_DS)
  201. (if (null (tblsearch "block" SYM))
  202.    (cond
  203.      ((= SYM "TRI")(SL_TRI))
  204.      ((= SYM "SQR")(SL_SQR))
  205.      ((= SYM "CIR")(SL_CIR))))
  206. (setq inpt (getpoint "\nInsertion point:"))
  207. (command "_.insert" SYM inpt DSF DSF pause)
  208. (SL_SS)
  209. )
  210. ;;;/////////////////////////////////////////////////////////////////
  211. ;;; 09 - Block Reference Function - Triangle Block Reference.
  212. (defun SL_TRI ()
  213. (entmake '((0 . "block")(2 . "TRI")(10 0.0 0.0 0.0)(70 . 2)))
  214. (entmake '((0 . "ATTDEF")(5 . "307")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "TEXT")(100 . "AcDbText")
  215.            (10 -0.158482 0.548598 0.0)(40 . 0.09375)(1 . "TEXT")(50 . 0.0)(41 . 1.0)(51 . 0.0)(7 . "Romans")
  216.            (71 . 0)(72 . 1)(11 0.0 0.517348 0.0)(210 0.0 0.0 1.0)(100 . "AcDbAttributeDefinition")(3 . "Text:")
  217.            (2 . "TEXT")(70 . (73 . 0)(74 . 1)))
  218. (entmake '((0 . "LWPOLYLINE")(5 . "289")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "0")(100 . "AcDbPolyline")
  219.            (90 . 3)(70 . 1)(43 . 0.0)(38 . 0.0)(39 . 0.0)(10 8.68009e-017 0.431864)(40 . 0.0)(41 . 0.0)(42 . 0.0)
  220.            (10 -0.249337 1.11022e-016)(40 . 0.0)(41 . 0.0)(42 . 0.0)(10 0.249337 -1.11022e-016)(40 . 0.0)(41 . 0.0)
  221.            (42 . 0.0)(210 0.0 0.0 1.0)))
  222. (entmake '((0 . "endblk")))
  223. )
  224. ;;;/////////////////////////////////////////////////////////////////
  225. ;;; 10 - Block Reference Function - Square Block Reference.
  226. (defun SL_SQR ()
  227. (entmake '((0 . "block")(2 . "SQR")(10 0.0 0.0 0.0)(70 . 2)))
  228. (entmake '((0 . "ATTDEF")(5 . "307")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "TEXT")(100 . "AcDbText")
  229.            (10 -0.158482 0.548598 0.0)(40 . 0.09375)(1 . "TEXT")(50 . 0.0)(41 . 1.0)(51 . 0.0)(7 . "Romans")
  230.            (71 . 0)(72 . 1)(11 0.0 0.517348 0.0)(210 0.0 0.0 1.0)(100 . "AcDbAttributeDefinition")(3 . "Text:")
  231.            (2 . "TEXT")(70 . (73 . 0)(74 . 1)))
  232. (entmake '((0 . "LWPOLYLINE")(5 . "28A")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "0")(100 . "AcDbPolyline")
  233.            (90 . 4)(70 . 1)(43 . 0.0)(38 . 0.0)(39 . 0.0)(10 -0.25 0.5)(40 . 0.0)(41 . 0.0)(42 . 0.0)
  234.            (10 -0.25 2.77556e-017)(40 . 0.0)(41 . 0.0)(42 . 0.0)(10 0.25 -5.55112e-017)(40 . 0.0)(41 . 0.0)
  235.            (42 . 0.0)(10 0.25 0.5)(40 . 0.0)(41 . 0.0)(42 . 0.0)(210 0.0 0.0 1.0)))
  236. (entmake '((0 . "endblk")))
  237. )
  238. ;;;/////////////////////////////////////////////////////////////////
  239. ;;; 11 -  Block Reference Function - Circle Block Reference.
  240. (defun SL_CIR ()
  241. (entmake '((0 . "block")(2 . "CIR")(10 0.0 0.0 0.0)(70 . 2)))
  242. (entmake '((0 . "ATTDEF")(5 . "307")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "TEXT")(100 . "AcDbText")
  243.            (10 -0.158482 0.548598 0.0)(40 . 0.09375)(1 . "TEXT")(50 . 0.0)(41 . 1.0)(51 . 0.0)(7 . "Romans")
  244.            (71 . 0)(72 . 1)(11 0.0 0.517348 0.0)(210 0.0 0.0 1.0)(100 . "AcDbAttributeDefinition")(3 . "Text:")
  245.            (2 . "TEXT")(70 . (73 . 0)(74 . 1)))
  246. (entmake '((0 . "CIRCLE")(5 . "2E9")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "0")(100 . "AcDbCircle")
  247.            (10 0.0 -1.38778e-017 0.0)(40 . 0.25)(210 0.0 0.0 1.0)))
  248. (entmake '((0 . "endblk")))
  249. )
  250. ;;;/////////////////////////////////////////////////////////////////

 
DCL无变化-以红色标记的变化。
 
希望这有帮助
 
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 14:44:00 | 显示全部楼层
李,
 
这很好,但您没有在自己的dcl管道代码中使用它。
我没想到你会对这条线索做出回应,但我知道你在那里说的话就像金子一样好。
 
我在代码中找到了这两个if语句,我想就这些了?
 
  1.   (if SYM:DEF
  2.    (set_tile "pl1" (itoa SYM:DEF)))
  3. (if DSF:DEF
  4.    (Set_tile "ds1" (itoa DSF:DEF)))

 
无论如何,非常感谢,现在我可以摆脱单选按钮的习惯了。
秃鹰
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:55:12 | 显示全部楼层
 
是的,我可能应该把它放在我的管道代码中——但我已经很久没有研究管道代码了,现在很难导航了
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 14:59:15 | 显示全部楼层
 
至于,这就是它的全部-
 
我使用了SYM:DEF和DSF:DEF作为全局变量-(它们是在用户选择某物时设置的-请参阅action tile语句),但还需要注意的是,我必须将您的atof更改为atoi,因为列表中元素的位置由整数表示。
 
希望这有点道理
 
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 15:06:45 | 显示全部楼层
 
我没有注意到atof被atoi取代,谢谢你指出这一点。从长远来看,这将大大节省空间,并将其与ASMI的列表代码相结合,为其带来更多好处。
 
有一些修复要做。
再次感谢
一如往常,尽力而为!
秃鹰
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:11:47 | 显示全部楼层
 
我在张贴的代码中用红色标记了所有更改
 
祝你好运
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 15:19:07 | 显示全部楼层
李,
 
你让它看起来很简单。
我将这些更改添加到IDS程序中,修复很容易。我一直在考虑其他程序来使用这个补丁,并意识到我可以避免大量使用模式块的大型对话框。这是一个重大改进。现在你暂时不会收到我的来信,因为我有一些新东西要尝试。
当这些新东西完成后,你可能不会听到它的结束。
我尽量不让你太在意。
我真的从来没有想过这个问题的答案,因为DCL在这里似乎并不流行。但你一直都有答案。
回复

使用道具 举报

114

主题

1万

帖子

1万

银币

中流砥柱

Rank: 25

铜币
543
发表于 2022-7-6 15:24:27 | 显示全部楼层
 
谢谢Buzzard,
 
老实说,当你发布这个帖子的时候,我刚刚进行了实验,并从那里得到了结果-set_互动程序只需要一个键和一个其他参数,所以其他参数只能是一小部分:wink:
 
我很高兴这能帮到你
 
回复

使用道具 举报

32

主题

1166

帖子

1146

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
159
发表于 2022-7-6 15:28:34 | 显示全部楼层
还有一个问题。
 
实验?
 
你一天吃多少咖啡。就好像你是凭空得出答案的。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-5 00:27 , Processed in 0.432416 second(s), 83 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表