LISP2LEARN Posted March 20, 2012 Posted March 20, 2012 Hi guys, I want to preview the text before I insert it. I ended up always moving the text after I inserted it. I've look everywhere to no avail. Thank you. (defun C:test (/ e d p) (setq e (cdr (assoc 2 (entget (car (entsel)))))) (setq d (cond ((= e "p1") "1\"") ((= e "p1.5") "1-1\\2\"") ((= e "p2") "2\"") ;;etc..;; (t (princ)) ) ) (setq p (getpoint "\nPick insertion point")) (setq text (entmakex (list (cons 0 "TEXT") (cons 7 "romans") (cons 40 10) (cons 8 "TEXT") (cons 10 p) (cons 210 '(0. 0. 1.)) (cons 1 d) (cons 41 0. (cons 50 0) ) ) ) (princ) ) Quote
alanjt Posted March 20, 2012 Posted March 20, 2012 You can use grread to move the text around and have it attached to the cursor. However, you'll lose osnaps/orthomode/etc. Quote
David Bethel Posted March 20, 2012 Posted March 20, 2012 You could always use a temporary block. Not very efficient but could be useful [b][color=BLACK]([/color][/b]defun c:mt [b][color=FUCHSIA]([/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]setq e [b][color=MAROON]([/color][/b]entget [b][color=GREEN]([/color][/b]car [b][color=BLUE]([/color][/b]entsel[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]progn [b][color=MAROON]([/color][/b]setvar [color=#2f4f4f]"DRAGMODE"[/color] 2[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq bn [color=#2f4f4f]"TEMP1"[/color] bc 1[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]tblsearch [color=#2f4f4f]"BLOCK"[/color] bn[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq bn [b][color=BLUE]([/color][/b]strcat [color=#2f4f4f]"TEMP"[/color] [b][color=RED]([/color][/b]itoa [b][color=PURPLE]([/color][/b]setq bc [b][color=TEAL]([/color][/b]1+ bc[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"BLOCK"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 2 bn[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 70 0[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 10 e[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"TEXT"[/color][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 1 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]assoc 6 e[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]assoc 6 e[b][color=RED])[/color][/b] '[b][color=RED]([/color][/b]6 . [color=#2f4f4f]"BYLAYER"[/color][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 7 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 8 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 10 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 11 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]assoc 39 e[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]assoc 39 e[b][color=RED])[/color][/b] '[b][color=RED]([/color][/b]39 . 0[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 40 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 41 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 50 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 51 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]assoc 62 e[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]assoc 62 e[b][color=RED])[/color][/b] '[b][color=RED]([/color][/b]62 . 256[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 71 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 72 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 73 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 210 e[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"ENDBLK"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]princ [color=#2f4f4f]"\nInsert Point: "[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setvar [color=#2f4f4f]"CMDECHO"[/color] 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]command [color=#2f4f4f]"_.INSERT"[/color] bn pause 1 1 0 [color=#2f4f4f]"_.EXPLODE"[/color] [b][color=GREEN]([/color][/b]entlast[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] You would need to modify it to your needs. -David Quote
LISP2LEARN Posted March 20, 2012 Author Posted March 20, 2012 Thank you David but that didn't work for me. Sorry for the misunderstanding. The text to be inserted is based on the name of the the block selected that's why I have a cond function. No worries your efforts will not be useless, I'll add this one to my arsenal of commands. You could always use a temporary block. Not very efficient but could be useful [b][color=BLACK]([/color][/b]defun c:mt [b][color=FUCHSIA]([/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]if [b][color=NAVY]([/color][/b]setq e [b][color=MAROON]([/color][/b]entget [b][color=GREEN]([/color][/b]car [b][color=BLUE]([/color][/b]entsel[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b] [b][color=NAVY]([/color][/b]progn [b][color=MAROON]([/color][/b]setvar [color=#2f4f4f]"DRAGMODE"[/color] 2[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setq bn [color=#2f4f4f]"TEMP1"[/color] bc 1[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]while [b][color=GREEN]([/color][/b]tblsearch [color=#2f4f4f]"BLOCK"[/color] bn[b][color=GREEN])[/color][/b] [b][color=GREEN]([/color][/b]setq bn [b][color=BLUE]([/color][/b]strcat [color=#2f4f4f]"TEMP"[/color] [b][color=RED]([/color][/b]itoa [b][color=PURPLE]([/color][/b]setq bc [b][color=TEAL]([/color][/b]1+ bc[b][color=TEAL])[/color][/b][b][color=PURPLE])[/color][/b][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"BLOCK"[/color][b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 2 bn[b][color=BLUE])[/color][/b][b][color=BLUE]([/color][/b]cons 70 0[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 10 e[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"TEXT"[/color][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 1 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]assoc 6 e[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]assoc 6 e[b][color=RED])[/color][/b] '[b][color=RED]([/color][/b]6 . [color=#2f4f4f]"BYLAYER"[/color][b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 7 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 8 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 10 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 11 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]assoc 39 e[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]assoc 39 e[b][color=RED])[/color][/b] '[b][color=RED]([/color][/b]39 . 0[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 40 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 41 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 50 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 51 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]if [b][color=RED]([/color][/b]assoc 62 e[b][color=RED])[/color][/b] [b][color=RED]([/color][/b]assoc 62 e[b][color=RED])[/color][/b] '[b][color=RED]([/color][/b]62 . 256[b][color=RED])[/color][/b][b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 71 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 72 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 73 e[b][color=BLUE])[/color][/b] [b][color=BLUE]([/color][/b]assoc 210 e[b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]entmake [b][color=GREEN]([/color][/b]list [b][color=BLUE]([/color][/b]cons 0 [color=#2f4f4f]"ENDBLK"[/color][b][color=BLUE])[/color][/b][b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]princ [color=#2f4f4f]"\nInsert Point: "[/color][b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]setvar [color=#2f4f4f]"CMDECHO"[/color] 0[b][color=MAROON])[/color][/b] [b][color=MAROON]([/color][/b]command [color=#2f4f4f]"_.INSERT"[/color] bn pause 1 1 0 [color=#2f4f4f]"_.EXPLODE"[/color] [b][color=GREEN]([/color][/b]entlast[b][color=GREEN])[/color][/b][b][color=MAROON])[/color][/b][b][color=NAVY])[/color][/b][b][color=FUCHSIA])[/color][/b] [b][color=FUCHSIA]([/color][/b]prin1[b][color=FUCHSIA])[/color][/b][b][color=BLACK])[/color][/b] You would need to modify it to your needs. -David You got me alan, I know that I need to use grread for this code but I can't really figure out on how to do it. It work's just fine I just need to preview it before inserting. Do you mind give me another hint? You can use grread to move the text around and have it attached to the cursor. However, you'll lose osnaps/orthomode/etc. Quote
Lee Mac Posted March 20, 2012 Posted March 20, 2012 Thank you David but that didn't work for me. You would need to modify it to your needs. .......... Quote
LISP2LEARN Posted March 21, 2012 Author Posted March 21, 2012 Lee, I want to use David's code but I need to purge the drawing each time I ran the command because of the "temp_block" which is inefficient or purge when I finish my drafting session which is not recommended. The temp blocks keeps filling up. I added (command "-PURGE" "_B" "TEMP1" "n") to the code but my system lags. Also I have some lisp which I need to improve using grread with entmake text. Quote
alanjt Posted March 21, 2012 Posted March 21, 2012 Here's a bad example I did a few years ago: http://www.theswamp.org/index.php?topic=12813.msg369811#msg369811 Quote
MSasu Posted March 21, 2012 Posted March 21, 2012 An other solution: [color=blue](setq pointIns '(0.0 0.0 0.0))[/color] (setq text (entmakex (list (cons 0 "TEXT") (cons 7 "romans") (cons 40 10) (cons 8 "TEXT") (cons 10 [color=#0000ff]pointIns[/color]) (cons 210 '(0. 0. 1.)) (cons 1 d) (cons 41 0. (cons 50 0) ))) [color=blue](redraw text 2) ;hide new entity[/color] [color=blue](command "_MOVE" text "" pointIns pause)[/color] May want to replace the origin from my example with the insertion point of your source entity to be located in your draw area. Regards, Mircea Quote
pBe Posted March 21, 2012 Posted March 21, 2012 Mircea. Just a sugestion: (setq text (entmakex (list (cons 0 "TEXT") (cons 7 "romans") (cons 40 10) (cons 8 "TEXT") (cons 10 [color=blue](setq p (getpoint "\nPick insertion point"))) [/color] (cons 1 d) (cons 41 0. (cons 50 0) ) ) ) then invoke a loop for (command "_move" text "" p) until the user is satisifed with the location. Quote
MSasu Posted March 21, 2012 Posted March 21, 2012 Not sure what you mean, whouldn't then be needed to pick more then once to get the final position? Please find below how I have seen the OP's code adjusted: (defun C:test ( / e d assocEnt pointIns ) (if (setq e (car (entsel))) (progn (setq assocEnt (entget e) e (cdr (assoc 2 assocEnt)) pointIns (cdr (assoc 10 assocEnt))) (setq d (cond ((= e "p1") "1\"") ((= e "p1.5") "1-1\\2\"") ((= e "p2") "2\"") ;;etc..;; (t nil) ) ) (if (and d (setq text (entmakex (list (cons 0 "TEXT") (cons 7 "romans") (cons 40 10) (cons 8 "TEXT") (cons 10 pointIns) (cons 210 '(0. 0. 1.)) (cons 1 d) (cons 41 0. (cons 50 0) ) ) ) ) (progn (redraw text 2) ;hide new entity (command "_MOVE" text "" pointIns pause) ) ) ) ) (princ) ) Regards, Mircea Quote
pBe Posted March 21, 2012 Posted March 21, 2012 Not sure what you mean, whouldn't then be needed to pick more then once to get the final position?Regards, Mircea I see, i was thinking more like .... Specify second point or : *picked* "... ooops I dont like it..." Specify second point or : *picked* "... crap still not good..." Specify second point or : *picked* "...oh yesss..." One less command (move) in the event the user is not satisfied with the first and subsequent picked locations Quote
LISP2LEARN Posted March 21, 2012 Author Posted March 21, 2012 Thanks alan. I've learned a lot on your code. It's exactly what I wanted. Mircea, You hit the jackpot, works like a charm. Thank you guys for all the help. Quote
Lee Mac Posted March 21, 2012 Posted March 21, 2012 To demonstrate how a block could be used to avoid the rubber-banding of the move command: (defun c:test ( / *error* e l n s v ) (defun *error* ( msg ) (if l (mapcar 'setvar v l)) (if (and n (setq e (tblobjname "BLOCK" n))) (vla-delete (vlax-ename->vla-object (cdr (assoc 330 (entget e))))) ) (if (not (wcmatch (strcase msg) "*BREAK,*CANCEL*,*EXIT*")) (princ (strcat "\nError: " msg)) ) (princ) ) (if (and (setq e (car (entsel))) (eq "INSERT" (cdr (assoc 0 (setq e (entget e))))) (setq e (strcase (cdr (assoc 2 e)))) ) (progn (setq s (cond ( (eq e "P1") "1\"") ( (eq e "P1.5") "1-1\\2\"") ( (eq e "P2") "2\"") ( "N/A" ) ) ) (setq n 0) (while (tblsearch "BLOCK" (itoa (setq n (1+ n))))) (setq n (itoa n)) (entmake (list '(0 . "BLOCK") '(8 . "0") (cons 2 n) '(70 . 0) '(10 0.0 0.0 0.0) ) ) (entmake (list '(0 . "TEXT") (cons 7 (if (tblsearch "STYLE" "romans") "romans" "Standard")) '(40 . 10.0) '(8 . "TEXT") '(10 0.0 0.0 0.0) (cons 1 s) '(41 . 0. ) ) (entmake '((0 . "ENDBLK"))) (setq v '(CMDECHO QAFLAGS) l (mapcar 'getvar v) e (entlast) ) (mapcar 'setvar v '(0 1)) (princ "\nPosition Text: ") (command "_.-insert" n "_S" 1.0 "_R" 0.0 pause) (if (not (equal e (setq e (entlast)))) (command "_.explode" e "") ) (mapcar 'setvar v l) (vla-delete (vlax-ename->vla-object (cdr (assoc 330 (entget (tblobjname "BLOCK" n)))))) ) ) (princ) ) (vl-load-com) (princ) Quote
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.