clint0577 Posted November 15, 2012 Share Posted November 15, 2012 In this lisp I'm trying to replace 4 blocks that pretty much do the same thing. I want the user to Click the point they want to use for the center of the text and the have the code calculate a certain distance, say 3.5 below on the Y axis for the next line of text. ;INSERT STREET NAME & R.O.W. (DEFUN C:STRN () (SETQ CL (GETVAR "CLAYER")) (command ".osnap" "NONE") (setq DS (getvar 'dimscale)) (SETQ SNTW (* DS 3)) (SETQ RWTW (* DS 1.5)) (SETQ SHS (* DS 0.13)) (setq pt1 (getpoint "\nPick insertion point for Street Name : ")) (setq sn (getstring t "\nType the Street Name: ")) (setq sr (getstring t "\nType the Right Of Way Enter VW for Variable Width or P for Public: ")) (SETQ SRW (STRCAT SR "' R.O.W.")) (COMMAND "LAYER" "S" "STREET_NAME" "") (COMMAND "MTEXT" "_non" pt1 "J" "BC" "S" "STANDARD" "H" SHS "W" SNTW sn "") (SETQ RHS (* DS 0.08)) (SETVAR "CECOLOR" "140") (COMMAND "MTEXT" PAUSE "J" "BC" "S" "STANDARD" "H" RHS "W" RWTW sRW "") (SETVAR "CECOLOR" "BYLAYER") (COMMAND "CLAYER" CL) (command ".osnap" "NOD,end,INT,CEN,mid") (setq OldTxt "VW' R.O.W.") (SETQ vwrw (STRCAT "VARIABLE WIDTH R.O.W.")) (setq ss (ssget "x" '((0 . "TEXT,MTEXT")))) (setq i (sslength ss)) (while (not (minusp (setq i (1- i)))) (setq oText (vlax-ename->vla-object (ssname ss i))) (setq Txt (vlax-get-property oText 'TextString)) (if (vl-string-search OldTxt txt) (progn (setq newChg (vl-string-subst VWRW OldTxt txt)) (vlax-put-property oText 'TextString newchg) (vlax-invoke-method oText 'Update) ) ) ) (setq P "P' R.O.W.") (SETQ PRW (STRCAT "PUBLIC R.O.W.")) (setq ss (ssget "x" '((0 . "TEXT,MTEXT")))) (setq i (sslength ss)) (while (not (minusp (setq i (1- i)))) (setq oText (vlax-ename->vla-object (ssname ss i))) (setq Txt (vlax-get-property oText 'TextString)) (if (vl-string-search P txt) (progn (setq newChg (vl-string-subst PRW P txt)) (vlax-put-property oText 'TextString newchg) (vlax-invoke-method oText 'Update) ) ) ) ) Quote Link to comment Share on other sites More sharing options...
BIGAL Posted November 16, 2012 Share Posted November 16, 2012 One of the things you can get from VL is "Vla-get-Insertionpoint txt" then just use a polar to work out next text point. Quote Link to comment Share on other sites More sharing options...
clint0577 Posted November 16, 2012 Author Share Posted November 16, 2012 Wow man! Thanks! That worked great! ;INSERT STREET NAME & R.O.W. (DEFUN C:STR () (SETQ CL (GETVAR "CLAYER")) (command ".osnap" "NONE") (setq DS (getvar 'dimscale)) (SETQ SNTW (* DS 3)) (SETQ RWTW (* DS 1.5)) (SETQ SHS (* DS 0.13)) (SETQ RWO (* DS 0.175)) (setq pt1 (getpoint "\nPick Insertion Point: ")) (SETQ PT2 (polar PT1 (DTR 270.0) RWO)) (setq sn (getstring t "\nType the Street Name: ")) (setq sr (getstring t "\nType the Right Of Way Enter V for Variable Width or P for Public: ")) (SETQ SRW (STRCAT SR "' R.O.W.")) (COMMAND "LAYER" "S" "STREET_NAME" "") (COMMAND "MTEXT" "_non" pt1 "J" "BC" "S" "STANDARD" "H" SHS "W" SNTW sn "") (SETQ RHS (* DS 0.08)) (SETVAR "CECOLOR" "140") (COMMAND "MTEXT" "_NON" PT2 "J" "BC" "S" "STANDARD" "H" RHS "W" RWTW sRW "") (SETVAR "CECOLOR" "BYLAYER") (COMMAND "CLAYER" CL) (command ".osnap" "NOD,end,INT,CEN,mid") (setq OldTxt "V' R.O.W.") (SETQ vwrw (STRCAT "VARIABLE WIDTH R.O.W.")) (setq ss (ssget "x" '((0 . "TEXT,MTEXT")))) (setq i (sslength ss)) (while (not (minusp (setq i (1- i)))) (setq oText (vlax-ename->vla-object (ssname ss i))) (setq Txt (vlax-get-property oText 'TextString)) (if (vl-string-search OldTxt txt) (progn (setq newChg (vl-string-subst VWRW OldTxt txt)) (vlax-put-property oText 'TextString newchg) (vlax-invoke-method oText 'Update) ) ) ) (setq P "P' R.O.W.") (SETQ PRW (STRCAT "PUBLIC R.O.W.")) (setq ss (ssget "x" '((0 . "TEXT,MTEXT")))) (setq i (sslength ss)) (while (not (minusp (setq i (1- i)))) (setq oText (vlax-ename->vla-object (ssname ss i))) (setq Txt (vlax-get-property oText 'TextString)) (if (vl-string-search P txt) (progn (setq newChg (vl-string-subst PRW P txt)) (vlax-put-property oText 'TextString newchg) (vlax-invoke-method oText 'Update) ) ) ) ) Quote Link to comment Share on other sites More sharing options...
BIGAL Posted November 19, 2012 Share Posted November 19, 2012 Just a suggestion it really doesn't matter your method works for osnaps . (setvar "osmode" 0) ; no snaps (setvar "osmode" 47) ; (command ".osnap" "NOD,end,INT,CEN,mid") ;just set osnaps then OSMODE will give number ;also (setq oldsnap (getvar "osmode")) (setvar "osmode" oldsnap) Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.