0 Members and 1 Guest are viewing this topic.
Not to detract from kruuger's excellent dynamic block work, but here is a very simple way to code it:Code - Auto/Visual Lisp: [Select](defun c:mybox ( / a b p1 p2 ) (if (and (setq a (getpoint "\nSpecify first corner: ")) (setq b (getcorner a "\nSpecify opposite corner: ")) ) (progn (setq p1 (mapcar 'min a b) p2 (mapcar 'max a b) ) (mypbox p1 p2) (mypbox (mapcar '- p1 '(3 3)) (mapcar '+ p2 '(3 3))) (mytext (list (+ (car p2) 13) (- (cadr p1) 28)) "BOX1") (mytext (list (+ (car p2) 13) (- (cadr p1) 45)) (strcat (rtos (- (car p2) (car p1))) " x " (rtos (- (cadr p2) (cadr p1)))) ) ) ) (princ)) (defun mypbox ( a b ) (entmakex (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(90 . 4) '(70 . 1) (list 10 (car a) (cadr a)) (list 10 (car b) (cadr a)) (list 10 (car b) (cadr b)) (list 10 (car a) (cadr b)) ) )) (defun mytext ( p s ) (entmakex (list '(0 . "TEXT") (cons 10 p) (cons 07 (getvar 'textstyle)) (cons 40 (getvar 'textsize)) (cons 01 s) ) ))(princ)
Good code examples Lee & Tharwat.
I would add the option to enter the box by 5 points in CCW.
Quote from: CAB on September 24, 2012, 02:18:54 PMGood code examples Lee & Tharwat. Thanks CAB , @Anistar .I did not get what you mean by your request , can you please clarify it more ? QuoteI would add the option to enter the box by 5 points in CCW.
Quote from: kruuger on September 24, 2012, 12:59:48 PMQuote from: antistar on September 24, 2012, 10:38:14 AMQuote from: kruuger on September 24, 2012, 09:50:04 AMQuote from: antistar on September 24, 2012, 09:22:53 AMQuote from: kruuger on September 24, 2012, 09:05:16 AMQuote from: antistar on September 24, 2012, 08:49:18 AMQuote from: kruuger on September 24, 2012, 08:34:12 AMwhy not dynamic block ?kruugerI do not know how. attach your drawing here. maybe i can do something.k.Thanks kruuger.try this. during insert the block click CTRL on keyboard to change insertion point.kruugerEDIT: try again. now it's a little betterKruuger, Thanks a lot for your attention and work.Dynamic Blocks not serve because I need to move the texts sometimes.I prefer to create a LISP with simple texts without attributes, as I described in the first post.If you can help me would be very grateful.still can be acheive with dynamic block.added visibility to turn on/off text.added move action to change location of text.is it ok ?kruugerKruuger,Excellent work.Thanks a lot for your help.
Quote from: antistar on September 24, 2012, 10:38:14 AMQuote from: kruuger on September 24, 2012, 09:50:04 AMQuote from: antistar on September 24, 2012, 09:22:53 AMQuote from: kruuger on September 24, 2012, 09:05:16 AMQuote from: antistar on September 24, 2012, 08:49:18 AMQuote from: kruuger on September 24, 2012, 08:34:12 AMwhy not dynamic block ?kruugerI do not know how. attach your drawing here. maybe i can do something.k.Thanks kruuger.try this. during insert the block click CTRL on keyboard to change insertion point.kruugerEDIT: try again. now it's a little betterKruuger, Thanks a lot for your attention and work.Dynamic Blocks not serve because I need to move the texts sometimes.I prefer to create a LISP with simple texts without attributes, as I described in the first post.If you can help me would be very grateful.still can be acheive with dynamic block.added visibility to turn on/off text.added move action to change location of text.is it ok ?kruuger
Quote from: kruuger on September 24, 2012, 09:50:04 AMQuote from: antistar on September 24, 2012, 09:22:53 AMQuote from: kruuger on September 24, 2012, 09:05:16 AMQuote from: antistar on September 24, 2012, 08:49:18 AMQuote from: kruuger on September 24, 2012, 08:34:12 AMwhy not dynamic block ?kruugerI do not know how. attach your drawing here. maybe i can do something.k.Thanks kruuger.try this. during insert the block click CTRL on keyboard to change insertion point.kruugerEDIT: try again. now it's a little betterKruuger, Thanks a lot for your attention and work.Dynamic Blocks not serve because I need to move the texts sometimes.I prefer to create a LISP with simple texts without attributes, as I described in the first post.If you can help me would be very grateful.
Quote from: antistar on September 24, 2012, 09:22:53 AMQuote from: kruuger on September 24, 2012, 09:05:16 AMQuote from: antistar on September 24, 2012, 08:49:18 AMQuote from: kruuger on September 24, 2012, 08:34:12 AMwhy not dynamic block ?kruugerI do not know how. attach your drawing here. maybe i can do something.k.Thanks kruuger.try this. during insert the block click CTRL on keyboard to change insertion point.kruugerEDIT: try again. now it's a little better
Quote from: kruuger on September 24, 2012, 09:05:16 AMQuote from: antistar on September 24, 2012, 08:49:18 AMQuote from: kruuger on September 24, 2012, 08:34:12 AMwhy not dynamic block ?kruugerI do not know how. attach your drawing here. maybe i can do something.k.Thanks kruuger.
Quote from: antistar on September 24, 2012, 08:49:18 AMQuote from: kruuger on September 24, 2012, 08:34:12 AMwhy not dynamic block ?kruugerI do not know how. attach your drawing here. maybe i can do something.k.
Quote from: kruuger on September 24, 2012, 08:34:12 AMwhy not dynamic block ?kruugerI do not know how.
why not dynamic block ?kruuger
Lee, Thanks for your code. Just would like to enter the dimensions of the box.
This ... ?Code - Auto/Visual Lisp: [Select](defun c:Test (/ a b p lw p1 p2 p3);;; Tharwat 24. Sep. 2012 ;;; (if (and (setq a (getdist "\n Specify length of Box :")) (setq b (getdist "\n Specify width of Box :")) (setq p (getpoint "\n Specify Left Bottom corner of Box :")) ) (progn (setq lw (entmakex (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline") '(70 . 1) '(90 . 5) '(62 . 6) (cons 10 p) (cons 10 (setq p1 (polar p 0. a))) (cons 10 (setq p2 (polar p1 (/ pi 2.) b))) (cons 10 (setq p3 (polar p2 pi a))) (cons 10 (polar p3 (* pi 1.5) b)) ) ) ) (vl-cmdf "_.offset" 3 lw (mapcar '(lambda (a b) (/ (+ a b) 2.)) p1 p3) "" ) (vl-cmdf "_.chprop" (entlast) "" "color" 3 "") (entmakex (list '(0 . "TEXT") (cons 7 (getvar 'textstyle)) (cons 10 (polar (polar p1 0. 10.) (* pi 1.5) 25.)) '(1 . "BOX1") '(40 . 10.) ) ) (entmakex (list '(0 . "TEXT") (cons 7 (getvar 'textstyle)) (cons 10 (polar (polar p1 0. 10.) (* pi 1.5) 40.)) (cons 1 (strcat (rtos a 2) " x " (rtos b 2))) '(40 . 10.) ) ) ) (princ) ) (princ))