维护列表的格式非常重要
每个原子必须:
(“标记名”“old\u val”“new\u val”)
;;;Change Multiple Known ATTRIBute Value With a New Value
(defun c:chgmkat (/ al i ss en ch an ad)
(setq al '(("CODE_4" "See Jane Run" "See Spot Run")
("CODE_4" "See Dick Run" "See Spot Run")
("CODE_5" "See Spot Run" "See Spot Drop")))
(and (setq i -1 ss (ssget "X" '((0 . "INSERT")(66 . 1))))
(while (setq en (ssname ss (setq i (1+ i))))
(setq ch nil
an (entnext en)
ad (entget an))
(while (= "ATTRIB" (cdr (assoc 0 ad)))
(foreach a al
(and (= (strcase (cdr (assoc 2 ad)))
(strcase (nth 0 a)))
(= (strcase (cdr (assoc 1 ad)))
(strcase (nth 1 a)))
(setq ad (subst (cons 1 (nth 2 a))
(assoc 1 ad) ad))
(entmod ad)
(setq ch T)))
(setq an (entnext an)
ad (entget an)))
(if ch (entupd en))))
(prin1))
这给了你多种可能性。
未测试-大卫
(setq al '(("CODE_4" "See Jane Run" "See Spot Die")
("CODE_4" "See Dick Run" "See Jane Run")
("CODE_4" "See Jane Run" "See Dick Die")
("CODE_5" "See Spot Run" "See Spot Drop")))
我喜欢这种方法,因为逻辑链可以相当深。
如果迪克在简之前跑,那么斯波特就可以在附近呆一段时间,让迪克活下来。
-大卫
这个故事的寓意是,做鸡巴或狗是不划算的 只是好奇,大卫。。。
为什么您更喜欢列表方法而不是使用cond? 新手更容易编辑/添加到。
您也可以使用虚线对和assoc。
确切地
为了便于使用,我可以将列表写在外部文件中,(加载)数据,然后滚动-大卫 我在过去的一些命令反应器中使用了点对(显然是cond,因此是问题),即sysvar存储/设置函数。
艾伦/大卫,感谢您的及时回复!:斯坦:
显然,做一只猫也不划算。
就在我以为我已经把所有的垒都盖好的时候,他们给了我一个转弯。
标题栏有许多属性,具有相同的标记、不同的值,显然利用了句柄。有什么建议吗?
而不是使用特殊的分解功能。如果其他一切都失败了,我也会使用它。 那太难看了。。。。
这个场景有什么逻辑吗?第一个标签总是名字,第二个是日期,第三个是城市等等?
你有句柄值吗?以及他们各自的描述?
-大卫
而不是你而不是我大卫:眨眼:
哎呀,谢谢!
页:
1
[2]