如何为要替换的其他文本添加抓取源的TEXT/MTEXT文本高度?

问题描述 投票:0回答:1

我目前有 gileCAD 修改此代码,我自己尝试修改。但我目前还想在替换其他文本时也获取源文本的文本高度,但是使用下面的代码,我收到“程序错误:错误的 DXF 组:50.0”的错误消息。

                    (defun c:MTP (/ cEnt elst text color ss i textSize)
                    (if (and (setq cEnt (car (nentsel "\nSelect Source Text: ")))
                                (member (cdr (assoc 0 (entget cEnt)))
                                    '("TEXT" "MTEXT" "ATTRIB")
                                )
                        1)
                        (progn
                        (setq elst (entget cEnt)
                              text (assoc 1 elst)
                              color (cond ((assoc 62 elst))
                                        (T '(62 . 256))
                                    )
                              textSize (cdr (assoc 40 elst)) ; get text size
                        )
                        (redraw cEnt 3)
                                (if (setq ss (ssget '((0 . "TEXT,MTEXT"))))
                                (repeat (setq i (sslength ss))
                                (setq elst (entget (ssname ss (setq i (1- i)))))
                                    (entmod
                                        (subst text
                                            (assoc 1 elst)
                                                (if (assoc 62 elst)
                                                (entmod (subst color (assoc 62 elst) elst))
                                                (append elst (list color))
                                            )
                                            (entmod (subst textSize (assoc 40 elst) elst))
                                            (append elst (list textSize))
                                        )                   
                                    )
                                )
                            )
                        )
                    )
                    (command "_regenall")
                    (princ)
                )
lisp autocad cad autolisp
1个回答
0
投票

文字高度为code 40 所以要修改它你应该使用这样的代码

(entmod 
   (if (assoc 40 elst)
      (subst (cons 40 textSize) (assoc 40 elst) elst)
      (append elst (list (cons 40 textSize)))
   )                                            
)

之后:

(entmod
   (subst text
      (assoc 1 elst)
      (if (assoc 62 elst)
        (entmod (subst color (assoc 62 elst) elst))
        (append elst (list color))
      )
   )
)
© www.soinside.com 2019 - 2024. All rights reserved.