rlcad Posted June 14, 2016 Share Posted June 14, 2016 I have a rectangle, 10'x20'. How do I make it to another size e.g. like 17'x23'? Quote Link to comment Share on other sites More sharing options...
ReMark Posted June 14, 2016 Share Posted June 14, 2016 One option: Use the grips to stretch the rectangle in the direction you want (to make it larger or smaller) and type the distance in at the command line. Do this for the length and the width. You weren't thinking of trying to use the SCALE command were you? Quote Link to comment Share on other sites More sharing options...
rlcad Posted June 14, 2016 Author Share Posted June 14, 2016 One option: Use the grips to stretch the rectangle in the direction you want (to make it larger or smaller) and type the distance in at the command line. I have tried it, but it requires to input how much to stretch it from the original point (the Delta as it were, 7' and 3' respectively in the above example). I wanted to be able to input the total size: 17' and 23'. This would be particularly useful when the rectangle's original dimensions are unknown, and only the desired end dimensions are known. Quote Link to comment Share on other sites More sharing options...
rkmcswain Posted June 14, 2016 Share Posted June 14, 2016 If you apply geometric and dimensional constraints to it, then you can do what you want. Quote Link to comment Share on other sites More sharing options...
eldon Posted June 14, 2016 Share Posted June 14, 2016 You may find that it is quicker to re-draw it. Quote Link to comment Share on other sites More sharing options...
tmelancon Posted June 14, 2016 Share Posted June 14, 2016 Agree with rkmc, this is great for new rectangles. As for existing rectangles see marko_ribar's code: (defun rectangle-p ( e f / nobulge-p dpar stp enp ptn k parpts index ptlst ) (vl-load-com) (defun nobulge-p ( e i f ) (apply 'and (mapcar '(lambda (x) (equal (vla-getbulge e x) 0.0 f)) i)) ) (setq dpar (/ (+ (abs (setq enp (vlax-curve-getendparam e))) (abs (setq stp (vlax-curve-getstartparam e)))) (setq ptn (cdr (assoc 90 (entget e)))))) (setq k -1.0) (repeat ptn (setq parpts (append parpts (setq parpts (list (+ stp (* (setq k (1+ k)) dpar)))))) ) (setq k -1) (repeat ptn (setq index (append index (setq index (list (setq k (1+ k)))))) ) (setq ptlst (mapcar '(lambda (x) (vlax-curve-getpointatparam e x)) parpts)) (and (eq ptn 4) (nobulge-p (if (eq (type e) 'ENAME) (vlax-ename->vla-object e) e) index f) (equal (distance (nth 0 ptlst) (nth 1 ptlst)) (distance (nth 2 ptlst) (nth 3 ptlst)) f) (equal (distance (nth 1 ptlst) (nth 2 ptlst)) (distance (nth 3 ptlst) (nth 0 ptlst)) f) (equal (distance (nth 0 ptlst) (nth 2 ptlst)) (distance (nth 1 ptlst) (nth 3 ptlst)) f) ) ) (defun c:recedit ( / alignucs2rec 2xucsprev ch d ddl ddw dn i l nl nw op opl opw p2 p3 p4 pdxf rec scfl scfw sdxf ss ssn vrec vrec10n w ) (defun alignucs2rec ( rec / i vlst ) (vl-load-com) (setq i -1) (repeat 4 (setq vlst (cons (vlax-curve-getpointatparam rec (setq i (1+ i))) vlst)) ) (setq vlst (reverse vlst)) (command "_.UCS" "_W") (command "_.UCS" "_3P" (car vlst) (cadr vlst) (cadddr vlst)) (princ) ) (defun 2xucsprev nil (command "_.UCS" "_P") (command "_.UCS" "_P") (princ) ) (prompt "\nSelect rectangles you want to edit...") (setq ss (ssget "_:L" '((0 . "LWPOLYLINE") (90 . 4) (-4 . "<or") (70 . 1) (70 . 129) (-4 . "or>")))) (while (or (not ss) (vl-some '(lambda ( x ) (eq x nil)) (mapcar '(lambda ( x ) (rectangle-p x 1e-) (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))))) (prompt "\nEmpty sel.set or some of selected LWPOLYLINE(s) doesn't belong to rectangles... Try selecting rectangle(s) again...") (setq ss (ssget "_:L" '((0 . "LWPOLYLINE") (90 . 4) (-4 . "<or") (70 . 1) (70 . 129) (-4 . "or>")))) (if ss (progn (setq ssn (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss)))) (foreach e ssn (if (not (rectangle-p e 1e-) (ssdel e ss) ) ) ) ) ) (initget "All Single") (setq ch (getkword "\nProcess all rectangles or one by one [All/Single] <All> : ")) (if (null ch) (setq ch "All")) (cond ( (eq ch "All") (repeat (setq i (sslength ss)) (setq rec (ssname ss (setq i (1- i)))) (setq vrec (mapcar 'cdr (acet-list-m-assoc 10 (entget rec)))) (setq w (distance (car vrec) (cadr vrec))) (setq l (distance (cadr vrec) (caddr vrec))) (prompt "\nCurrent Width : ") (princ (rtos w 2 50)) (prompt "\tCurrent Length : ") (princ (rtos l 2 50)) ) (initget 1 "WL SC DE") (setq op (getkword "\nChoose option (New Width-Length/Scale Width-Length/Delta Width-Length) [WL/SC/DE] : ")) (cond ( (eq op "WL") (initget 1 "+ -") (setq opw (getkword "\nSpecify positive or negative input for new Width [+/-] : ")) (initget 5) (setq nw (getdist "\nPick or specify new Width value : ")) (initget 1 "+ -") (setq opl (getkword "\nSpecify positive or negative input for new Length [+/-] : ")) (initget 5) (setq nl (getdist "\nPick or specify new Length value : ")) (repeat (setq i (sslength ss)) (setq rec (ssname ss (setq i (1- i)))) (setq vrec (mapcar 'cdr (acet-list-m-assoc 10 (entget rec)))) (setq nw ((eval (read opw)) 0.0 nw)) (setq nl ((eval (read opl)) 0.0 nl)) (setq p2 (polar (car vrec) (angle (car vrec) (cadr vrec)) nw)) (setq p3 (polar (cadddr vrec) (angle (cadddr vrec) (caddr vrec)) nw)) (setq vrec10n (mapcar '(lambda ( x ) (cons 10 x)) (list (car vrec) p2 p3 (cadddr vrec)))) (setq pdxf (reverse (cdr (member (cons 10 (car vrec)) (reverse (entget rec)))))) (setq sdxf (cdr (member (cons 10 (cadddr vrec)) (entget rec)))) (entupd (cdr (assoc -1 (entmod (append pdxf vrec10n sdxf))))) (setq vrec (mapcar 'cdr (acet-list-m-assoc 10 (entget rec)))) (setq p3 (polar (cadr vrec) (angle (cadr vrec) (caddr vrec)) nl)) (setq p4 (polar (car vrec) (angle (car vrec) (cadddr vrec)) nl)) (setq vrec10n (mapcar '(lambda ( x ) (cons 10 x)) (list (car vrec) (cadr vrec) p3 p4))) (entupd (cdr (assoc -1 (entmod (append pdxf vrec10n sdxf))))) ) ) ( (eq op "SC") (initget 3) (setq scfw (getreal "\nSpecify positive or negative Width scale factor : ")) (initget 3) (setq scfl (getreal "\nSpecify positive or negative Length scale factor : ")) (repeat (setq i (sslength ss)) (setq rec (ssname ss (setq i (1- i)))) (setq vrec (mapcar 'cdr (acet-list-m-assoc 10 (entget rec)))) (setq d (distance (car vrec) (cadr vrec))) (setq dn (* d scfw)) (setq p2 (polar (car vrec) (angle (car vrec) (cadr vrec)) dn)) (setq p3 (polar (cadddr vrec) (angle (cadddr vrec) (caddr vrec)) dn)) (setq vrec10n (mapcar '(lambda ( x ) (cons 10 x)) (list (car vrec) p2 p3 (cadddr vrec)))) (setq pdxf (reverse (cdr (member (cons 10 (car vrec)) (reverse (entget rec)))))) (setq sdxf (cdr (member (cons 10 (cadddr vrec)) (entget rec)))) (entupd (cdr (assoc -1 (entmod (append pdxf vrec10n sdxf))))) (setq vrec (mapcar 'cdr (acet-list-m-assoc 10 (entget rec)))) (setq d (distance (cadr vrec) (caddr vrec))) (setq dn (* d scfl)) (setq p3 (polar (cadr vrec) (angle (cadr vrec) (caddr vrec)) dn)) (setq p4 (polar (car vrec) (angle (car vrec) (cadddr vrec)) dn)) (setq vrec10n (mapcar '(lambda ( x ) (cons 10 x)) (list (car vrec) (cadr vrec) p3 p4))) (entupd (cdr (assoc -1 (entmod (append pdxf vrec10n sdxf))))) ) ) ( (eq op "DE") (initget 1 "+ -") (setq opw (getkword "\nSpecify positive or negative delta input for Width [+/-] : ")) (initget 5) (setq ddw (getdist "\nPick or specify delta Width value - for zero delta type \"0\" : ")) (initget 1 "+ -") (setq opl (getkword "\nSpecify positive or negative delta input for Length [+/-] : ")) (initget 5) (setq ddl (getdist "\nPick or specify delta Length value - for zero delta type \"0\" : ")) (repeat (setq i (sslength ss)) (setq rec (ssname ss (setq i (1- i)))) (setq vrec (mapcar 'cdr (acet-list-m-assoc 10 (entget rec)))) (setq d (distance (car vrec) (cadr vrec))) (setq dn ((eval (read opw)) d ddw)) (setq p2 (polar (car vrec) (angle (car vrec) (cadr vrec)) dn)) (setq p3 (polar (cadddr vrec) (angle (cadddr vrec) (caddr vrec)) dn)) (setq vrec10n (mapcar '(lambda ( x ) (cons 10 x)) (list (car vrec) p2 p3 (cadddr vrec)))) (setq pdxf (reverse (cdr (member (cons 10 (car vrec)) (reverse (entget rec)))))) (setq sdxf (cdr (member (cons 10 (cadddr vrec)) (entget rec)))) (entupd (cdr (assoc -1 (entmod (append pdxf vrec10n sdxf))))) (setq vrec (mapcar 'cdr (acet-list-m-assoc 10 (entget rec)))) (setq d (distance (cadr vrec) (caddr vrec))) (setq dn ((eval (read opl)) d ddl)) (setq p3 (polar (cadr vrec) (angle (cadr vrec) (caddr vrec)) dn)) (setq p4 (polar (car vrec) (angle (car vrec) (cadddr vrec)) dn)) (setq vrec10n (mapcar '(lambda ( x ) (cons 10 x)) (list (car vrec) (cadr vrec) p3 p4))) (entupd (cdr (assoc -1 (entmod (append pdxf vrec10n sdxf))))) ) ) ) ) ( (eq ch "Single") (repeat (setq i (sslength ss)) (setq rec (ssname ss (setq i (1- i)))) (alignucs2rec rec) (redraw rec 3) (initget 1 "WL SC DE") (setq op (getkword "\nChoose option (New Width-Length/Scale Width-Length/Delta Width-Length) [WL/SC/DE] : ")) (cond ( (eq op "WL") (setq vrec (mapcar 'cdr (acet-list-m-assoc 10 (entget rec)))) (setq w (distance (car vrec) (cadr vrec))) (setq l (distance (cadr vrec) (caddr vrec))) (prompt "\nCurrent Width : ") (princ (rtos w 2 50)) (prompt "\tCurrent Length : ") (princ (rtos l 2 50)) (initget 1 "+ -") (setq opw (getkword "\nSpecify positive or negative input for new Width [+/-] : ")) (initget 4) (setq nw (getdist (strcat "\nPick or specify new Width value <" (rtos w 2 50) "> : "))) (if (null nw) (setq nw w)) (setq nw ((eval (read opw)) 0.0 nw)) (setq p2 (polar (car vrec) (angle (car vrec) (cadr vrec)) nw)) (setq p3 (polar (cadddr vrec) (angle (cadddr vrec) (caddr vrec)) nw)) (setq vrec10n (mapcar '(lambda ( x ) (cons 10 x)) (list (car vrec) p2 p3 (cadddr vrec)))) (setq pdxf (reverse (cdr (member (cons 10 (car vrec)) (reverse (entget rec)))))) (setq sdxf (cdr (member (cons 10 (cadddr vrec)) (entget rec)))) (entupd (cdr (assoc -1 (entmod (append pdxf vrec10n sdxf))))) (redraw rec 3) (setq vrec (mapcar 'cdr (acet-list-m-assoc 10 (entget rec)))) (initget 1 "+ -") (setq opl (getkword "\nSpecify positive or negative input for new Length [+/-] : ")) (initget 4) (setq nl (getdist (strcat "\nPick or specify new Length value <" (rtos l 2 50) "> : "))) (if (null nl) (setq nl l)) (setq nl ((eval (read opl)) 0.0 nl)) (setq p3 (polar (cadr vrec) (angle (cadr vrec) (caddr vrec)) nl)) (setq p4 (polar (car vrec) (angle (car vrec) (cadddr vrec)) nl)) (setq vrec10n (mapcar '(lambda ( x ) (cons 10 x)) (list (car vrec) (cadr vrec) p3 p4))) (entupd (cdr (assoc -1 (entmod (append pdxf vrec10n sdxf))))) ) ( (eq op "SC") (setq vrec (mapcar 'cdr (acet-list-m-assoc 10 (entget rec)))) (setq w (distance (car vrec) (cadr vrec))) (setq l (distance (cadr vrec) (caddr vrec))) (prompt "\nCurrent Width : ") (princ (rtos w 2 50)) (prompt "\tCurrent Length : ") (princ (rtos l 2 50)) (initget 3) (setq scfw (getreal "\nSpecify positive or negative Width scale factor : ")) (initget 3) (setq scfl (getreal "\nSpecify positive or negative Length scale factor : ")) (setq vrec (mapcar 'cdr (acet-list-m-assoc 10 (entget rec)))) (setq d (distance (car vrec) (cadr vrec))) (setq dn (* d scfw)) (setq p2 (polar (car vrec) (angle (car vrec) (cadr vrec)) dn)) (setq p3 (polar (cadddr vrec) (angle (cadddr vrec) (caddr vrec)) dn)) (setq vrec10n (mapcar '(lambda ( x ) (cons 10 x)) (list (car vrec) p2 p3 (cadddr vrec)))) (setq pdxf (reverse (cdr (member (cons 10 (car vrec)) (reverse (entget rec)))))) (setq sdxf (cdr (member (cons 10 (cadddr vrec)) (entget rec)))) (entupd (cdr (assoc -1 (entmod (append pdxf vrec10n sdxf))))) (redraw rec 3) (setq vrec (mapcar 'cdr (acet-list-m-assoc 10 (entget rec)))) (setq d (distance (cadr vrec) (caddr vrec))) (setq dn (* d scfl)) (setq p3 (polar (cadr vrec) (angle (cadr vrec) (caddr vrec)) dn)) (setq p4 (polar (car vrec) (angle (car vrec) (cadddr vrec)) dn)) (setq vrec10n (mapcar '(lambda ( x ) (cons 10 x)) (list (car vrec) (cadr vrec) p3 p4))) (entupd (cdr (assoc -1 (entmod (append pdxf vrec10n sdxf))))) ) ( (eq op "DE") (setq vrec (mapcar 'cdr (acet-list-m-assoc 10 (entget rec)))) (setq w (distance (car vrec) (cadr vrec))) (setq l (distance (cadr vrec) (caddr vrec))) (prompt "\nCurrent Width : ") (princ (rtos w 2 50)) (prompt "\tCurrent Length : ") (princ (rtos l 2 50)) (initget 1 "+ -") (setq opw (getkword "\nSpecify positive or negative delta input for Width [+/-] : ")) (initget 5) (setq ddw (getdist "\nPick or specify delta Width value - for zero delta type \"0\" : ")) (initget 1 "+ -") (setq opl (getkword "\nSpecify positive or negative delta input for Length [+/-] : ")) (initget 5) (setq ddl (getdist "\nPick or specify delta Length value - for zero delta type \"0\" : ")) (setq vrec (mapcar 'cdr (acet-list-m-assoc 10 (entget rec)))) (setq d (distance (car vrec) (cadr vrec))) (setq dn ((eval (read opw)) d ddw)) (setq p2 (polar (car vrec) (angle (car vrec) (cadr vrec)) dn)) (setq p3 (polar (cadddr vrec) (angle (cadddr vrec) (caddr vrec)) dn)) (setq vrec10n (mapcar '(lambda ( x ) (cons 10 x)) (list (car vrec) p2 p3 (cadddr vrec)))) (setq pdxf (reverse (cdr (member (cons 10 (car vrec)) (reverse (entget rec)))))) (setq sdxf (cdr (member (cons 10 (cadddr vrec)) (entget rec)))) (entupd (cdr (assoc -1 (entmod (append pdxf vrec10n sdxf))))) (redraw rec 3) (setq vrec (mapcar 'cdr (acet-list-m-assoc 10 (entget rec)))) (setq d (distance (cadr vrec) (caddr vrec))) (setq dn ((eval (read opl)) d ddl)) (setq p3 (polar (cadr vrec) (angle (cadr vrec) (caddr vrec)) dn)) (setq p4 (polar (car vrec) (angle (car vrec) (cadddr vrec)) dn)) (setq vrec10n (mapcar '(lambda ( x ) (cons 10 x)) (list (car vrec) (cadr vrec) p3 p4))) (entupd (cdr (assoc -1 (entmod (append pdxf vrec10n sdxf))))) ) ) (redraw rec 4) (2xucsprev) ) ) ) (princ) ) In this case I drew a rectangle the same size you specified. I ran C:RECEDIT. Typed 'S' for single rectangle. Then typed 'WL' for new width length. Next I typed '+' to specify positive input. Enter your new Width. Afterwards, type '+' again then Enter your new Length. Hope this helps. Of course you can explore the power of the rest of the program, and tweak it to your needs. Such as removing the option to select single or all so that it just selects single. I just wanted to explain how I tested it on your problem. Take care. Quote Link to comment Share on other sites More sharing options...
RobDraw Posted June 14, 2016 Share Posted June 14, 2016 I'm with Eldon on this one. It's a rectangle. I would be much faster drawing it to size than adjusting it using constraints or any other method for that matter. Quote Link to comment Share on other sites More sharing options...
rkmcswain Posted June 14, 2016 Share Posted June 14, 2016 I agree @RobDraw and @Eldon.... but if you've never seen AutoCAD (or fill in the blank _____CAD) - you might expect this to be built in. Like you might expect a polygon to have properties to easily change from a six sided one to an eight sided one... But in that case too... redraw.... Quote Link to comment Share on other sites More sharing options...
RobDraw Posted June 14, 2016 Share Posted June 14, 2016 I've never used constraints in AutoCAD. I think I need to revisit them. Quote Link to comment Share on other sites More sharing options...
BIGAL Posted June 15, 2016 Share Posted June 15, 2016 Robdraw a sample new block.dwg Quote Link to comment Share on other sites More sharing options...
RobDraw Posted June 15, 2016 Share Posted June 15, 2016 [sarcasm]Is that all you got, a rectangle?[end sarcasm] 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.