woodman78 发表于 2022-7-6 11:58:56

谢谢你的秃鹰。我想做的是像你做的那样,但不是有一列使窗口变长,而是有两列,但与你的盒子一样?这可能吗??

The Buzzard 发表于 2022-7-6 12:01:54

 
 
很多事情都是可能的,但试着去尝试。您需要取出第二组按钮上的(:row{)及其结束括号(})。尽量保持格式整洁。
 
我建议您尝试使用弹出列表来节省空间,而不是单选按钮。如果我有时间,我可以为你做个榜样。我现在只是有点忙。弹出列表将为您节省大量空间,但会涉及更少的dcl编码和更多的lsp编码。只是一些你需要学习的新东西。
 
祝你好运

woodman78 发表于 2022-7-6 12:07:05

我把那只秃鹰分类了,但遇到了另一个小问题。加载对话框后,我可以每行选择一项。我一直在看网上的例子,他们似乎只有一个或一个专栏,每个装箱_列。
 

radio1 : dialog {                                 //*dialog name
       label = "Existing Storm Sewers";         //*give it a label
      
      : row {                                  //*define row
         : column {                           //*define column
          : boxed_radio_column {               //*define radio column
             label = "Choose a Type";         //*give it a label
                   : row {                                  //*define row
            : radio_button {                   //*define radion button
                key = "T1";                      //*give it a name
                label = "Type &1";               //*give it a label
            //value = "1";                     //*switch it on
            }                                  //*end definition
            : radio_button {                   //*define radio button
                key = "T3";                      //*give it a name
                label = "Type &3";               //*give it a label
            }                                  //*end definition
                   }                                        //*end row
                   : row {                                  //*define row
            : radio_button {                   //*define radio button
                key = "T2";                      //*give it a name
                label = "Type &2";               //*give it a label
            }                                  //*end definition
            : radio_button {                   //*define radio button
                key = "T4" ;                     //*give it a name
                label = "Type &4";               //*give it a label
            }                                  //*end definition
                  }                                        //*end row
          }                                    //*end boxed_radio_column
         }                                    //*end column
      }                                        //*end row
      : row {                                  //*define row
         : column {                           //*define column
         : boxed_radio_column {               //*define radio column
             label = "Choose a Size";         //*give it a label
                   : row {                                  //*define row
: radio_button {                   //*define radion button
                key = "S1" ;                     //*give it a name
                label = "1500mm";                //*give it a label
            value = "1";                     //*switch it on
            }                                  //*end definition
            : radio_button {                   //*define radio button
                key = "S2";                      //*give it a name
                label = "1350mm";                //*give it a label
            }                                  //*end definition
                   }                                        //*end row
                   : row {                                  //*define row
            : radio_button {                   //*define radio button
                key = "S3";                      //*give it a name
                label = "1200mm";                //*give it a label
            }                                  //*end definition
            : radio_button {                   //*define radio button
                key = "S4";                      //*give it a name
                label = "1050mm";                //*give it a label
            }                                  //*end definition
                   }                                        //*end row
                   : row {                                  //*define row
            : radio_button {                   //*define radio button
                key = "S5";                      //*give it a name
                label = "900mm";                     //*give it a label
            }                                  //*end definition
            : radio_button {                   //*define radio button
                key = "S6";                      //*give it a name
                label = "750mm";                     //*give it a label
            }                                  //*end definition
                   }                                        //*end row
                   : row {                                  //*define row
            : radio_button {                   //*define radio button
                key = "S7";                      //*give it a name
                label = "675mm";                     //*give it a label
            }                                  //*end definition
            : radio_button {                   //*define radio button
                key = "S8";                      //*give it a name
                label = "600mm";                     //*give it a label
            }                                  //*end definition
                   }                                        //*end row
                   : row {                                  //*define row
            : radio_button {                   //*define radio button
                key = "S9";                      //*give it a name
                label = "525mm";                     //*give it a label
            }                                  //*end definition
            : radio_button {                   //*define radio button
                key = "S10";                     //*give it a name
                label = "450mm";                     //*give it a label
            }                                  //*end definition
                   }                                        //*end row
                   : row {                                  //*define row
            : radio_button {                   //*define radio button
                key = "S11";                     //*give it a name
                label = "375mm";                     //*give it a label
            }                                  //*end definition
            : radio_button {                   //*define radio button
                key = "S12";                     //*give it a name
                label = "300mm";                     //*give it a label
            }                                  //*end definition
                   }                                        //*end row
                   : row {                                  //*define row
            : radio_button {                   //*define radio button
                key = "S13";                     //*give it a name
                label = "225mm";                     //*give it a label
            }                                  //*end definition
            : radio_button {                   //*define radio button
                key = "S14";                     //*give it a name
                label = "150mm";                     //*give it a label
            }                                  //*end definition
                   }                                        //*end row
         }                                    //*end boxed_radio_column
         }                                    //*end column
       }                                        //*end row
       : row {                                    //*define row
         : column {                               //*define column
         ok_cancel ;                            //*predifined OK/Cancel
         : paragraph {                        //*define paragraph
             : text_part {                        //*define more text
               label = "CCC NNRDO       v1.0.21.07.2009";         //*some more text
             }                                    //*end text
         }                                    //*end paragraph
         }                                        //*end column
       }                                          //*end row
   }                                          //*end dialog

 
我来看看弹出列表。我认识我办公室里的人,如果他们必须滚动2个弹出列表才能找到他们正在查找的内容,他们会大吃一惊!!如果你正在做一个复杂的排水图,那么收音机要快得多。
 
谢谢你的推送!!!

The Buzzard 发表于 2022-7-6 12:10:11

你能发代码吗?
我来看看。

The Buzzard 发表于 2022-7-6 12:12:39

本规范已修订。
不再有错误的参数零错误。
DCL包含四个单选按钮,带有弹出列表。
按钮和列表将保存绘图任务的最后一个条目。
程序也有一个内置循环。
只要记住,弹出列表仍然比没有代码更快。
通过添加的功能,这是一种非常快速和紧凑的方法。
 
DCL
popup : dialog {                                 //*dialog name
       label = "Existing Storm Sewers";         //*give it a label
       : row {                                  //*define row
         : column {                           //*define column
         : boxed_radio_column {               //*define radio column
             label = "Choose a Type";         //*give it a label
             : radio_button {                   //*define radion button
               key = "T1";                      //*give it a name
               label = "Type &1";               //*give it a label
             //value = "1";                     //*switch it on
             }                                  //*end definition
             : radio_button {                   //*define radio button
               key = "T2";                      //*give it a name
               label = "Type &2";               //*give it a label
             }                                  //*end definition
             : radio_button {                   //*define radio button
               key = "T3";                      //*give it a name
               label = "Type &3";               //*give it a label
             }                                  //*end definition
             : radio_button {                   //*define radio button
               key = "T4" ;                     //*give it a name
               label = "Type &4";               //*give it a label
             }                                  //*end definition
         }                                    //*end boxed_radio_column
         }                                    //*end column
       }                                        //*end row
       : row {                                  //*define row
         : boxed_column {                     //*define boxex_column
         : popup_list {
             label = "Choose a Size";         //*give it a label
             key = "S1";
             edit_width = 8;
         }
         : spacer {
             height = 0;
         }
         }                                    //*end boxed_column
       }                                        //*end row
       : row {                                    //*define row
         : column {                               //*define column
         ok_cancel ;                            //*predifined OK/Cancel
         : paragraph {                        //*define paragraph
             : text_part {                        //*define text
               label = "Designed by Brian Deasy"; //*give it some text
             }                                    //*end text
             : text_part {                        //*define more text
               label = "for CCC NNRDO";         //*some more text
             }                                    //*end text
         }                                    //*end paragraph
         }                                        //*end column
       }                                          //*end row
   }                                          //*end dialog
 
LSP
(defun C:POPUP ()
(POPUP_MF)
(princ)
)
(defun POPUP_MF (/ SIZE$ SIZE# HOLE SIZE)
(or H:OLE (setq H:OLE "T1"))
(setq SIZE 1500)
(setq S1_list
'("1500mm" "1350mm"
    "1250mm" "1050mm"
   "900mm""750mm"
   "675mm""600mm"
   "525mm""450mm"
   "375mm""300mm"
   "225mm""150mm"))
(setq dcl_id (load_dialog "popup.dcl"))
(if (not (new_dialog "popup" dcl_id))
   (progn
   (alert "Can not find your dcl file")
   (exit)))
(start_list "S1")
(mapcar 'add_list S1_list)
(end_list)
(set_tile H:OLE "1")
(action_tile "T1"
"(setq H:OLE \"T1\")")
(action_tile "T2"
"(setq H:OLE \"T2\")")
(action_tile "T3"
"(setq H:OLE \"T3\")")
(action_tile "T4"
"(setq H:OLE \"T4\")")
(if SIZE:DEF
   (set_tile "S1" (itoa SIZE:DEF)))
(action_tile "cancel"
"(done_dialog)(setq userclick nil)")
(action_tile "accept"
   (strcat
    "(progn
   (setq S:IZE (atoi (get_tile \"S1\")) SIZE:DEF S:IZE)"
    "(done_dialog)(setq userclick T))"))
(start_dialog)
(unload_dialog dcl_id)
(if userclick
   (VARIABLE)
)
(princ)
)
(defun VARIABLE ()
(progn
   (cond
   ((= H:OLE "T1"))
   ((= H:OLE "T2"))
   ((= H:OLE "T3"))
   ((= H:OLE "T4"))
   )
)
(setq HOLE H:OLE)
(progn
   (setq SIZE$ (fix S:IZE))
   (setq SIZE$ (nth S:IZE S1_list))
   (cond
   ((= SIZE$ "1500mm")(setq SIZE# 1500))
   ((= SIZE$ "1350mm")(setq SIZE# 1350))
   ((= SIZE$ "1250mm")(setq SIZE# 1250))
   ((= SIZE$ "1050mm")(setq SIZE# 1050))
   ((= SIZE$"900mm")(setq SIZE#900))
   ((= SIZE$"750mm")(setq SIZE#750))
   ((= SIZE$"675mm")(setq SIZE#675))
   ((= SIZE$"600mm")(setq SIZE#600))
   ((= SIZE$"525mm")(setq SIZE#525))
   ((= SIZE$"450mm")(setq SIZE#450))
   ((= SIZE$"375mm")(setq SIZE#375))
   ((= SIZE$"300mm")(setq SIZE#300))
   ((= SIZE$"225mm")(setq SIZE#225))
   ((= SIZE$"150mm")(setq SIZE#150))
   )
)
(setq SIZE (RTOS SIZE# 2 0))
(ANSWER)
(princ)
)
(defun ANSWER ()
(progn
   (ALERT (strcat "Hole selected is: "HOLE""))
   (ALERT (strcat "Size selected is: "SIZE"mm"))
)
(POPUP_MF)
(princ)
)

The Buzzard 发表于 2022-7-6 12:14:25

现在有两个弹出列表,它们以相同的方式工作。
你没有让程序报告你选择的内容,而是
可以使用变量执行或在函数中使用。
请注意,变量大小#用于实数,以防需要使用实数。
我不知道你是否需要这个,但我还是包括了它。
我希望这些例子能给你提供一个可以做什么的想法
通过编程。
 
DCL
popup2 : dialog {                                 //*dialog name
      label = "Existing Storm Sewers";         //*give it a label
      : row {                                    //*define row
          : boxed_column {                         //*define boxex_column
            : popup_list {
            label = "Choose a Hole Type";      //*give it a label
            key = "T1";
            edit_width = 8;
            }
            : spacer {
            height = 0;
            }
          }                                        //*end column
      }                                          //*end row
      : row {                                    //*define row
          : boxed_column {                         //*define boxex_column
            : popup_list {
            label = "Choose a Size";             //*give it a label
            key = "S1";
            edit_width = 8;
            }
            : spacer {
            height = 0;
            }
          }                                        //*end boxed_column
      }                                          //*end row
      : row {                                    //*define row
          : column {                               //*define column
            ok_cancel ;                            //*predifined OK/Cancel
            : paragraph {                        //*define paragraph
            : text_part {                        //*define text
                label = "Designed by Brian Deasy"; //*give it some text
            }                                    //*end text
            : text_part {                        //*define more text
                label = "for CCC NNRDO";         //*some more text
            }                                    //*end text
            }                                    //*end paragraph
          }                                        //*end column
      }                                          //*end row
      }                                          //*end dialog
LSP
(defun C:POPUP2 ()
(POPUP_MF)
(princ)
)
(defun POPUP_MF (/ HOLE$ SIZE$ SIZE# HOLE SIZE)
(setq SIZE# 1500)
(setq T1_list
'("Type 1" "Type 2"
    "Type 3" "Type 4"))
(setq S1_list
'("1500mm" "1350mm"
    "1200mm" "1050mm"
   "900mm""750mm"
   "675mm""600mm"
   "525mm""450mm"
   "375mm""300mm"
   "225mm""150mm"))
(setq dcl_id (load_dialog "popup2.dcl"))
(if (not (new_dialog "popup2" dcl_id))
   (progn
   (alert "Can not find your dcl file")
   (exit)))
(start_list "T1")
(mapcar 'add_list T1_list)
(end_list)
(start_list "S1")
(mapcar 'add_list S1_list)
(end_list)
(if HOLE2:DEF
   (set_tile "T1" (itoa HOLE2:DEF)))
(if SIZE2:DEF
   (set_tile "S1" (itoa SIZE2:DEF)))
(action_tile "cancel"
"(done_dialog)(setq userclick nil)")
(action_tile "accept"
   (strcat
    "(progn
   (setq H:OLE2 (atoi (get_tile \"T1\")) HOLE2:DEF H:OLE2)"
    "(setq S:IZE2 (atoi (get_tile \"S1\")) SIZE2:DEF S:IZE2)"
    "(done_dialog)(setq userclick T))"))
(start_dialog)
(unload_dialog dcl_id)
(if userclick
   (VARIABLE)
)
(princ)
)
(defun VARIABLE ()
(progn
   (setq HOLE$ (fix H:OLE2))
   (setq HOLE$ (nth H:OLE2 T1_list))
   (cond
   ((= HOLE$ "TYPE 1"))
   ((= HOLE$ "TYPE 2"))
   ((= HOLE$ "TYPE 3"))
   ((= HOLE$ "TYPE 4"))
   )
)
(setq HOLE HOLE$)
(progn
   (setq SIZE$ (fix S:IZE2))
   (setq SIZE$ (nth S:IZE2 S1_list))
   (cond
   ((= SIZE$ "1500mm")(setq SIZE# 1500))
   ((= SIZE$ "1350mm")(setq SIZE# 1350))
   ((= SIZE$ "1200mm")(setq SIZE# 1200))
   ((= SIZE$ "1050mm")(setq SIZE# 1050))
   ((= SIZE$"900mm")(setq SIZE#900))
   ((= SIZE$"750mm")(setq SIZE#750))
   ((= SIZE$"675mm")(setq SIZE#675))
   ((= SIZE$"600mm")(setq SIZE#600))
   ((= SIZE$"525mm")(setq SIZE#525))
   ((= SIZE$"450mm")(setq SIZE#450))
   ((= SIZE$"375mm")(setq SIZE#375))
   ((= SIZE$"300mm")(setq SIZE#300))
   ((= SIZE$"225mm")(setq SIZE#225))
   ((= SIZE$"150mm")(setq SIZE#150))
   )
)
(setq SIZE (RTOS SIZE# 2 0))
(ANSWER)
(princ)
)

(defun ANSWER ()
(progn
   (ALERT (strcat "Hole selected is: "HOLE" "))
   (ALERT (strcat "Size selected is: "SIZE"mm "))
)
(POPUP_MF)
(princ)
)

woodman78 发表于 2022-7-6 12:19:22

谢谢你的秃鹰。我不得不说,这是一个非常巧妙的解决方案,我运行得越多,我就越倾向于使用弹出框。我保持了dcl不变,并尝试在应答例程中修改lsp,如下所示,使用孔和尺寸创建线型名称和图层名称,然后像以前一样通过多段线运行。我得到了坏的功能错误。我想我说的对,在回答孔和大小已经转换为字符串,所以我不需要再转换了。对吗???
 
 
 

(defun C:POPUP3 ()
(POPUP_MF)
(princ)
)
(defun POPUP_MF (/ HOLE$ SIZE$ SIZE# HOLE SIZE a b)
(setq SIZE# 1500)
(setq T1_list
'("Type 1" "Type 2"
    "Type 3" "Type 4"))
(setq S1_list
'("1500mm" "1350mm"
    "1200mm" "1050mm"
   "900mm""750mm"
   "675mm""600mm"
   "525mm""450mm"
   "375mm""300mm"
   "225mm""150mm"))
(setq dcl_id (load_dialog "popup2.dcl"))
(if (not (new_dialog "popup2" dcl_id))
   (progn
   (alert "Can not find your dcl file")
   (exit)))
(start_list "T1")
(mapcar 'add_list T1_list)
(end_list)
(start_list "S1")
(mapcar 'add_list S1_list)
(end_list)
(if HOLE2:DEF
   (set_tile "T1" (itoa HOLE2:DEF)))
(if SIZE2:DEF
   (set_tile "S1" (itoa SIZE2:DEF)))
(action_tile "cancel"
"(done_dialog)(setq userclick nil)")
(action_tile "accept"
   (strcat
    "(progn
   (setq H:OLE2 (atoi (get_tile \"T1\")) HOLE2:DEF H:OLE2)"
    "(setq S:IZE2 (atoi (get_tile \"S1\")) SIZE2:DEF S:IZE2)"
    "(done_dialog)(setq userclick T))"))
(start_dialog)
(unload_dialog dcl_id)
(if userclick
   (VARIABLE)
)
(princ)
)
(defun VARIABLE ()
(progn
   (setq HOLE$ (fix H:OLE2))
   (setq HOLE$ (nth H:OLE2 T1_list))
   (cond
   ((= HOLE$ "TYPE 1"))
   ((= HOLE$ "TYPE 2"))
   ((= HOLE$ "TYPE 3"))
   ((= HOLE$ "TYPE 4"))
   )
)
(setq HOLE HOLE$)
(progn
   (setq SIZE$ (fix S:IZE2))
   (setq SIZE$ (nth S:IZE2 S1_list))
   (cond
   ((= SIZE$ "1500mm")(setq SIZE# 1500))
   ((= SIZE$ "1350mm")(setq SIZE# 1350))
   ((= SIZE$ "1200mm")(setq SIZE# 1200))
   ((= SIZE$ "1050mm")(setq SIZE# 1050))
   ((= SIZE$"900mm")(setq SIZE#900))
   ((= SIZE$"750mm")(setq SIZE#750))
   ((= SIZE$"675mm")(setq SIZE#675))
   ((= SIZE$"600mm")(setq SIZE#600))
   ((= SIZE$"525mm")(setq SIZE#525))
   ((= SIZE$"450mm")(setq SIZE#450))
   ((= SIZE$"375mm")(setq SIZE#375))
   ((= SIZE$"300mm")(setq SIZE#300))
   ((= SIZE$"225mm")(setq SIZE#225))
   ((= SIZE$"150mm")(setq SIZE#150))
   )
)
(setq SIZE (RTOS SIZE# 2 0))
(ANSWER)
(princ)
)

(defun ANSWER ()
(progn
   ;(ALERT (strcat "Hole selected is: "HOLE" "))
   ;(ALERT (strcat "Size selected is: "SIZE"mm "))
      (setq a (strcat "CCC_DR_" (SIZE)(HOLE))
            b (strcat "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_" (SIZE)))
      (if (not (tblsearch "LTYPE" a))
             (command "_.-linetype" "_l" a "acadiso.lin" ""))
             (command "._-layer"   "_N"   b   "_M"   b   "_L"   ab   "_C"   "84"   b   "_LW"   "0.3"   b    "" )
(command "pline" pause "width" "0.0" "0.0" pause "width" "0.0" "0.0")
)
(POPUP_MF)
(princ)
)

The Buzzard 发表于 2022-7-6 12:21:28

 
我很高兴你看到了光明,是的,在这一点上,他们是弦。如果你卡住了,就告诉我。
我会看一下新增内容,稍后再给你回复。

The Buzzard 发表于 2022-7-6 12:23:39

 
 
伍德曼78,
 
同样,我没有你的线型,所以我在这里蒙着眼睛工作。
使用以下dcl和lsp。我不得不从你身上去掉一些帕伦。
程序现在停止查找线型,正如我前面提到的,我没有。
这应该适合你。
 
键入POPUP3开始。
只需确保您只使用以下两个代码。
 
DCL
popup3 : dialog {                                 //*dialog name
      label = "Existing Storm Sewers";         //*give it a label
      : row {                                    //*define row
          : boxed_column {                         //*define boxex_column
            label = "Choose a Type";               //*give it a label
            : popup_list {
            key = "T1";
            label = "Type";                      //*give it a label
            edit_width=8;
            alignment = centered;
            }
            : spacer {
            height = 0;
            }
          }                                        //*end column
      }                                          //*end row
      : row {                                    //*define row
          : boxed_column {                         //*define boxex_column
            label = "Choose a Size";               //*give it a label
            : popup_list {
            key = "S1";
            label = "Size";                      //*give it a label
            edit_width=8;
            alignment = centered;
            }
            : spacer {
            height = 0;
            }
          }                                        //*end boxed_column
      }                                          //*end row
      : row {                                    //*define row
          : column {                               //*define column
            ok_cancel ;                            //*predifined OK/Cancel
            : paragraph {                        //*define paragraph
            : text_part {                        //*define text
                label = "Designed by Brian Deasy"; //*give it some text
            }                                    //*end text
            : text_part {                        //*define more text
                label = "for CCC NNRDO";         //*some more text
            }                                    //*end text
            }                                    //*end paragraph
          }                                        //*end column
      }                                          //*end row
      }                                          //*end dialog
 
LSP
(defun C:POPUP3 ()
(POPUP_MF)
(princ)
)
(defun POPUP_MF (/ HOLE$ SIZE$ SIZE# HOLE SIZE a b)
(setq SIZE# 1500)
(setq T1_list
'("Type 1" "Type 2"
    "Type 3" "Type 4"))
(setq S1_list
'("1500mm" "1350mm"
    "1200mm" "1050mm"
   "900mm""750mm"
   "675mm""600mm"
   "525mm""450mm"
   "375mm""300mm"
   "225mm""150mm"))
(setq dcl_id (load_dialog "popup3.dcl"))
(if (not (new_dialog "popup3" dcl_id))
   (progn
   (alert "Can not find your dcl file")
   (exit)))
(start_list "T1")
(mapcar 'add_list T1_list)
(end_list)
(start_list "S1")
(mapcar 'add_list S1_list)
(end_list)
(if HOLE2:DEF
   (set_tile "T1" (itoa HOLE2:DEF)))
(if SIZE2:DEF
   (set_tile "S1" (itoa SIZE2:DEF)))
(action_tile "cancel"
"(done_dialog)(setq userclick nil)")
(action_tile "accept"
   (strcat
    "(progn
   (setq H:OLE2 (atoi (get_tile \"T1\")) HOLE2:DEF H:OLE2)"
    "(setq S:IZE2 (atoi (get_tile \"S1\")) SIZE2:DEF S:IZE2)"
    "(done_dialog)(setq userclick T))"))
(start_dialog)
(unload_dialog dcl_id)
(if userclick
   (VARIABLE)
)
(princ)
)
(defun VARIABLE ()
(progn
   (setq HOLE$ (fix H:OLE2))
   (setq HOLE$ (nth H:OLE2 T1_list))
   (cond
   ((= HOLE$ "TYPE 1"))
   ((= HOLE$ "TYPE 2"))
   ((= HOLE$ "TYPE 3"))
   ((= HOLE$ "TYPE 4"))
   )
)
(setq HOLE HOLE$)
(progn
   (setq SIZE$ (fix S:IZE2))
   (setq SIZE$ (nth S:IZE2 S1_list))
   (cond
   ((= SIZE$ "1500mm")(setq SIZE# 1500))
   ((= SIZE$ "1350mm")(setq SIZE# 1350))
   ((= SIZE$ "1200mm")(setq SIZE# 1200))
   ((= SIZE$ "1050mm")(setq SIZE# 1050))
   ((= SIZE$"900mm")(setq SIZE#900))
   ((= SIZE$"750mm")(setq SIZE#750))
   ((= SIZE$"675mm")(setq SIZE#675))
   ((= SIZE$"600mm")(setq SIZE#600))
   ((= SIZE$"525mm")(setq SIZE#525))
   ((= SIZE$"450mm")(setq SIZE#450))
   ((= SIZE$"375mm")(setq SIZE#375))
   ((= SIZE$"300mm")(setq SIZE#300))
   ((= SIZE$"225mm")(setq SIZE#225))
   ((= SIZE$"150mm")(setq SIZE#150))
   )
)
(setq SIZE (RTOS SIZE# 2 0))
(ANSWER)
(princ)
)

(defun ANSWER ()
(progn
   (setq a (strcat "CCC_DR_" "SIZE" "HOLE"))
   (setq b (strcat "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_" "SIZE"))
   (if
   (not
       (tblsearch "LTYPE" a)
   )
   (command "_.-linetype" "_l" a "acadiso.lin" "")
   )
   (command "._-layer"   "_N"   b   "_M"   b   "_L"   ab   "_C"   "84"   b   "_LW"   "0.3"   b    "" )
   (command "pline" pause "width" "0.0" "0.0" pause "width" "0.0" "0.0")
)
(POPUP_MF)
(princ)
)

woodman78 发表于 2022-7-6 12:29:28

这似乎做得很好。不过只有一件事。当我运行lsp时,它会加载对话框,当我选择我的选项并按OK时,它会消失。我开始绘制pline,在第二个点,方框再次出现,我必须再次按OK。然后,Pline命令再次启动。该框是否需要隐藏在userclick上??
 
这是我做了一些小修改的代码,以获取要加载的线型和线型文件。
 

(defun C:POPUP3 ()
(POPUP_MF)
(princ)
)
(defun POPUP_MF (/ HOLE$ SIZE$ SIZE# HOLE SIZE a b)
(setq SIZE# 1500)
(setq T1_list
'("Type 1" "Type 2"
    "Type 3" "Type 4"))
(setq S1_list
'("1500mm" "1350mm"
    "1200mm" "1050mm"
   "900mm""750mm"
   "675mm""600mm"
   "525mm""450mm"
   "375mm""300mm"
   "225mm""150mm"))
(setq dcl_id (load_dialog "popup3.dcl"))
(if (not (new_dialog "popup3" dcl_id))
   (progn
   (alert "Can not find your dcl file")
   (exit)))
(start_list "T1")
(mapcar 'add_list T1_list)
(end_list)
(start_list "S1")
(mapcar 'add_list S1_list)
(end_list)
(if HOLE2:DEF
   (set_tile "T1" (itoa HOLE2:DEF)))
(if SIZE2:DEF
   (set_tile "S1" (itoa SIZE2:DEF)))
(action_tile "cancel"
"(done_dialog)(setq userclick nil)")
(action_tile "accept"
   (strcat
    "(progn
   (setq H:OLE2 (atoi (get_tile \"T1\")) HOLE2:DEF H:OLE2)"
    "(setq S:IZE2 (atoi (get_tile \"S1\")) SIZE2:DEF S:IZE2)"
    "(done_dialog)(setq userclick T))"))
(start_dialog)
;(unload_dialog dcl_id)
(if userclick
   (VARIABLE)
(unload_dialog dcl_id)
)
(princ)
)
(defun VARIABLE ()
(progn
   (setq HOLE$ (fix H:OLE2))
   (setq HOLE$ (nth H:OLE2 T1_list))
   (cond
   ((= HOLE$ "TYPE 1"))
   ((= HOLE$ "TYPE 2"))
   ((= HOLE$ "TYPE 3"))
   ((= HOLE$ "TYPE 4"))
   )
)
(setq HOLE HOLE$)
(progn
   (setq SIZE$ (fix S:IZE2))
   (setq SIZE$ (nth S:IZE2 S1_list))
   (cond
   ((= SIZE$ "1500mm")(setq SIZE# 1500))
   ((= SIZE$ "1350mm")(setq SIZE# 1350))
   ((= SIZE$ "1200mm")(setq SIZE# 1200))
   ((= SIZE$ "1050mm")(setq SIZE# 1050))
   ((= SIZE$"900mm")(setq SIZE#900))
   ((= SIZE$"750mm")(setq SIZE#750))
   ((= SIZE$"675mm")(setq SIZE#675))
   ((= SIZE$"600mm")(setq SIZE#600))
   ((= SIZE$"525mm")(setq SIZE#525))
   ((= SIZE$"450mm")(setq SIZE#450))
   ((= SIZE$"375mm")(setq SIZE#375))
   ((= SIZE$"300mm")(setq SIZE#300))
   ((= SIZE$"225mm")(setq SIZE#225))
   ((= SIZE$"150mm")(setq SIZE#150))
   )
)
(setq SIZE (RTOS SIZE# 2 0))
(ANSWER)
(princ)
)

(defun ANSWER ()
(progn
   (setq a (strcat "CCC_DR_" SIZE "_" HOLE)
         b (strcat "CCC_SERVICES_EXISTING_Drainage_Storm_Sewer_" SIZE "_" HOLE)
   )
   (if
   (not
       (tblsearch "LTYPE" a)
   )
   (command "_.-linetype" "_l" a "acadiso.lin" "")
   )
   (command "._-layer"   "_N"   b   "_M"   b   "_L"   ab   "_C"   "84"   b   "_LW"   "0.3"   b    "" )
   (command "pline" pause "width" "0.0" "0.0" pause "width" "0.0" "0.0" "")
   (command "pline")
)
(POPUP_MF)
(princ)
)

阿卡迪索。txt文件
页: 1 [2]
查看完整版本: DCL单选按钮