Scale/Enlarge all entities on a layer

Hello,

I've got a rookie question here:
How can I scale all entities in a single layer (or multiple layers) at once? And is this possible without changing the center point, so they don't leave their original place in the drawing?

My client is asking me to make the entities larger for reading purposes, but I can't figure out how to do this in a efficient way.

Thanks alot!
Jelle

Comments

  • The Scale command will enlarge everything in the selection set with respect to a selected point -- that includes the space between objects. So no, if you mean geometry.

    But if you just want to make the texts and/or mtexts larger without moving them out of place, you can select them all and then change their Height property (for Texts) and/or Text Height property (for Mtexts) in the Properties palette.

    You can use the Quick Select panel (which is the alter ego of the Properties palette) to select only the Texts or Mtexts in a selection set.

    They'll get larger with respect to their anchor grip, which is determined by the Justify setting in the Properties palette. If that's not where you want it, you should change that before changing the size. Changing justification won't move the Text or Mtext object.

    Mtexts that have a Defined Width property won't increase that, so they'll take up more lines when you increase their Text Height.

  • Also if you place items as blocks you may change the size of the block.

  • If it is about the readability of texts you could use the annotative property of an Mtext of which the scale is controlled by the current annotative scale. Choosing another Annotiative Scale, automaically scales the texts.

  • @Patrik Sparrman said:
    Also if you place items as blocks you may change the size of the block.

    Hi Patrik,

    All the items are blocks.
    Let's say I select all of my blocks in my drawing (Model). Is there a way to tell Bricscad that I want to keep the centerpoint of each individual block as a reference to scale from? Instead of using the scale tool and using 'a reference' point in the drawing for all blocks at once, because this will defenately shift the position of my blocks.

    Thanks for your response.

  • @Louis Verdonck said:
    If it is about the readability of texts you could use the annotative property of an Mtext of which the scale is controlled by the current annotative scale. Choosing another Annotiative Scale, automaically scales the texts.

    Hi Louis,

    First of all thanks for your response.
    It's not about the texts, but about the blocks.
    See my reaction above to the response of Patrik.

    Thank you

  • When a series of blocks is selected, you can set their X, Y (and Z) scaling factors equally in the Properties panel. Scaling of a block such way keeps the insertion point untouched.

  • @Louis Verdonck said:
    When a series of blocks is selected, you can set their X, Y (and Z) scaling factors equally in the Properties panel. Scaling of a block such way keeps the insertion point untouched.

    Hi Louis,

    This works only for a series of the same block.
    When I select multiple (different) blocks, the Scale X value is 'Varies' and I can't seem to change it.

  • ScottS
    edited November 2019

    This is something I find myself very often wishing to do more generally, so I, too, am interested in an efficient solution.

    It is standard on other 3D modeling platforms, with scaling and rotation transformations, to be able to choose multiple centers or pivot points with respect to the individual objects, or one for the selection group as a whole.

    In BricsCAD, I am able to select differently-scaled blocks and change the Scale X from *Varies* to another value, in the Properties panel, but then all the blocks take on that same new scale. That is, all of them do not change in the same proportion relative to their previous scale.

    Using the Properties panel is also OK for 2D rotations, say, of individual blocks about their insertion points (assuming those are in a practical location), but not for independent proportional scaling as the OP requests, nor for 3D rotations.

    In addition to that feature request, it would be useful to be able to access Scale X, Scale Y, Scale Z, and rotation values from the CHANGE command.

    [maybe this discussion should continue in the 3D modeling category...]

  • Martin Drese
    edited November 2019

    may this helps a bit?
    removed the Version fo Inserts and put in an Version vor more objects.

    load this file by drag 'n drop from fileexplorer into your BricsCAD or use _appload dialogue
    and start by typing in at the command line: scaledyn

    choose the objects to scale, pick an Point (just for orientationan and showing the rubberband)
    Then drag or put in an value. (read the promptmessage)

  • @Martin Drese said:
    may this helps a bit?
    removed the Version fo Inserts and put in an Version vor more objects.

    (defun c:scaledyn (/ CW:POINTBYCROSSHAIR awahl scaleliste BasePT )

    (defun CW:POINTBYCROSSHAIR (pt elems CURTYPE / XORDRAW XORDRAW2 P distrev)

    (defun XORDRAW2 (dist elems)
    (mapcar '(lambda (x / base )
    (setq base(cdr(assoc 10(entget x))))
    (vl-catch-all-apply 'vla-ScaleEntity (list (vlax-ename->vla-object x) (vlax-3d-point base) dist))
    )
    elems
    )
    dist
    )
    (if(vl-string-search "de"(getvar "Locale"))
    (princ"\ziehen für dynamische Größe oder Return für % Scalierung: ")
    (princ"\drag for dynamic size or Return for % Scaling: ")
    )
    (while (= 5 (car (setq P (grread 't 5 CURTYPE))))
    (redraw) ;_ grvecs löschen
    (if (and distrev (/= (distance PT (cadr P)) distrev))
    (setq distrev (XORDRAW2 (* (distance PT (cadr P)) 1.0) elems))
    )
    (if (> (distance PT (cadr P)) 1.0)
    (setq distrev 1.0)
    )
    (grdraw pt (cadr P) 1 1)
    )
    (redraw)
    (prin1 p)(terpri)
    (if (= 2 (car p))
    (if(setq val(if(vl-string-search "de"(getvar "Locale"))
    (getint"\nWert eingeben: ")
    (getint"\nnew value: ")
    ))
    (XORDRAW2 (* val 1.0) elems)
    )
    )
    (if (= 3 (car P))
    (cadr P)
    )
    )
    (vl-load-com)
    (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
    (vla-startundomark (vla-get-activedocument (vlax-get-acad-object)))
    (if (setq awahl (ssget))
    (setq scaleliste (vl-remove-if 'listp (mapcar 'cadr (ssnamex awahl))))
    )
    (setq BasePT (if(vl-string-search "de"(getvar "Locale"))
    (getpoint "\nBasispunkt: ")
    (getpoint "\nBasepoint: ")
    ))
    (CW:POINTBYCROSSHAIR
    BasePT
    scaleliste
    2
    )
    (vla-endundomark (vla-get-activedocument (vlax-get-acad-object)))
    (princ)
    )

    Hi Martin,
    Thank you for your reply.
    Unfortunately I have no idea what to do with this code ^^

    Jelle

  • i edided the message above