Rufusff7 发表于 2022-7-22 05:01:10

如何记住dcl窗口中的值

你好
1)第一次启动程序-带有默认值的DCL窗口
2)第二次和下一次启动程序-DCL窗口,其中包含您先前输入的值
DCL:
r1:boxed_row{
                  width=60;
                  
                  :boxed_column{
                                 
                                 : text {label = "Enter dimensions:"; key = "w_t1";}
: edit_box {label = "A (Width)"; key = "W_A"; edit_width=10; value = "0";}
: edit_box {label = "B (Lenght)"; key = "W_B"; edit_width=10; value = "0";}
: edit_box {label = "C (Height)"; key = "W_C"; edit_width=10; value = "0";}
: edit_box {label = "H1 (Front)"; key = "W_H1"; edit_width=10; value = "50";}
: edit_box {label = "H2 (Back)"; key = "W_H2"; edit_width=10; value = "30";}
: edit_box {label = "CH (Chamfer)"; key = "W_CH"; edit_width=10; value = "25";}
: edit_box {label = "D (Diameter outlet)"; key = "W_D"; edit_width=10; value = "51";}
: edit_box {label = "E (>CH)"; key = "W_E"; edit_width=10; value = "75";}
: edit_box {label = "D1 (Diameter of bar)"; key = "W_D1"; edit_width=10; value = "16";}
: edit_box {label = "F1"; key = "W_F1"; edit_width=10; value = "50";}
: edit_box {label = "F2"; key = "W_F2"; edit_width=10; value = "50";}
: edit_box {label = "G"; key = "W_G"; edit_width=10; value = "150";}
: edit_box {label = "H (>D1)"; key = "W_H"; edit_width=10; value = "30";}
}
:boxed_column {:image{width=120; height=35; aspect_ratio=3; color=-2; key="dbimage"; is_enabled=false;}
}
}
d1:dialog{label="Drain Pallet";
         r1;
         
         ok_cancel;
}
LSP部分:
;-----Read_Dimensions_From_DCL-----
(defun savevars()
;-----Box-----
(setq A (atoi (get_tile "W_A")))
(setq B (atoi (get_tile "W_B")))
(setq C (atoi (get_tile "W_C")))
;-----Slope-----
(setq H1 (atoi (get_tile "W_H1")))
(setq H2 (atoi (get_tile "W_H2")))
;-----Chamfer-----
(setq CH (atoi (get_tile "W_CH")))
;-----Drain_Tube---------
(setq D (atoi (get_tile "W_D")))
;-----Handrails-----
(setq E (atoi (get_tile "W_E")))
(setq D1 (atoi (get_tile "W_D1")))
(setq F1 (atoi (get_tile "W_F1")))
(setq F2 (atoi (get_tile "W_F2")))
(setq G (atoi (get_tile "W_G")))
(setq H (atoi (get_tile "W_H")))
)

此程序的所有文件都在附件中。
**** Hidden Message *****

BIGAL 发表于 2022-7-25 17:33:29

看看这是一个库例程,你可以有1到20行输入,它使用一个列表进行输入。代码中有一些示例。它的动态性在于列表中的项目数是dcl最终的大小
您可以预设值。示例中可能没有显示,但如果存在预设值“200”,您可以用变量rebarsz为200的(rtos rebarsz 2 0)替换。您不能将该项完全保留为空,因此在运行dcl之前,请使用a,如果Rebarsznil将其设置为200等。运行dcl只需要大约4行代码
因为它列出了答案,所以很容易使用(n x an)获得所有变量
Ps还有多个单选按钮和多个切换。

Rufusff7 发表于 2022-7-30 23:41:46

基本上就是我写SQLiteLisp的目的。OpenDCL有一个存档特性来保存数据。许多保存数据的好方法

Rufusff7 发表于 2022-7-31 04:48:54

我希望它以这种方式工作。这个Lisp将被其他4个用户使用,所以他们不应该相互干扰(如果我们使用其他文件,显然会发生什么)。
这取决于文件的存储位置-如果文件对每个用户都是本地的,那么每个用户都可以存储自己的个人对话框值集。

Roy_043 发表于 2022-8-4 09:26:21

我把它存储在服务器上,所以如果我更新了什么,它会自动为我的同事更新。
我的lisp中的变量是全局变量(在我运行lisp后,系统会记住它们)。但是当DCL窗口弹出时,变量仍然是旧的。现在我或多或少明白了DCL -> LSP连接是如何工作的。但是我不知道如何连接LSP -> DCL,或者LSP
DCL。

Rufusff7 发表于 2022-8-4 12:38:48

仅供参考,OpenDCL有一个归档特性,可以将列表存储在一个文件中

Rufusff7 发表于 2022-8-5 04:35:58

在opendcl文档中找到它们,所以你可以保存你的对话框或其他数据的状态

Rufusff7 发表于 2022-8-5 23:53:53

OP谈论的是DCL,而不是OpenDCL。

BIGAL 发表于 2022-8-6 09:01:20


是的,没有理由op不能同时使用:)
我想当我看到DCL时,我只是畏缩
页: [1]
查看完整版本: 如何记住dcl窗口中的值