川雪 发表于 2022-4-28 21:32:37

在屏上选点时如何退出DCL窗体?


DCL窗体如下:

DCL窗体的代码如下:

attline:dialog{
label="直线属性查看修改";
:button{
label="选择直线<";
key="bt_selectline";
}
:row{
:boxed_column{
label="直线原始属性";
:edit_box{
label="图元名:";
edit_width=10;
key="line_tuyu";
}
:edit_box{
label="图层名称:";
edit_width=10;
key="line_tuceng";
}
:edit_box{
label="起点坐标:";
edit_width=10;
key="line_qizuobiao";
}
:edit_box{
label="终点坐标:";
edit_width=10;
key="line_zhongzuobiao";
}
}
:boxed_column{
label="直线可修改项";
alignment=left;
spacer_1;
:edit_box{

label="新图元名:";
edit_width=10;
key="line_tuyu_new";
}
:row{
:edit_box{
label="新起点坐标:";
edit_width=10;
key="line_qizuobiao_new";
}
:button{
label="屏选起点<";
key="bt_qidiansel";
}
}
:row{
:edit_box{
label="新终点坐标:";
edit_width=10;
key="line_zhongzuobiao_new";

}
:button{
label="屏选终点<";
key="btn_zhongdiansel";
}
}
}
}

spacer_1;

ok_cancel;

}我的lisp程序如下:
(defun c:cx ()
(setvar "cmdecho" 0)
(setq osm (getvar "osmode"))
(setvar "osmode" 0)      ;
(setq
    dcl_id (load_dialog
       "D:\\Autodesk\\AutoCAD 2019\\Support\\lispbag\\winatt"
   )
)
(setq dd 2)
; (while (> dd 1)
    (new_dialog "attline" dcl_id)
    (action_tile "accept" "(done_dialog 1)")
    (action_tile "cancer" "(done_dialog 0)")
    (action_tile "bt_selectline" "(done_dialog 2)")
    (setq dd (start_dialog))
    (if(= dd 2)
      progn
      (
       (initget 1)
(setq p (getpoint "\nPlease get a point:"))
(setq x (car p) y (cadr p))
      )
      ;
    )
   
; )
(if (= dd 0)
    (print "00")
)
(if (= dd 1)
    (print "11")
)
(unload_dialog dcl_id)
(setvar "osmode" osm)

)
按窗体上的第一个按钮(选择直线<)时,我想在屏上选择一点。我点击时实际执行了。但是窗体不隐藏。不知道为什么?点“确定”按钮后会执行我选点时的命令。

川雪 发表于 2022-4-28 21:36:18

注册后提问的第一个问题,请大家多多帮忙。:handshake

菜卷鱼 发表于 2022-4-29 09:15:44

不知道你讲的啥意思,但是我觉得这样是正常的
(defun c:cx (/ osm dcl_id dd p x y)
(setvar "cmdecho" 0)
(setq osm (getvar "osmode"))
(setvar "osmode" 0)
(setq
    dcl_id (load_dialog "D:\\abc.dcl")
)
(setq dd 2)
(while (> dd 1)
    (new_dialog "attline" dcl_id)
    (action_tile "accept" "(done_dialog 1)")
    (action_tile "cancer" "(done_dialog 0)")
    (action_tile "bt_selectline" "(done_dialog 2)")
    (setq dd (start_dialog))
    (cond
      ((= dd 2)
       (progn
       (initget 1)
       (setq p (getpoint "\nPlease get a point:"))
       (setq x (car p)
             y (cadr p)
       )
       )
      )
      ((= dd 0)
       (print "00")
      )
      ((= dd 1)
       (print "11")
      )
    )
)
(unload_dialog dcl_id)
(setvar "osmode" osm)
(prin1)
)

自贡黄明儒 发表于 2022-4-29 09:27:28

是你while中写错了吧
"新终点坐标:"key="line_zhongzuobiao_new"。在while中没有

川雪 发表于 2022-4-29 19:41:25

菜卷鱼 发表于 2022-4-29 09:15
不知道你讲的啥意思,但是我觉得这样是正常的

谢谢,终于解决了。我当初对着教学截图看了一天。都没发现问题,原来问题在最上边。谢谢,真得非常谢谢。

川雪 发表于 2022-4-29 19:51:19

自贡黄明儒 发表于 2022-4-29 09:27
是你while中写错了吧
"新终点坐标:"key="line_zhongzuobiao_new"。在while中没有

谢谢。按三楼的方法解决了。非常感谢。
页: [1]
查看完整版本: 在屏上选点时如何退出DCL窗体?