如何旋转和重新定位e
我有以下几点((some if condition)
(progn
(prin1 "diferente de 0 confirmado")
(setq
newangle '(50 . -4.71239)
correcaoalturav (/ (- 20 conversaodim) 2)
contas (- 25.308 correcaoalturav)
newposition (cons 10 (list (- (cadr position) contas ) (- (caddr position) mtextwidth )))
substituteangle (subst newangle (assoc 50 enty) enty)
substituteposition (subst newposition position enty)
)
(entmod substituteangle)
(entmod substituteposition)
)
显然,它应该旋转我的文本,并将其放置在其他坐标系中。我试着对每一个entmod进行评论,他确实做到了。然而,如果我这样放置entmod,autocad将只执行最后一个操作,这意味着,他只重新定位我的文本。如果我只保留(entmod替换角度),他将正确旋转文本。这不是我所期待的问题,我该怎么办?我可以将这两个更改合并到一个变量中吗? 没关系,我明白了,我应该按以下方式做:
... (previous code)...
substituteangle (subst newangle (assoc 50 enty) enty)
substituteposition (subst newposition position substituteangle)
)
(entmod substituteposition)
这种语言似乎比实际更容易 虽然我没有完全理解您的所有代码,但这是在一个调用中输入多个组所需的基本顺序
(if (setq en (ssname (ssget (list (cons 0 "INSERT"))) 0))
(progn
(setq ed (entget en))
(setq np (list 10 10 0))
(setq an -4.71239)
(setq ed (subst (cons 10 np) (assoc 10 ed) ed))
(setq ed (subst (cons 50 an) (assoc 50 ed) ed))
(entmod ed)))
-大卫 谢谢你,大卫,你是说我能做到?
(setq
substituteangle (subst newangle (assoc 50 enty) enty)
substituteangle (subst newposition position enty)
)
(entmod substituteangle)
? 他会做两个替补吗?我想他会用第二个代替第一个。。。 您正在更改变量enty,然后第二次重写它
setq调用应与subst调用使用的变量名相同
您可以在调用(entmod)之前多次重新定义实体定义,如果这是您的要求的话?
通常使用use(subst)和(append)编辑定义。使用(cons)可能会导致问题,因为DXF组0必须是列表中的第一个组。
我们很多人使用“ed”或“edef”作为实体定义的变量名
如果代码整洁,AutoLISP可以非常人性化
尝试替换enty变量。。
(setq
;; ...
;; ...
substituteangle (subst newangle (assoc 50 enty) enty)
substituteposition (subst newposition position substituteangle) ; no more enty
);
页:
[1]