asos2000 发表于 2022-7-6 08:47:39

同样的答案
只要抓住要点

antistar 发表于 2022-7-6 08:50:10

 
大家好,
这个程序对我很有帮助。
我有个问题:
如何仅当对象位于XXX层时过滤选择“label1st”,而仅当对象位于YYY层时过滤选择“label2nd”?
 
提前谢谢。

MSasu 发表于 2022-7-6 08:53:44

谢谢你的评论。
要按特定图层过滤标签,只需使用图层名称修改以下代码:
 
(defun C:MoveLabels( / thePoint label1st label2nd moveSet entList)
(while (and (setq thePoint (getpoint "\nInsertion point: "))
            (setq label1st (ssget "_:S:E" '((0 . "TEXT") (8 . "XXX"))))
            (setq label2nd (ssget "_:S:E" '((0 . "TEXT") (8 . "YYY")))))
(progn
(setq label1st (ssname label1st 0)
      label2nd (ssname label2nd 0))
(foreach moveSet (list (list label1st 300.0   0.0)
                         (list label2nd 300.0 400.0))
(setq entList(entget (car moveSet)))
(entmod (subst (cons '10 (trans (list (+ (car thePoint) (cadr moveSet)) (+ (cadr thePoint) (caddr moveSet)) (caddr thePoint)) 1 0))
               (assoc 10 entList)
               entList))
)
)
)
(princ)
)
 
当做
米尔恰

antistar 发表于 2022-7-6 08:57:13

 
 
米尔恰,谢谢你的回复。
我理解其修改的逻辑,但返回以下错误:

Command: MoveLabels
nInsertion point:
Select objects:
Select objects:
ERROR: bad argument type: lentityp <Selection set: 151>
Command:

MSasu 发表于 2022-7-6 09:01:46

你能告诉我你是如何把代码从13号改成适合你的情况的吗?
 
当做
米尔恰

antistar 发表于 2022-7-6 09:03:56

 
这是我更改的代码:
7

MSasu 发表于 2022-7-6 09:10:07

恐怕你忘了抄几行:
 
问候,
米尔恰
页: 1 [2]
查看完整版本: 需要一个简单的lisp