The Buzzard 发表于 2022-7-6 14:31:19

使弹出列表最后记住

大家好,
 
我有一个简单的代码,通过从弹出列表中选择来创建块,并在插入之前以相同的方式设置其比例。然后程序返回到它的主页以进行另一个选择。问题是选择总是返回到列表的顶部,而不是记住最后一个选择。我尝试过单选按钮、切换和编辑框,并在这些方面取得了成功,但从来没有想过如何使用弹出列表。我将感谢任何人能提供的任何帮助。
 
提前感谢,希望有人能对此有所帮助。
秃鹰
 
DCL代码
 
///////////////////////////////////////////////////////////////////////////////////////
         sl : dialog {
                label = "Symbols Library";
                : boxed_column {
                  label = "Symbol Image";
                  : image {
                  key = "im1";
                  height = 7.66;
                  fixed_height = true;
                  width = 27.92;
                  fixed_width = true;
                  alignment = centered;
                  color = 0;
                  }
                  : spacer {
                  height = 0;
                  }
                }
                : boxed_column {
                  label = "Symbols List";
                  : popup_list {
                  key = "pl1";
                  value = 0;
                  }
                  : spacer {
                  height = 0;
                  }
                }
                : boxed_column {
                  label = "Drawing Scale";
                  : popup_list {
                  key = "ds1";
                  value = 13;
                  }
                  : spacer {
                  height = 0;
                  }
                }
                : boxed_column {
                  label = "Control Buttons";
                  : button {
                  label = "Insert";
                  key = "accept";
                  mnemonic = "I";
                  is_default = true;
         }
         : button {
                  label = "Cancel";
             key = "cancel";
             mnemonic = "C";
                  is_cancel = true;
         }
                  : spacer {
                  height = 0;
                  }
                }
            }
///////////////////////////////////////////////////////////////////////////////////////
 
LSP代码
 
;;;////////////////////////////////////////////////////////////////////////////////////
;;; 01 - Start-Up Function - Program Start.
(defun C:SL ()
(SL_SS)
(princ)
)
(princ "\nSymbols Library Lisp, SL.lsp Loaded....")
(princ "\nType SL to start program.")
;;;/////////////////////////////////////////////////////////////////
;;; 02 - Font Function - Font Style.
(defun SL_FS ()
(command "_.STYLE" "Romans" "romans.shx" "0.0" "1.0" "0" "N" "N" "N")
)
;;;/////////////////////////////////////////////////////////////////
;;; 03 - Layer Function - Create Layer.
(defun SL_CL (NLAY CLR LT / LAY FRZ)
(setq LAY (tblsearch "layer" NLAY))
(if (not LAY)
   (command "_.layer" "m" NLAY "c" CLR "" "lt" LT "" "")
   (progn
   (setq FRZ (cdr (assoc 70 LAY)))
   (if (= FRZ 65)
       (progn
         (command "_.layer" "t" NLAY "")
         (command "_.layer" "s" NLAY ""))
       (command "_.layer" "s" NLAY ""))))
)
;;;/////////////////////////////////////////////////////////////////
;;; 04 - Layer Function - Layer Set.
(defun SL_LS ()
(SL_CL "TEXT" "2" "")
(progn
   (cond
   ((= SYM "TRI")(SL_CL "TRIANGLE" "1" ""))
   ((= SYM "SQR")(SL_CL "SQUARE" "1" ""))
   ((= SYM "CIR")(SL_CL "CIRCLE" "1" ""))))
)
;;;/////////////////////////////////////////////////////////////////
;;; 05 - Image Function - Show Image.
(defun SL_SI ()
(setq w (dimx_tile "im1")
       h (dimy_tile "im1"))
(start_image "im1")
(fill_image 0 0 w h -15)
(cond
   ((= IMG "0")
   (mapcar 'vector_image
   (list8023 13680)
   (list   19999   1)
   (list23 1368080)
   (list9999   1   1)
   (list   1   1   1   1)
   ))
   ((= IMG "1")
   (mapcar 'vector_image
   (list3030 127 12730)
   (list   19898   1   1)
   (list30 127 1273030)
   (list9898   1   1   1)
   (list   1   1   1   1   1)
   ))
   ((= IMG "2")
   (mapcar 'vector_image
   (list 129 129 129 128 128 127 125 124 122 121
         119 117 114 112 109 106 103 1019794
            91888581787572686562
            59565451494644424039
            37363534343333333434
            35363739404244464951
            54565962656872757881
            8588919497 101 103 106 109 112
         114 117 119 121 122 124 125 127 128 128
         129 129 129)
   (list49464340363330272422
            1917141210   8   7   5   4   3
             2   2   1   1   1   2   2   3   4   5
             7   81012141719222427
            30333640434649535659
            62666972747780828587
            89909294959696979798
            97979696959492908987
            85828077747269666259
            565349)
   (list 129 129 128 128 127 125 124 122 121 119
         117 114 112 109 106 103 101979491
            88858178757268656259
            56545149464442403937
            36353434333333343435
            36373940424446495154
            56596265687275788185
            88919497 101 103 106 109 112 114
         117 119 121 122 124 125 127 128 128 129
         129 129 129)
   (list46434036333027242219
            17141210   8   7   5   4   3   2
             2   1   1   1   2   2   3   4   5   7
             8101214171922242730
            33364043464953565962
            66697274778082858789
            90929495969697979897
            97969695949290898785
            82807774726966625956
            534949)
   (list   1   1   1   1   1   1   1   1   1   1
             1   1   1   1   1   1   1   1   1   1
             1   1   1   1   1   1   1   1   1   1
             1   1   1   1   1   1   1   1   1   1
             1   1   1   1   1   1   1   1   1   1
             1   1   1   1   1   1   1   1   1   1
             1   1   1   1   1   1   1   1   1   1
             1   1   1   1   1   1   1   1   1   1
             1   1   1   1   1   1   1   1   1   1
             1   1   1)
   ))
)
(end_image)
)
;;;/////////////////////////////////////////////////////////////////
;;; 06 - Scale Function - Drawing Scale.
(defun SL_DS ()
(progn
   (setq DSF (fix DSF))
   (setq DSF (nth DSF ds_list))
   (cond
   ((= DSF "1/32\" = 1'") (setq DSF384))
   ((= DSF "1/16\" = 1'") (setq DSF192))
   ((= DSF "3/32\" = 1'") (setq DSF128))
   ((= DSF "1/8\" = 1'")(setq DSF   96))
   ((= DSF "3/16\" = 1'") (setq DSF   64))
   ((= DSF "1/4\" = 1'")(setq DSF   48))
   ((= DSF "3/8\" = 1'")(setq DSF   32))
   ((= DSF "1/2\" = 1'")(setq DSF   24))
   ((= DSF "3/4\" = 1'")(setq DSF   16))
   ((= DSF "1\" = 1'")    (setq DSF   12))
   ((= DSF "1-1/2\" = 1'")(setq DSF    )
   ((= DSF "3\" = 1'")    (setq DSF    4))
   ((= DSF "6\" = 1'")    (setq DSF    2))
   ((= DSF "1' = 1'")   (setq DSF    1))
   ((= DSF "1\" = 10'")   (setq DSF120))
   ((= DSF "1\" = 20'")   (setq DSF240))
   ((= DSF "1\" = 30'")   (setq DSF360))
   ((= DSF "1\" = 40'")   (setq DSF480))
   ((= DSF "1\" = 50'")   (setq DSF600))
   ((= DSF "1\" = 60'")   (setq DSF720))
   ((= DSF "1\" = 70'")   (setq DSF840))
   ((= DSF "1\" = 80'")   (setq DSF960))
   ((= DSF "1\" = 90'")   (setq DSF 1080))
   ((= DSF "1\" = 100'")(setq DSF 1200))))
)
;;;/////////////////////////////////////////////////////////////////
;;; 07 - Main Function - Symbol Select.
(defun SL_SS ()
(setq IMG "0")
(setq DSF1)
(setq sl_list '("Triangle" "Square" "Circle"))
(setq ds_list '("1/32\" = 1'" "1/16\" = 1'" "3/32\" = 1'" "1/8\" = 1'" "3/16\" = 1'""1/4\" = 1'"
               "3/8\" = 1'""1/2\" = 1'""3/4\" = 1'""1\" = 1'"   "1-1/2\" = 1'" "3\" = 1'"
               "6\" = 1'"    "1' = 1'"   "1\" = 10'"   "1\" = 20'""1\" = 30'"    "1\" = 40'"
               "1\" = 50'"   "1\" = 60'"   "1\" = 70'"   "1\" = 80'""1\" = 90'"    "1\" = 100'"))
(setq dcl_id (load_dialog "sl.dcl"))
(if (not (new_dialog "sl" dcl_id))
   (exit))
(start_list "pl1")
(mapcar 'add_list sl_list)
(end_list)
(start_list "ds1")
(mapcar 'add_list ds_list)
(end_list)
(SL_SI)
(action_tile "pl1" "(setq IMG $value)(itoa 0)(SL_SI)")
(action_tile "cancel" "(done_dialog)(setq button nil)")
(action_tile "accept"
   (strcat
    "(progn
   (setq SYM (atof (get_tile \"pl1\")))"
    "(setq DSF (atof (get_tile \"ds1\")))"
    "(done_dialog)(setq button T))"))
(start_dialog)
(unload_dialog dcl_id)
(if button
   (progn
   (setq SYM (fix SYM))
   (setq SYM (nth SYM sl_list))
   (cond
       ((= SYM "Triangle")(setq SYM "TRI")(SL_IS))
       ((= SYM "Square")(setq SYM "SQR")(SL_IS))
       ((= SYM "Circle")(setq SYM "CIR")(SL_IS)))))
(princ)
)
;;;/////////////////////////////////////////////////////////////////
;;; 08 - Output Function - Insert Symbol.
(defun SL_IS ()
(SL_FS)
(SL_LS)
(SL_DS)
(if (null (tblsearch "block" SYM))
   (cond
   ((= SYM "TRI")(SL_TRI))
   ((= SYM "SQR")(SL_SQR))
   ((= SYM "CIR")(SL_CIR))))
(setq inpt (getpoint "\nInsertion point:"))
(command "_.insert" SYM inpt DSF DSF pause)
(SL_SS)
)
;;;/////////////////////////////////////////////////////////////////
;;; 09 - Block Reference Function - Triangle Block Reference.
(defun SL_TRI ()
(entmake '((0 . "block")(2 . "TRI")(10 0.0 0.0 0.0)(70 . 2)))
(entmake '((0 . "ATTDEF")(5 . "307")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "TEXT")(100 . "AcDbText")
         (10 -0.158482 0.548598 0.0)(40 . 0.09375)(1 . "TEXT")(50 . 0.0)(41 . 1.0)(51 . 0.0)(7 . "Romans")
         (71 . 0)(72 . 1)(11 0.0 0.517348 0.0)(210 0.0 0.0 1.0)(100 . "AcDbAttributeDefinition")(3 . "Text:")
         (2 . "TEXT")(70 . (73 . 0)(74 . 1)))
(entmake '((0 . "LWPOLYLINE")(5 . "289")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "0")(100 . "AcDbPolyline")
         (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)
         (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)
         (42 . 0.0)(210 0.0 0.0 1.0)))
(entmake '((0 . "endblk")))
)
;;;/////////////////////////////////////////////////////////////////
;;; 10 - Block Reference Function - Square Block Reference.
(defun SL_SQR ()
(entmake '((0 . "block")(2 . "SQR")(10 0.0 0.0 0.0)(70 . 2)))
(entmake '((0 . "ATTDEF")(5 . "307")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "TEXT")(100 . "AcDbText")
         (10 -0.158482 0.548598 0.0)(40 . 0.09375)(1 . "TEXT")(50 . 0.0)(41 . 1.0)(51 . 0.0)(7 . "Romans")
         (71 . 0)(72 . 1)(11 0.0 0.517348 0.0)(210 0.0 0.0 1.0)(100 . "AcDbAttributeDefinition")(3 . "Text:")
         (2 . "TEXT")(70 . (73 . 0)(74 . 1)))
(entmake '((0 . "LWPOLYLINE")(5 . "28A")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "0")(100 . "AcDbPolyline")
         (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)
         (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)
         (42 . 0.0)(10 0.25 0.5)(40 . 0.0)(41 . 0.0)(42 . 0.0)(210 0.0 0.0 1.0)))
(entmake '((0 . "endblk")))
)
;;;/////////////////////////////////////////////////////////////////
;;; 11 -Block Reference Function - Circle Block Reference.
(defun SL_CIR ()
(entmake '((0 . "block")(2 . "CIR")(10 0.0 0.0 0.0)(70 . 2)))
(entmake '((0 . "ATTDEF")(5 . "307")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "TEXT")(100 . "AcDbText")
         (10 -0.158482 0.548598 0.0)(40 . 0.09375)(1 . "TEXT")(50 . 0.0)(41 . 1.0)(51 . 0.0)(7 . "Romans")
         (71 . 0)(72 . 1)(11 0.0 0.517348 0.0)(210 0.0 0.0 1.0)(100 . "AcDbAttributeDefinition")(3 . "Text:")
         (2 . "TEXT")(70 . (73 . 0)(74 . 1)))
(entmake '((0 . "CIRCLE")(5 . "2E9")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "0")(100 . "AcDbCircle")
         (10 0.0 -1.38778e-017 0.0)(40 . 0.25)(210 0.0 0.0 1.0)))
(entmake '((0 . "endblk")))
)
;;;/////////////////////////////////////////////////////////////////

Lee Mac 发表于 2022-7-6 14:38:37

嘿,Buzzard,试试这个伙计:
 


; ds1 pl1

;;;////////////////////////////////////////////////////////////////////////////////////
;;; 01 - Start-Up Function - Program Start.
(defun C:SL ()
(SL_SS)
(princ)
)
(princ "\nSymbols Library Lisp, SL.lsp Loaded....")
(princ "\nType SL to start program.")
;;;/////////////////////////////////////////////////////////////////
;;; 02 - Font Function - Font Style.
(defun SL_FS ()
(command "_.STYLE" "Romans" "romans.shx" "0.0" "1.0" "0" "N" "N" "N")
)
;;;/////////////////////////////////////////////////////////////////
;;; 03 - Layer Function - Create Layer.
(defun SL_CL (NLAY CLR LT / LAY FRZ)
(setq LAY (tblsearch "layer" NLAY))
(if (not LAY)
   (command "_.layer" "m" NLAY "c" CLR "" "lt" LT "" "")
   (progn
   (setq FRZ (cdr (assoc 70 LAY)))
   (if (= FRZ 65)
       (progn
         (command "_.layer" "t" NLAY "")
         (command "_.layer" "s" NLAY ""))
       (command "_.layer" "s" NLAY ""))))
)
;;;/////////////////////////////////////////////////////////////////
;;; 04 - Layer Function - Layer Set.
(defun SL_LS ()
(SL_CL "TEXT" "2" "")
(progn
   (cond
   ((= SYM "TRI")(SL_CL "TRIANGLE" "1" ""))
   ((= SYM "SQR")(SL_CL "SQUARE" "1" ""))
   ((= SYM "CIR")(SL_CL "CIRCLE" "1" ""))))
)
;;;/////////////////////////////////////////////////////////////////
;;; 05 - Image Function - Show Image.
(defun SL_SI ()
(setq w (dimx_tile "im1")
       h (dimy_tile "im1"))
(start_image "im1")
(fill_image 0 0 w h -15)
(cond
   ((= IMG "0")
   (mapcar 'vector_image
   (list8023 13680)
   (list   19999   1)
   (list23 1368080)
   (list9999   1   1)
   (list   1   1   1   1)
   ))
   ((= IMG "1")
   (mapcar 'vector_image
   (list3030 127 12730)
   (list   19898   1   1)
   (list30 127 1273030)
   (list9898   1   1   1)
   (list   1   1   1   1   1)
   ))
   ((= IMG "2")
   (mapcar 'vector_image
   (list 129 129 129 128 128 127 125 124 122 121
         119 117 114 112 109 106 103 1019794
            91888581787572686562
            59565451494644424039
            37363534343333333434
            35363739404244464951
            54565962656872757881
            8588919497 101 103 106 109 112
         114 117 119 121 122 124 125 127 128 128
         129 129 129)
   (list49464340363330272422
            1917141210   8   7   5   4   3
             2   2   1   1   1   2   2   3   4   5
             7   81012141719222427
            30333640434649535659
            62666972747780828587
            89909294959696979798
            97979696959492908987
            85828077747269666259
            565349)
   (list 129 129 128 128 127 125 124 122 121 119
         117 114 112 109 106 103 101979491
            88858178757268656259
            56545149464442403937
            36353434333333343435
            36373940424446495154
            56596265687275788185
            88919497 101 103 106 109 112 114
         117 119 121 122 124 125 127 128 128 129
         129 129 129)
   (list46434036333027242219
            17141210   8   7   5   4   3   2
             2   1   1   1   2   2   3   4   5   7
             8101214171922242730
            33364043464953565962
            66697274778082858789
            90929495969697979897
            97969695949290898785
            82807774726966625956
            534949)
   (list   1   1   1   1   1   1   1   1   1   1
             1   1   1   1   1   1   1   1   1   1
             1   1   1   1   1   1   1   1   1   1
             1   1   1   1   1   1   1   1   1   1
             1   1   1   1   1   1   1   1   1   1
             1   1   1   1   1   1   1   1   1   1
             1   1   1   1   1   1   1   1   1   1
             1   1   1   1   1   1   1   1   1   1
             1   1   1   1   1   1   1   1   1   1
             1   1   1)
   ))
)
(end_image)
)
;;;/////////////////////////////////////////////////////////////////
;;; 06 - Scale Function - Drawing Scale.
(defun SL_DS ()
(progn
   (setq DSF (fix DSF))
   (setq DSF (nth DSF ds_list))
   (cond
   ((= DSF "1/32\" = 1'") (setq DSF384))
   ((= DSF "1/16\" = 1'") (setq DSF192))
   ((= DSF "3/32\" = 1'") (setq DSF128))
   ((= DSF "1/8\" = 1'")(setq DSF   96))
   ((= DSF "3/16\" = 1'") (setq DSF   64))
   ((= DSF "1/4\" = 1'")(setq DSF   48))
   ((= DSF "3/8\" = 1'")(setq DSF   32))
   ((= DSF "1/2\" = 1'")(setq DSF   24))
   ((= DSF "3/4\" = 1'")(setq DSF   16))
   ((= DSF "1\" = 1'")    (setq DSF   12))
   ((= DSF "1-1/2\" = 1'")(setq DSF    )
   ((= DSF "3\" = 1'")    (setq DSF    4))
   ((= DSF "6\" = 1'")    (setq DSF    2))
   ((= DSF "1' = 1'")   (setq DSF    1))
   ((= DSF "1\" = 10'")   (setq DSF120))
   ((= DSF "1\" = 20'")   (setq DSF240))
   ((= DSF "1\" = 30'")   (setq DSF360))
   ((= DSF "1\" = 40'")   (setq DSF480))
   ((= DSF "1\" = 50'")   (setq DSF600))
   ((= DSF "1\" = 60'")   (setq DSF720))
   ((= DSF "1\" = 70'")   (setq DSF840))
   ((= DSF "1\" = 80'")   (setq DSF960))
   ((= DSF "1\" = 90'")   (setq DSF 1080))
   ((= DSF "1\" = 100'")(setq DSF 1200))))
)
;;;/////////////////////////////////////////////////////////////////
;;; 07 - Main Function - Symbol Select.
(defun SL_SS ()
(setq IMG "0")
(setq DSF1)
(setq sl_list '("Triangle" "Square" "Circle"))
(setq ds_list '("1/32\" = 1'" "1/16\" = 1'" "3/32\" = 1'" "1/8\" = 1'" "3/16\" = 1'""1/4\" = 1'"
               "3/8\" = 1'""1/2\" = 1'""3/4\" = 1'""1\" = 1'"   "1-1/2\" = 1'" "3\" = 1'"
               "6\" = 1'"    "1' = 1'"   "1\" = 10'"   "1\" = 20'""1\" = 30'"    "1\" = 40'"
               "1\" = 50'"   "1\" = 60'"   "1\" = 70'"   "1\" = 80'""1\" = 90'"    "1\" = 100'"))
(setq dcl_id (load_dialog "sl.dcl"))
(if (not (new_dialog "sl" dcl_id))
   (exit))
(start_list "pl1")
(mapcar 'add_list sl_list)
(end_list)
(start_list "ds1")
(mapcar 'add_list ds_list)
(end_list)
(SL_SI)
(if SYM:DEF
   (set_tile "pl1" (itoa SYM:DEF)))
(if DSF:DEF
   (Set_tile "ds1" (itoa DSF:DEF)))
(action_tile "pl1" "(setq IMG $value)(itoa 0)(SL_SI)")
(action_tile "cancel" "(done_dialog)(setq button nil)")
(action_tile "accept"
   (strcat
    "(progn
   (setq SYM (atoi (get_tile \"pl1\")) SYM:DEF SYM)"
    "(setq DSF (atoi (get_tile \"ds1\")) DSF:DEF DSF)"
    "(done_dialog)(setq button T))"))
(start_dialog)
(unload_dialog dcl_id)
(if button
   (progn
   (setq SYM (fix SYM))
   (setq SYM (nth SYM sl_list))
   (cond
       ((= SYM "Triangle")(setq SYM "TRI")(SL_IS))
       ((= SYM "Square")(setq SYM "SQR")(SL_IS))
       ((= SYM "Circle")(setq SYM "CIR")(SL_IS)))))
(princ)
)
;;;/////////////////////////////////////////////////////////////////
;;; 08 - Output Function - Insert Symbol.
(defun SL_IS ()
(SL_FS)
(SL_LS)
(SL_DS)
(if (null (tblsearch "block" SYM))
   (cond
   ((= SYM "TRI")(SL_TRI))
   ((= SYM "SQR")(SL_SQR))
   ((= SYM "CIR")(SL_CIR))))
(setq inpt (getpoint "\nInsertion point:"))
(command "_.insert" SYM inpt DSF DSF pause)
(SL_SS)
)
;;;/////////////////////////////////////////////////////////////////
;;; 09 - Block Reference Function - Triangle Block Reference.
(defun SL_TRI ()
(entmake '((0 . "block")(2 . "TRI")(10 0.0 0.0 0.0)(70 . 2)))
(entmake '((0 . "ATTDEF")(5 . "307")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "TEXT")(100 . "AcDbText")
         (10 -0.158482 0.548598 0.0)(40 . 0.09375)(1 . "TEXT")(50 . 0.0)(41 . 1.0)(51 . 0.0)(7 . "Romans")
         (71 . 0)(72 . 1)(11 0.0 0.517348 0.0)(210 0.0 0.0 1.0)(100 . "AcDbAttributeDefinition")(3 . "Text:")
         (2 . "TEXT")(70 . (73 . 0)(74 . 1)))
(entmake '((0 . "LWPOLYLINE")(5 . "289")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "0")(100 . "AcDbPolyline")
         (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)
         (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)
         (42 . 0.0)(210 0.0 0.0 1.0)))
(entmake '((0 . "endblk")))
)
;;;/////////////////////////////////////////////////////////////////
;;; 10 - Block Reference Function - Square Block Reference.
(defun SL_SQR ()
(entmake '((0 . "block")(2 . "SQR")(10 0.0 0.0 0.0)(70 . 2)))
(entmake '((0 . "ATTDEF")(5 . "307")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "TEXT")(100 . "AcDbText")
         (10 -0.158482 0.548598 0.0)(40 . 0.09375)(1 . "TEXT")(50 . 0.0)(41 . 1.0)(51 . 0.0)(7 . "Romans")
         (71 . 0)(72 . 1)(11 0.0 0.517348 0.0)(210 0.0 0.0 1.0)(100 . "AcDbAttributeDefinition")(3 . "Text:")
         (2 . "TEXT")(70 . (73 . 0)(74 . 1)))
(entmake '((0 . "LWPOLYLINE")(5 . "28A")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "0")(100 . "AcDbPolyline")
         (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)
         (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)
         (42 . 0.0)(10 0.25 0.5)(40 . 0.0)(41 . 0.0)(42 . 0.0)(210 0.0 0.0 1.0)))
(entmake '((0 . "endblk")))
)
;;;/////////////////////////////////////////////////////////////////
;;; 11 -Block Reference Function - Circle Block Reference.
(defun SL_CIR ()
(entmake '((0 . "block")(2 . "CIR")(10 0.0 0.0 0.0)(70 . 2)))
(entmake '((0 . "ATTDEF")(5 . "307")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "TEXT")(100 . "AcDbText")
         (10 -0.158482 0.548598 0.0)(40 . 0.09375)(1 . "TEXT")(50 . 0.0)(41 . 1.0)(51 . 0.0)(7 . "Romans")
         (71 . 0)(72 . 1)(11 0.0 0.517348 0.0)(210 0.0 0.0 1.0)(100 . "AcDbAttributeDefinition")(3 . "Text:")
         (2 . "TEXT")(70 . (73 . 0)(74 . 1)))
(entmake '((0 . "CIRCLE")(5 . "2E9")(100 . "AcDbEntity")(67 . 0)(410 . "Model")(8 . "0")(100 . "AcDbCircle")
         (10 0.0 -1.38778e-017 0.0)(40 . 0.25)(210 0.0 0.0 1.0)))
(entmake '((0 . "endblk")))
)
;;;/////////////////////////////////////////////////////////////////

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

The Buzzard 发表于 2022-7-6 14:44:00

李,
 
这很好,但您没有在自己的dcl管道代码中使用它。
我没想到你会对这条线索做出回应,但我知道你在那里说的话就像金子一样好。
 
我在代码中找到了这两个if语句,我想就这些了?
 
(if SYM:DEF
   (set_tile "pl1" (itoa SYM:DEF)))
(if DSF:DEF
   (Set_tile "ds1" (itoa DSF:DEF)))
 
无论如何,非常感谢,现在我可以摆脱单选按钮的习惯了。
秃鹰

Lee Mac 发表于 2022-7-6 14:55:12

 
是的,我可能应该把它放在我的管道代码中——但我已经很久没有研究管道代码了,现在很难导航了

Lee Mac 发表于 2022-7-6 14:59:15

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

The Buzzard 发表于 2022-7-6 15:06:45

 
我没有注意到atof被atoi取代,谢谢你指出这一点。从长远来看,这将大大节省空间,并将其与ASMI的列表代码相结合,为其带来更多好处。
 
有一些修复要做。
再次感谢
一如往常,尽力而为!
秃鹰

Lee Mac 发表于 2022-7-6 15:11:47

 
我在张贴的代码中用红色标记了所有更改
 
祝你好运

The Buzzard 发表于 2022-7-6 15:19:07

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

Lee Mac 发表于 2022-7-6 15:24:27

 
谢谢Buzzard,
 
老实说,当你发布这个帖子的时候,我刚刚进行了实验,并从那里得到了结果-set_互动程序只需要一个键和一个其他参数,所以其他参数只能是一小部分:wink:
 
我很高兴这能帮到你
 

The Buzzard 发表于 2022-7-6 15:28:34

还有一个问题。
 
实验?
 
你一天吃多少咖啡。就好像你是凭空得出答案的。
页: [1] 2
查看完整版本: 使弹出列表最后记住