学习DCL
我刚刚开始学习DCL。很酷。但我被卡住了。当用户输入他们的新选择时,我似乎无法通过公式重新计算我的平铺值。我可能只是把东西的顺序弄错了。LISP如下:
(defun C:testdcl (/ lu lp)
(setq lu (getvar "LUNITS"))
(setq lp(getvar "LUPREC"))
(setq dcl_id (load_dialog "ConcTO.dcl"))
(if (not (new_dialog "ConcTO" dcl_id))
(exit)
);if
;------------------- set up dialogue box default settings ----------------------
(if (not b_depth)
(setq b_depth "18.0")
);end if
(if (not s_thick)
(setq s_thick "6.0")
);end if
;------------------- set dialogue box default values ----------------------
(set_tile "beam_depth" b_depth)
(set_tile "slab_thick" s_thick)
(set_tile "beam_area" (rtos (/ fBeamArea 144.0) 2 lp))
(set_tile "slab_area" (rtos (/ fSlabArea 144.0) 2 lp))
(setq tBeamDepth (get_tile "beam_depth"))
(setq BeamDepth (atoi tBeamDepth))
(setq tSlabThick (get_tile "slab_thick"))
(setq SlabThick (atoi tSlabThick))
(set_tile "beam_volume" (rtos (setq BeamVolume (/ (* fBeamArea BeamDepth) 1728.0 27.0)) 2 lp))
(set_tile "slab_volume" (rtos (setq SlabVolume (/ (* fSlabArea SlabThick) 1728.0 27.0) 2 lp)))
;------------------- retrieve dialogue box values ----------------------
(action_tile "beam_depth" "(setq beam_depth $value)")
(action_tile "s_thick" "(setq slab_thick $value)")
(action_tile "beam_area" "(setq beam_area $value)")
(action_tile "beam volume" "(setq beam_volume $value)")
(action_tile "s_area" "(setq slab_area $value)")
(action_tile "slab volume" "(setq slab_vol $value)")
(action_tile "ok" "(done_dialog 1)")
(action_tile "cancel""(done_dialog 0)")
(start_dialog)
(unload_dialog dcl_id)
(princ)
);defun
DCL以下:
任何帮助都将不胜感激。
谢谢
迈克在达拉斯 如果您希望在用户输入数据时更新内容,则需要在“action\u tile”中对更新的值执行另一个“set\u tile”。
此外,“action\u tile”返回的所有值都作为字符串返回,在对其执行任何数学运算之前,必须将其转换为整数或实数。
实例
(action\u tile“test”“(setq testval(atoi($value))newval(*testval 2))(set\u tile“newval”(itoa testval)))
还要注意,action\u互动程序主体中所需的任何引号“必须以\”开头。
除了第一个论点?对于许多人(包括我自己)来说,这是一个不确定的领域,而不是试图挑剔。 对不起,我花了这么长时间才回来。下面是一个DCL简单计算器,我从一开始就由pBe创建并发布http://www.cadtutor.net/forum/showthread.php?67490-使用dcl amp lisp&p=463910&viewfull=1#post463910的计算器
,我相信pBe不会对我借的零件有任何问题。
对于任何想成为DCL程序员的人来说,这都是一个很好的学习工具,因为其中包含了相当多的DCL工作原理示例。
随便玩吧,我尽量让它简单易懂,以免吓跑任何人。
该LSP中有一个内置的自解压DCL文件,因此不需要额外的DCL。
简单的计算器。lsp 非常感谢你的帮助斯诺努特。这正是我一直在寻找学习DCL的方法。 spiker7721我希望它能像一个我再也找不到的类似程序一样帮助你。如果你有任何问题,请告诉我。
布鲁斯
页:
[1]