0 Members and 1 Guest are viewing this topic.
(setq RegEx (vlax-create-object "VBScript.RegExp"))(LM:RegExReplace RegEx "{\\H0.7x;\\S$1#$2;}" "-?(\\d+)/(\\d+)" (LM:GetTextString e))(defun LM:RegExReplace ( reg new pat str ) ;; © Lee Mac 2010 (mapcar '(lambda ( prop value ) (vlax-put-property reg prop value)) '(pattern global ignorecase) (list pat actrue acfalse)) (vlax-invoke reg 'replace str new))
With regards to first one, I believe the settings are stored here:Code: [Select](strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\MTEXT")Don't quote me on that though...As for the second, I should imagine you could use a RegExp expression to replaces strings matching something like (\S)/(\S), then replace it with {$1#$2} or similar..
(strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\MTEXT")
(if (/= (vl-registry-read (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\MTEXT") "AutoStack") 1) (vl-registry-write (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\MTEXT") "AutoStack" 1))(if (/= (vl-registry-read (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\MTEXT") "ConvertStackToArch") 1) (vl-registry-write (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\MTEXT") "ConvertStackToArch" 1))(if (/= (vl-registry-read (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\MTEXT") "TrimLeadingStackBlank") 1) (vl-registry-write (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\MTEXT") "TrimLeadingStackBlank" 1))
(setq root (vl-registry-read (strcat "HKEY_CURRENT_USER\\" (vlax-product-key) "\\MTEXT"))
(mapcar (function (lambda ( key value ) (if (/= value (vl-registry-read root key)) (vl-registry-write root key value) ) ) ) '("AutoStack" "ConvertStackToArch" "TrimLeadingStackBlank") '(1 1 1))
(vl-registry-write root "AutoStack" 1)(vl-registry-write root "ConvertStackToArch" 1)(vl-registry-write root "TrimLeadingStackBlank" 1)
Didn't try this, but is it necessary to read the key first? Can't you just write to the register:Code: [Select](vl-registry-write root "AutoStack" 1)(vl-registry-write root "ConvertStackToArch" 1)(vl-registry-write root "TrimLeadingStackBlank" 1)
[...] too many writes to the registry causes problems with windows.
This needs a lot more error trapping, but this is where I was going with the Regular Expression usage:Code: [Select](defun c:test ( / RegEx i ss e ) (vl-load-com) ;; © Lee Mac 2010 (setq RegEx (vlax-create-object "VBScript.RegExp")) (if (setq i -1 ss (ssget "_:L" '((0 . "MTEXT")))) (while (setq e (ssname ss (setq i (1+ i)))) (vla-put-TextString (vlax-ename->vla-object e) (LM:RegExReplace RegEx "{\\H0.7x;\\S$1#$2;}" "-?(\\d+)/(\\d+)" (LM:GetTextString e)) ) ) ) (vlax-release-object RegEx) (princ))(defun LM:RegExReplace ( reg new pat str ) ;; © Lee Mac 2010 (mapcar '(lambda ( prop value ) (vlax-put-property reg prop value)) '(pattern global ignorecase) (list pat actrue acfalse)) (vlax-invoke reg 'replace str new))(defun LM:GetTextString ( ent ) ;; © Lee Mac 2010 ( (lambda ( string ) (mapcar (function (lambda ( pair ) (if (vl-position (car pair) '(1 3)) (setq string (strcat string (cdr pair))) ) ) ) (entget ent) ) string ) "" ))
(defun c:test ( / RegEx i ss e ) (vl-load-com) ;; © Lee Mac 2010 (setq RegEx (vlax-create-object "VBScript.RegExp")) (if (setq i -1 ss (ssget "_:L" '((0 . "MTEXT")))) (while (setq e (ssname ss (setq i (1+ i)))) (vla-put-TextString (vlax-ename->vla-object e) (LM:RegExReplace RegEx "{\\H0.7x;\\S$1#$2;}" "-?(\\d+)/(\\d+)" (LM:GetTextString e)) ) ) ) (vlax-release-object RegEx) (princ))(defun LM:RegExReplace ( reg new pat str ) ;; © Lee Mac 2010 (mapcar '(lambda ( prop value ) (vlax-put-property reg prop value)) '(pattern global ignorecase) (list pat actrue acfalse)) (vlax-invoke reg 'replace str new))(defun LM:GetTextString ( ent ) ;; © Lee Mac 2010 ( (lambda ( string ) (mapcar (function (lambda ( pair ) (if (vl-position (car pair) '(1 3)) (setq string (strcat string (cdr pair))) ) ) ) (entget ent) ) string ) "" ))