Lt Dan's l 发表于 2022-7-6 10:03:48

写这个更好的方法?

为什么这看起来有点迟缓?
 
(defun c:mod (/ ent id ss i)
(if (setq ss (ssget '((0 . "insert"))))
   (repeat (setq id (sslength ss))
   (if (eq (vlax-get-property (setq ent (vlax-ename->vla-object (ssname ss (setq id (1- id)))))
         "effectivename") "panel")
         (repeat (setq i (length (setq ent (vlax-invoke ent "getdynamicblockproperties"))))
    (if (eq (vla-get-propertyname (nth (setq i (1- i)) ent)) "Panel Length")
             (vla-put-value (nth i ent) "2")
         )
         )
   )
   )
   (prompt "No objects selected!")
)
(princ)
)

alanjt 发表于 2022-7-6 10:07:14

使用foreach逐步了解动态块特性。

Lee Mac 发表于 2022-7-6 10:11:42

将其视为一项挑战,这是我所能得到的最大优化:
 
当然,未经测试。

alanjt 发表于 2022-7-6 10:13:47

vla put Value返回put Value还是nil?vl-some不需要非nil值来停止遍历列表吗?

Lee Mac 发表于 2022-7-6 10:18:01

很好的一点-没有考虑到这一点-没有错误,只是效率比可能的低
 
已更新。

alanjt 发表于 2022-7-6 10:22:36

刚刚打破了vl-some的目的,让它像使用mapcar+lambda一样。

Lee Mac 发表于 2022-7-6 10:24:04

 
没错-当然不是故意的

alanjt 发表于 2022-7-6 10:26:37

我知道。只是帮助你优化。

Lt Dan's l 发表于 2022-7-6 10:30:55

我猜这只是我的电脑,因为它似乎与艾伦的foreach建议和李的日常生活迟缓。
 
谢谢大家!

alanjt 发表于 2022-7-6 10:32:25

你选择了多少个街区?
页: [1] 2
查看完整版本: 写这个更好的方法?