2
13
11
初来乍到
使用道具 举报
106
1万
101
顶梁支柱
63
141
16
后起之秀
(defun c:test () (vl-load-com) ;;-------------------=={ UnFormat String }==------------------;; ;; ;; ;; Returns a string with all MText formatting codes removed. ;; ;;------------------------------------------------------------;; ;; Author: Lee Mac, Copyright © 2011 - www.lee-mac.com ;; ;;------------------------------------------------------------;; ;; Arguments: ;; ;; str - String to Process ;; ;; mtx - MText Flag (T if string is for use in MText) ;; ;;------------------------------------------------------------;; ;; Returns: String with formatting codes removed ;; ;;------------------------------------------------------------;; (defun LM:UnFormat (str mtx / _replace rx) (defun _replace (new old str) (vlax-put-property rx 'pattern old) (vlax-invoke rx 'replace str new)) (if (setq rx (vlax-get-or-create-object "VBScript.RegExp")) (progn (setq str (vl-catch-all-apply (function (lambda () (vlax-put-property rx 'global actrue) (vlax-put-property rx 'multiline actrue) (vlax-put-property rx 'ignorecase acfalse) (foreach pair '(("\032" . "\\\\\\\") (" " . "\\\\P|\\n|\\t") ("$1" . "\\\\(\\\\[ACcFfHLlOopQTW])|\\\\[ACcFfHLlOopQTW][^\\\\;]*;|\\\\[ACcFfHLlOopQTW]") ("$1$2/$3" . "([^\\\\])\\\\S([^;]*)[/#\\^]([^;]*);") ("$1$2" . "\\\\(\\\\S)|[\\\\](})|}") ("$1" . "[\\\\]({)|{") ) (setq str (_replace (car pair) (cdr pair) str)) ) (if mtx (_replace "\\\" "\032" (_replace "\\$1$2$3" "(\\\\[ACcFfHLlOoPpQSTW])|({)|(})" str)) (_replace "\" "\032" str) ) ) ) ) ) (vlax-release-object rx) (if (null (vl-catch-all-error-p str)) str ) ) ) ) ;; Unique - Lee Mac ;; Returns a list with duplicate elements removed. (defun LM:Unique (l / x r) (while l (setq x (car l) l (vl-remove x (cdr l)) r (cons x r) ) ) (reverse r) ) ;; ;; ;; Source : http://www.theswamp.org/index.php?topic=10371.0 ;Union polylines ;Stefan M. 09.01.2014 (defun UNIP (lst / *error* i lst r1 reg ss sysvar prop) (or acDoc (setq acDoc (vla-get-activedocument (vlax-get-acad-object)))) (setq ms (vlax-get acDoc (if (= 1 (getvar 'cvport)) 'paperspace 'modelspace ) ) ) (vla-startundomark acDoc) (setq sysvar (mapcar 'getvar '(peditaccept draworderctl cmdecho))) (defun *error* (msg) (and msg (not (wcmatch (strcase msg) "*CANCEL*,*QUIT*,*EXIT*")) (princ (strcat "\nError: " msg))) (mapcar 'setvar '(peditaccept draworderctl cmdecho) sysvar) (vla-endundomark acDoc) (princ) ) (foreach x lst (vla-put-closed x :vlax-true)) (setq prop (mapcar '(lambda (p) (vlax-get (car lst) p)) '(Layer LineType Color))) (setq reg (vlax-invoke ms 'AddRegion lst)) (foreach x lst (if (not (vlax-erased-p x))(vla-delete x) ) ) (setq r1 (car reg)) (foreach x (cdr reg) (vlax-invoke r1 'boolean acunion x)) (mapcar '(lambda (p v) (vlax-put r1 p v)) '(Layer LineType Color) prop) (setq lst (apply 'append (mapcar '(lambda (a) (if (listp a) (mapcar 'vlax-vla-object->ename a) (list (vlax-vla-object->ename a)) ) ) (mapcar '(lambda (e / p) (if (eq (vla-get-objectname e) "AcDbRegion") (progn (setq p (vlax-invoke e 'explode)) (vla-delete e) p) e ) ) (vlax-invoke r1 'explode) ) ) ) ) (vla-delete r1) (setq ss (ssadd)) (foreach x lst (ssadd x ss)) (mapcar 'setvar '(peditaccept draworderctl cmdecho) '(1 0 0)) (command "_pedit" "_m" ss "" "_j" "" "") (*error* nil) (princ)