有一个愚蠢的星期五时刻。。。
我试图创建一个LISP例程,当一个图形打开时,它没有设置为我列表中批准的比例,它会提醒用户,并将比例设置为默认的1/8”。这是我到目前为止拥有的部分,但无法使其正常工作。我想我需要mapcar或其他东西,但现在是星期五下午,我梦想着有一个为期3天的周末。我希望在一天结束前完成这项工作。感谢任何帮助!(setq approvedscales '(0.125 0.25 0.333 0.5 0.667 1 1.33 2 1.25 2.5 3.75 5 6.25 7.5 8.75 10 11.25 12.5))
(if (/= (getvar "dimscale") approvedscales)
(progn
(alert "No usable scale has been detected in this drawing!\nThis drawing has been set to the default 1/8\" scale.")
(setq thehfscale "1/8")
);end progn
);end if 考虑vl定位方法。
(if (vl-position (getvar 'dimscale) myDimScaleList)
T
nil
)
另一种选择:
(if (member (getvar "dimscale") approvedscales)
T
nil
)
谢谢大家的建议!我最终使用了pBe的“成员”格式,效果很好!
FWIW-vl位置为f a s t e r
示例代码。。。。
(setq dimScales '(0.125 0.25 0.333 0.5 0.667 1 1.33 2 1.25 2.5 3.75 5 6.25 7.5 8.75 10 11.25 12.5))
(defun _member ( dimScales )
(member (getvar "dimscale") dimScales)
)
(defun _vl-position ( dimScales )
(vl-position (getvar 'dimscale) dimScales)
)
(bench '( _member _vl-position ) (list dimScales) 10000)
速度测试。。。。
_MEMBER
Elapsed: 62
Average: 0.0062
_VL-POSITION
Elapsed: 31
Average: 0.0031
好奇,为什么:
(if <something>
t
nil
)
结构
由于任何非零值都被认为是真的,IF语句变得多余,因此测试可以简单地进行:
(defun _member ( dimScales )
(member (getvar 'dimscale) dimScales)
)
简单答案。。。用户错误。 此处更新了速度测试。
页:
[1]