(defun c:strsplit(/ ACADSPC DST INDEX OBJ SLTSET STRING) (vl-load-com) (if (= (getvar "TILEMODE") 1) (setq acadspc (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object)))) (setq acadspc (vla-get-paperspace (vla-get-activedocument (vlax-get-acad-object)))) ) (setq dst (getdist "\n输入行间距: ")) (if (null dst)(setq dst 0)) (while (and (setq sltset (ssget '((0 . "TEXT")))) (/= (setq string (getstring 1 "\n输入分割字符: ")) "")) (setq index 0) (repeat (sslength sltset) (setq obj (vlax-ename->vla-object (ssname sltset index))) (stringsplit obj string dst acadspc) (setq index (1+ index)) ) ) ) (defun stringsplit(obj string dst acadspc / BPT BPT1 NINSERTPOINT NTEXTSTRING STRINDEX TEXTH TEXTSTRING) (setq bpt (vla-get-insertionpoint obj) bpt1 (vlax-safearray->list (vlax-variant-value bpt)) texth (vla-get-height obj) ) (vla-put-alignment obj acalignmentleft) (vla-put-insertionpoint obj bpt) (setq textstring (vla-get-textstring obj)) (setq strindex (vl-string-search string textstring)) (if strindex (progn (vla-put-textstring obj (substr textstring 1 strindex)) (setq ntextstring (substr textstring (+ strindex 2)) ninsertpoint (polar bpt1 (* 1.5 pi) (+ texth dst)) ) (setq obj (vla-addtext acadspc ntextstring (vlax-3d-point ninsertpoint) texth)) (stringsplit obj string dst acadspc) ) ) ) |