CesarA 发表于 2022-7-5 18:12:07

如何旋转和重新定位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替换角度),他将正确旋转文本。这不是我所期待的问题,我该怎么办?我可以将这两个更改合并到一个变量中吗?

CesarA 发表于 2022-7-5 18:34:15

没关系,我明白了,我应该按以下方式做:
 
                              ... (previous code)...
                               substituteangle (subst newangle (assoc 50 enty) enty)
                               substituteposition (subst newposition position substituteangle)
      )

            
                  (entmod substituteposition)
 
这种语言似乎比实际更容易

David Bethel 发表于 2022-7-5 18:41:50

虽然我没有完全理解您的所有代码,但这是在一个调用中输入多个组所需的基本顺序
 

(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)))

 
-大卫

CesarA 发表于 2022-7-5 18:54:41

谢谢你,大卫,你是说我能做到?
 
                           

                                    (setq
                                       substituteangle (subst newangle (assoc 50 enty) enty)
                                       substituteangle (subst newposition position enty)
      )

            
                  (entmod substituteangle)
 
? 他会做两个替补吗?我想他会用第二个代替第一个。。。

David Bethel 发表于 2022-7-5 19:03:01

您正在更改变量enty,然后第二次重写它
 
setq调用应与subst调用使用的变量名相同
 
您可以在调用(entmod)之前多次重新定义实体定义,如果这是您的要求的话?
 
通常使用use(subst)和(append)编辑定义。使用(cons)可能会导致问题,因为DXF组0必须是列表中的第一个组。
 
我们很多人使用“ed”或“edef”作为实体定义的变量名
 
 
如果代码整洁,AutoLISP可以非常人性化

hanhphuc 发表于 2022-7-5 19:12:18

 
尝试替换enty变量。。

(setq
;; ...
;; ...
substituteangle (subst newangle (assoc 50 enty) enty)
substituteposition (subst newposition position substituteangle) ; no more enty

);

页: [1]
查看完整版本: 如何旋转和重新定位e