我有以下代码:
-
- (defun c:COPYPART (/ ObjC ObjP1 ObjP2 ObjA TxtV Nw1Txt
- Nw2txt)
- (setq CREcho (getvar "CMDECHO"))
- (setq CRSnap (getvar "OSMODE"))
- (setq CRortho (getvar "ORTHOMODE"))
- ;;-------------Error handler---------------
- (setq *error* ;;;resets sysvar incase of
- (lambda (msg) ;;;an error, esc, exit, cancel
- (setvar "cmdecho" CRcecho)
- (setvar "OSMODE" CRSnap)
- (setvar "ORTHOMODE" CROrtho)
- (princ msg)
- (princ)))
- ;;------------------------------------------------
- (setvar "ORTHOMODE" 1)
- (if (< CRSnap 16384)
- (setvar "OSMODE" (+ CRSnap 16384)))
- (setq ObjC (entsel "\nSelect object to copy down: "))
- (setq ObjP1 (list (car (cadr Objc)) (cadr (cadr Objc))))
- (setq ObjA (getangle "\nSpecify direction of copy: " Objp1))
- (cond ( (= ObjA 0) (setq ObjP2 (list (+ (car ObjP1) 30)(cadr ObjP1))))
- ( (= Obja (/ pi 2)) (setq ObjP2 (list (car ObjP1) (+ (cadr ObjP1) 5.25))))
- ( (= Obja pi)(setq ObjP2 (list (- (car ObjP1) 30)(cadr ObjP1))))
- ( (= Obja (* 3 (/ pi 2)))(setq ObjP2 (list (car ObjP1) (- (cadr ObjP1) 5.25)))))
- (vl-cmdf "_.copy" ObjC "" ObjP1 Objp2)
- (setq TxtV (entget(entlast)))
- (setq Nw1Txt (subst (cons 1 "###-###") (assoc 1 TxtV) TxtV))
- (entmod Nw1Txt)
- (entupd TxtV)
- (setq NewTxt (strcase (getstring "\nEnter New text value: ")))
- (setq Nw2Txt (subst (cons 1 NewTxt) (assoc 1 TxtV) TxtV))
- (entmod Nw2Txt)
- (setvar "CMDECHO" CREcho)
- (setvar "OSMODE" CREnap)
- (setvar "ORTHOMODE" CROrtho)
- (princ)
- )
这就是它所做的。有一些文本已经存在,我只需要将其复制到上/下/左或右的某个距离。复制时,它将文本值更改为“###-####”。然后我需要输入新数据。
如果我复制一个“TEXT”对象,效果很好。如果我选择一个“多行文字”对象,它将进行复制,但不会更改值或给我输入新值的选项。
我认为“TEXT”和“MTEXT”对于文本字符串都有相同的DXF代码,即1。有没有想过为什么这不适用于多行文字? |