abra-CAD-abra 发表于 2022-7-5 16:59:50

布局-选择集

伙计们,
 
以下代码旨在循环浏览每个布局,并将所有文本实体放置在新图层上,如下所示:
 
“A-TEXT_3;”后跟布局名称。
 
相反,它将所有文本放置在层“A-text_3;”上,后跟处理的第一个布局名称。
 

(if (setq s (ssget "_X" '((0 . "TEXT"))))
   (progn
   (foreach layout (layoutlist)
(setvar 'ctab layout)
(repeat (setq i (sslength s))
(setq e (entget (ssname s (setq i (1- i)))))
   (entmod (subst (cons 8 (strcat "A-TEXT_" (getvar 'ctab))) (assoc 8 e) e)) ;_ end of subst
) ;_ end of repeat
   ) ;_ end of foreach
   ) ;_ end of progn
) ;_ end of if

 
 
我错过了一些简单的事情吗?
 
干杯

Lee Mac 发表于 2022-7-5 17:07:45

(foreach layout (layoutlist)
   (if (setq s (ssget "_X" (list '(0 . "TEXT") (cons 410 layout))))
       (repeat (setq i (sslength s))
         (setq e (entget (ssname s (setq i (1- i)))))
         (entmod (subst (cons 8 (strcat "A-TEXT_" layout)) (assoc 8 e) e))
       )
   )
)

abra-CAD-abra 发表于 2022-7-5 17:18:42

 
谢谢李,
 
我会检查你的密码。
 
非常感谢。

pBe 发表于 2022-7-5 17:29:24

另一个
 
(if (setq s (ssget "_X" '((0 . "TEXT")(410 . "~Model"))))
       (repeat (setq i (sslength s))
         (setq e (entget (ssname s (setq i (1- i)))))
         (entmod (subst (cons 8 (strcat "A-TEXT_" (cdr (assoc 410 e)))) (assoc 8 e) e))
            (princ)
         )      
       )

Grrr 发表于 2022-7-5 17:33:06

这也将起作用:
(cons 410 (apply 'strcat (mapcar '(lambda (x) (strcat x ",")) (layoutlist))))
pBe,你的建议更好-我只是想留下这个作为替代。

abra-CAD-abra 发表于 2022-7-5 17:38:21

伙计们,
 
谢谢你的回复-我喜欢其他方法!
 
Grrr-Mapcar和Lamda吓到我了!

Grrr 发表于 2022-7-5 17:45:56

 
有一个特别的时刻,你不需要关心它是如何工作的,只需要知道它做什么:
_$ (cons 410 (apply 'strcat (mapcar '(lambda (x) (strcat x ",")) (layoutlist))))
(410 . "Layout1,Layout2,")
_$

Lee Mac 发表于 2022-7-5 17:58:57

 
思维敏捷的pBe

pBe 发表于 2022-7-5 18:05:38

 
谢谢你,LM
页: [1]
查看完整版本: 布局-选择集