ajs 发表于 2022-7-6 15:04:26

打印变量#039;s值

你好,
 
我试图找出如何将变量的值打印到命令行,而不让它重复。
 
例如,假设变量MyVar包含以下字符串:12 x 5,我想打印到命令行。
 
当我尝试这个:(Princ MyVar)时,信息打印两次:12 x 5“12 x 5”
我一直在玩弄控制代码,但我无法避免返回变量。
 
在我模糊的理解中,我知道这与lisp计算表达式的方式有关。
 
有没有简单的方法?
 
谢谢你的建议
 
AJS公司

lpseifert 发表于 2022-7-6 15:13:58

(提示MyVar)(普林斯)也许?

JohnM 发表于 2022-7-6 15:19:03

使用末尾的(princ)
同时查找prin1、提示和打印

Lee Mac 发表于 2022-7-6 15:25:18

如果我错了,请纠正我,但我认为重复的原因是使用“princ”的操作返回提供给它的变量或字符串的值,但princ本身也会将提供的变量打印到命令行。
 
当您用另一个(princ)跟随(princ)时,最后一个返回是一个重复的空字符串,因为没有为princ赋值,因此没有打印值。
 
因此,这抑制了第一个princ的返回,并且仅打印分配给第一个princ的值。
 
*希望这些信息是正确的*
 
干杯
 

CALCAD 发表于 2022-7-6 15:31:29

约翰先告诉我,但你可能需要进一步的解释。该死的李,我输了两次!
 
ajs,lpsiefert的解决方案会很好,下面是原因。Autolisp程序的默认行为是显示上次调用的函数的值。避免不需要的显示的常用方法是使用无参数的(princ)关闭程序。如果运行此程序:
 
(定义c:tmv(/myvar1 myvar2)
(setq myvar1“12 x 5”)
(setq myvar2“5 x 12”)
(princ myvar1)
(ERPI)
(princ myvar2)
)
 
它显示:
 
12 x 5
5 x 12
“5 x 12”
 
如果您在中添加(princ):
 
(定义c:tmv(/myvar1 myvar2)
(setq myvar1“12 x 5”)
(setq myvar2“5 x 12”)
(princ myvar1)
(ERPI)
(princ myvar2)
(普林斯)
)
 
它显示:
 
12 x 5
5 x 12
 
我希望这有帮助。

Lee Mac 发表于 2022-7-6 15:40:02

引自ACAD:
 

JohnM 发表于 2022-7-6 15:43:23

长版本
 

(DEFUN C:PV ()
(setq acaddoc (vla-get-activedocument (vlax-get-acad-object)))
(setq util (vla-get-utility acaddoc))
(vla-prompt util "\nabc")
(princ)
)

ajs 发表于 2022-7-6 15:50:26

感谢您的解决方案!
 
就我个人而言,我想说的是,学习Lisp确实与我内部组织信息的方式相吻合。
 
我在Crystal Reports方面有一定的能力,但我在Lisp中获得的知识似乎能够以一种比我所学的任何其他编程语言更好的方式传递信息。
 
所以我想我想说的是,在这个论坛上慷慨提供给我的建议不仅实用,而且是一种真正的快乐。
 
非常感谢,
 
AJS公司

Lee Mac 发表于 2022-7-6 15:57:23

没问题AJS-通常我在发布信息时也会学到一些新东西
 
干杯
 

JohnM 发表于 2022-7-6 15:59:49

组织是绘画和编程的关键,也是工作和生活的关键。
Lisp代表列表处理,它每行执行一行,因此不会在A点到B点之间跳跃。如果你训练自己这样思考,你将能够更快、更正确地解决问题,并获得更大的成功。我无法告诉你我遇到过多少绘图员和程序员,他们组织得如此松散,以至于他们花在追根究底上的时间比完成工作还要多。
页: [1] 2
查看完整版本: 打印变量#039;s值