11
45
35
初露锋芒
使用道具 举报
20
344
325
;Super-Edit;by Mark Mercier;05-11-09(defun c:ed( / )(super_edit))(defun c:at( / )(super_edit))(defun super_edit( / modEnt dumEnt ent) (vl-load-com) (while (setq ent (nentsel "\nSelect object: ")) (if (and ent (or (wcmatch (cdadr (entget (car ent))) "*TEXT") (eq "ATTRIB" (cdadr (entget (car ent)))))) (progn ; Extract properties of selection and save as list, to modify or replace later if failed (setq modEnt (vlax-ename->vla-object (car ent))) ; extract properties and create dummy text (setq dumEnt (_TextCopy ent)) ; Clear contents of selected text (vla-put-TextString modEnt " ") (command "regen") ; Edit dummy text (command "DDEDIT" (entlast))(command) ; once DDEDIT is finished, set modEnt TextString equal to dumEnt (if (and (caar (cdddr ent)) (wcmatch (vla-get-ObjectName (vlax-ename->vla-object (caar (cdddr ent)))) "*Dimension")) (vla-put-TextOverride (vlax-ename->vla-object (caar (cdddr ent))) (vla-get-TextOverride (vlax-ename->vla-object dumEnt))) (vla-put-TextString modEnt (vla-get-TextString (vlax-ename->vla-object dumEnt))) ) ; Delete dummy text (command "erase" dumEnt "") (command "regen") ) ) ) )(defun _TextCopy(ent / vlaEnt lasEnt return) (setq return nil) (cond ((and (wcmatch (cdadr (entget (car ent))) "TEXT") (not (caar (cdddr ent)))) (setq return (_TextCopy-TEXT ent)) ) ((and (wcmatch (cdadr (entget (car ent))) "MTEXT") (not (caar (cdddr ent)))) (setq return (_TextCopy-MTEXT ent)) ) ((and (wcmatch (cdadr (entget (car ent))) "MTEXT") (eq "INSERT" (cdr (assoc 0 (entget (caar (cdddr ent))))))) (setq return (_TextCopy-NESMTEXT ent)) ) ((and (wcmatch (cdadr (entget (car ent))) "MTEXT") (eq "DIMENSION" (cdr (assoc 0 (entget (caar (cdddr ent))))))) (setq return (_TextCopy-DIMMTEXT ent)) ) ((and (wcmatch (cdadr (entget (car ent))) "TEXT") (not (assoc 410 (entget (car ent))))) (setq return (_TextCopy-NESTEXT ent)) ) ((eq "ATTRIB" (cdadr (entget (car ent)))) (setq return (_TextCopy-NESATT ent)) ) ) return ); Creates exact copy of text/mtext/attribute entity as text/mtext, including blocked text. Return entity if successful or nil if not.(defun _TextCopy-TEXT(ent / vlaEnt lasEnt) (command "TEXT" '(0 0 0) 1 1 "1") (setq lasEnt (vlax-ename->vla-object (entlast))) (setq vlaEnt (vlax-ename->vla-object (car ent))) (vla-put-Layer lasEnt (vla-get-Layer vlaEnt)) (vla-put-Height lasEnt (vla-get-Height vlaEnt)) (vla-put-TextString lasEnt (vla-get-TextString vlaEnt)) (vla-put-Rotation lasEnt (vla-get-Rotation vlaEnt)) (vla-put-ScaleFactor lasEnt (vla-get-ScaleFactor vlaEnt)) (vla-put-ObliqueAngle lasEnt (vla-get-ObliqueAngle vlaEnt)) (vla-put-StyleName lasEnt (vla-get-StyleName vlaEnt)) (vla-put-Alignment lasEnt (vla-get-Alignment vlaEnt)) (vla-put-Backward lasEnt (vla-get-Backward vlaEnt)) (vla-put-Normal lasEnt (vla-get-Normal vlaEnt)) (vla-put-UpsideDown lasEnt (vla-get-UpsideDown vlaEnt)) (vla-put-InsertionPoint lasEnt (vla-get-InsertionPoint vlaEnt)) (vla-put-TextAlignmentPoint lasEnt (vla-get-TextAlignmentPoint vlaEnt)) (setq return (vlax-vla-object->ename lasEnt)) return )(defun _TextCopy-MTEXT(ent / vlaEnt lasEnt) (command "MTEXT" '(0 0 0) '(1 1 0) "1" "") (setq lasEnt (vlax-ename->vla-object (entlast))) (setq vlaEnt (vlax-ename->vla-object (car ent))) (vla-put-AttachmentPoint lasEnt (vla-get-AttachmentPoint vlaEnt)) (vla-put-InsertionPoint lasEnt (vla-get-InsertionPoint vlaEnt)) (vla-put-Layer lasEnt (vla-get-Layer vlaEnt)) (vla-put-Height lasEnt (vla-get-Height vlaEnt)) (vla-put-TextString lasEnt (vla-get-TextString vlaEnt)) (vla-put-Width lasEnt (vla-get-Width vlaEnt)) (vla-put-StyleName lasEnt (vla-get-StyleName vlaEnt)) (vla-put-Normal lasEnt (vla-get-Normal vlaEnt)) (vla-put-BackgroundFill lasEnt (vla-get-BackgroundFill vlaEnt)) (vla-put-DrawingDirection lasEnt (vla-get-DrawingDirection vlaEnt)) (vla-put-LineSpacingDistance lasEnt (vla-get-LineSpacingDistance vlaEnt)) (vla-put-LineSpacingFactor lasEnt (vla-get-LineSpacingFactor vlaEnt)) (vla-put-LineSpacingStyle lasEnt (vla-get-LineSpacingStyle vlaEnt)) (vla-put-Rotation lasEnt (vla-get-Rotation vlaEnt)) (setq return (vlax-vla-object->ename lasEnt)) return )(defun _TextCopy-NESATT(ent / vlaEnt lasEnt) (command "TEXT" '(0 0 0) 1 1 "1") (setq lasEnt (vlax-ename->vla-object (entlast))) (setq vlaEnt (vlax-ename->vla-object (car ent))) (vla-put-Layer lasEnt (vla-get-Layer vlaEnt)) (vla-put-InsertionPoint lasEnt (vla-get-InsertionPoint vlaEnt)) (vla-put-Height lasEnt (vla-get-Height vlaEnt)) (vla-put-TextString lasEnt (vla-get-TextString vlaEnt)) (vla-put-Rotation lasEnt (vla-get-Rotation vlaEnt))