传递(实数)报价
你好我试图将实数的值传递给变量:
(setvar "tilemode" 0)
(setq ssVP (ssget "_X" (list '(0 . "VIEWPORT") (cons 410 (getvar 'ctab)))))
(setq curScale (vla-get-CustomScale (vlax-ename->vla-object (ssname ssVP 0))))
(setvar "tilemode" 1)
(princ (strcat "\nCurScale "(rtos curScale 2)" "))
(initget (+ 4))
(setq newLTSCALE (getreal "\nInput LTSCALE value <" (rtos curScale ) ">: "))
(if (not newLTSCALE) (setq newLTSCALE 1 ))
它返回以下内容:
CurScale 0.004
Error: too many arguments
我不明白为什么它不接受这个值(在本例中是0.004)作为默认答案? 你好
您需要使用strcat函数在getreal语句中使用curScale变量收集消息文本。
再次看看initget函数的用法 嗨,塔瓦,
是的,我忘了添加strcat!但我不知道如何将引用添加到initget。
我试过这个:
(setvar "tilemode" 0)
(setq ssVP (ssget "_X" (list '(0 . "VIEWPORT") (cons 410 (getvar 'ctab)))))
(setq curScale (vla-get-CustomScale (vlax-ename->vla-object (ssname ssVP 0))))
(setvar "tilemode" 1)
(princ (strcat "\nCurScale "(rtos curScale 2)" "))
(initget "(+ 4) CurScale" )
(setq newLTSCALE (getreal (strcat "\nInput LTSCALE value <" (rtos curScale ) ">: ")))
(if (not newLTSCALE) (setq newLTSCALE (rtos curScale ) ))
它返回:
Error: AutoCAD variable setting rejected: LTSCALE "0.004"
你能给我一些提示吗?我从未在initget函数中使用引号(甚至更少使用“位控制值”(没有负数))” 您已将该值转换为“字符串(rtos)”。系统变量预期为“REAL”
您正在使用符号作为名称和值。尝试将变量/字符串/关键字等分离为唯一性。这就不那么令人困惑了 大卫,我不认为OP是在谈论任何系统变量。
@哦,在你的例子中,你想用initget做什么?
这不是必需的,因为默认值不是关键字。 嗨,大卫,
我尝试了不使用字符串(rtos),但仍然出现了错误。我对此不确定,但你的评论证实了这一点:
塔尔瓦特,
我试图读取视口比例的值(从布局选项卡),并将相同的值放入LTSCALE变量。
对于每个布局选项卡,我只有一个具有相同自定义比例的视口(在本例中,值为0.004)。
因此,要么提示更改LTSCALE并接受默认的“CurScale”,要么直接将“CurScale”值应用于LTSCALE变量。
我希望这是清楚的,谢谢你的回答!
编辑:
李,
我现在明白了,但正如David提到的,变量不接受任何“CurScale”和“(rtos CurScale)”作为其默认答案。
是的,应将变量转换为字符串以在提示消息中使用,但在设置系统变量值时应保持数字。 供考虑:
(defun c:test (/ ssvp cs ns)
(setvar "tilemode" 0)
(setq ssVP (ssget "_X" (list '(0 . "VIEWPORT") (cons 410 (getvar 'ctab)))))
(setq cs (vla-get-CustomScale (vlax-ename->vla-object (ssname ssVP 0))))
(setvar "tilemode" 1)
(initget 6)
(setq ns (getreal (strcat "\nInput LTSCALE value <" (rtos cs) ">: ")))
(or ns (setq ns cs))
(setvar "LTSCALE" ns)
(prin1))
Autolisp既优雅又简单
-大卫 谢谢你,大卫!
我可能需要更仔细地阅读initget函数,
我使用(initget(+4))来获得真正的非负值,但我不知道(initget 4)做同样的工作。(我不记得从哪里得到这个(initget(+4))示例)
你们很有技术,所以这对你们来说可能很简单
我很高兴你们能支持像我这样的初学者(像这样的简单错误对没有经验的人来说是非常恼人的)。
我会跟上我的学习意图,谢谢大家!
页:
[1]
2