18
59
41
初露锋芒
;;;;Realization {Smirnoff};;; TTCM - Text to Text copy whith Matchprop. Copy text from DIMENSION, TEXT, ;;;MTEXT, ATTRIB, ATTDEF, ACAD_TABLE to one(defun c:tt (/ actDoc vlaObj sObj sText curObj oldForm oType oldMode conFlag errFlag *error* prop) (vl-load-com) (setq actDoc(vla-get-ActiveDocument (vlax-get-acad-object))) (vla-StartUndoMark actDoc) (defun TTC_Paste(pasteStr / nslLst vlaObj hitPt hitRes Row Column) (setq errFlag nil) (if (setq nslLst(nentsel "\nPaste text >")) (progn (cond ( (and (= 4(length nslLst)) (= "DIMENSION"(cdr(assoc 0(entget(car(last nslLst)))))) ); end and (setq vlaObj (vlax-ename->vla-object (cdr(assoc -1(entget(car(last nslLst))))))) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-TextOverride(list vlaObj pasteStr))) (progn (princ "\n Can't paste. Object may be on locked layer. ") (setq errFlag T) ); end progn ); end if ); end condition #1 ( (and (= 4(length nslLst)) (= "ACAD_TABLE"(cdr(assoc 0(entget(car(last nslLst)))))) ); end and (setq vlaObj (vlax-ename->vla-object (cdr(assoc -1(entget(car(last nslLst)))))) hitPt(vlax-3D-Point(trans(cadr nslLst)1 0)) hitRes(vla-HitTest vlaObj hitPt (vlax-3D-Point '(0.0 0.0 1.0)) 'Row 'Column) ); end setq (if(= :vlax-true hitRes) (progn (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-SetText(list vlaObj Row Column pasteStr))) (progn (princ "\n Can't paste. Object may be on locked layer. ") (setq errFlag T) ); end progn ); end if ); end progn ); end if ); end condition # 2 ( (and (= 4(length nslLst)) (= "INSERT"(cdr(assoc 0(entget(car(last nslLst)))))) ); end and (princ "\nCan't paste to block's DText or MText. Select Attribute ") (setq errFlag T) ); end condition #3 ( (and (= 2(length nslLst)) (member(cdr(assoc 0(entget(car nslLst)))) '("TEXT" "MTEXT" "ATTRIB" "ATTDEF")) ); end and (setq vlaObj (vlax-ename->vla-object(car nslLst))) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-TextString(list vlaObj pasteStr))) (progn (princ "\nError. Can't pase text. ") (setq errFlag T) ); end progn ); end if ); end condition #4 (T (princ "\nCan't paste. Invalid object. ") (setq errFlag T) ); end condition #5 ); end cond (if (and (null errFlag) (= (type vlaObj) 'VLA-OBJECT)) (mapcar '(lambda (x y) (vlax-put-property vlaObj x y)) '(Linetype LineWeight Color Layer) prop ) ) T ); end progn nil ); end if ); end of TTC_Paste (defun TTC_MText_Clear(Mtext / Text Str) (setq Text "") (while(/= Mtext "") (cond ((wcmatch (strcase (setq Str (substr Mtext 1 2))) "[url="file://\"]\\[/url][\\{}`~]") (setq Mtext(substr Mtext 3) Text(strcat Text Str) ); end setq ); end condition #1 ((wcmatch(substr Mtext 1 1) "[{}]")