Dimension font size, or why I hate dimensions

Can’t Rhino choose a font size that is reasonable based on the size of the geometry being annotated? I mean, this is just absurd, the font size is larger than the complete geometry.

Please help me not hate dimensions and tell me how to set proper defaults.

1 Like

Hi Menno,

I feel your pain, however what would the rule set be like to solve this?
Should dimensions be scaled based on the size being dimensioned?
This would get you different sized dim-text in a mechanical drawing…

Currently defaults for dimension styles can be set in the Template files.
Take in account that on Layouts/Pages, dimensions are rendered in page units not in their relative model size

-Willem

I don’t know, and it’s probably not an easy thing to do right. But doing it better should be doable.

Of the top of my head I can think of this:

  • For the first dimension in the drawing, set the font to scale to let’s say 5% of the dimension being made, and keep it at that font size;
  • For the first dimension, ask the user for the default font size and keep it at that;
  • Or, look at all the visible geometry to decide on a reasonable font size for the first dimension;
  • Make it easy to change the font size (now I do this: select dimension, property tab, go to overrides, change the scaling - have to click at least 5 times to change it - maybe there is a better way?);

@mary can you help here?

Hi Menno,
Yes- dimensions can be better, and I will probably extract a feature request or two from this and get it on the tracker. A short cut into the Dimension style would not be as necessary, if you could preview the dimension “before” you exited the dimension style dialog, and get it right the first time. Hopefully we will see this Dimstyle preview in the Rhino 6 WIP, at some point.

Also here is a toolbar macro that you can put on a button. You will need to replace “default” with whatever dimstyle name you use:
! -DocumentProperties _dim _edit _default _textheight _pause _enterend
Edit the toolbar and you can paste this macro into a new button or the right mouse of any button you have open. And this is not a solution, just a bandaid.

Willem is exactly right here. If you use Layouts and Annotation scale is on for dimensions and test, the dimension text height is display in the Layouts units not model units. For example if the dim text height is .25" or 8mm, then the text will display .25" or 8mm, on the layout and in a detail on the layout regardless of the detail scale. If you want to read a dimension in the Model space, you may need to scale it up in the Model scale parameter of the dimension style

You can learn more about Layout and annotation scale here.
Feel free to send me a model, and I will get it setup to use annotation scale and get the Model text readable.
You can sent it directly to me, mary@mcneel.com.

We are always trying to make Rhino better.
We appreciate your suggestions.
Let me know if I can help more.
Sincerely,
Mary Ann Fugier

Hi @mary thanks for your lengthy post on the matter. I’ll review it tomorrow when I’m back in the office.

Using “Property Overrides…” already provides this feature, even in V5. When setting up a new style, that’s where I go.

Mary, could a person pick: small, medium Or large (on dimension size )when picking a file to start a drawing?

Hi all

FWIW … this is the script I use to quickly edit dimension size and precision. It edits all the styles in the document.

Ah, obviously I agree that a simpler way to edit dimension styles would be very useful. :wink:

import Rhino
import scriptcontext

def higher( hei ):
  newhei = int( hei * 1.26 / 0.5 ) * 0.5
  if hei == newhei:
    newhei = hei + 0.5
  return newhei

def lower( hei ):
  newhei = int( hei / 1.26 / 0.5 ) * 0.5
  if ( hei == newhei ) and ( hei > 0.5 ):
    newhei = hei - 0.5
  return newhei

def main():
  name = 'Default'
  style = Rhino.RhinoDoc.ActiveDoc.DimStyles.Find( name, True )
  if not style:
    stx = Rhino.RhinoDoc.ActiveDoc.DimStyles.Add( name )
  else:
    stx = style.Index
  dstyle = Rhino.RhinoDoc.ActiveDoc.DimStyles[ stx ]

  hei = dstyle.TextHeight
  pre = dstyle.LengthResolution
  oldhei = hei
  oldpre = pre
  styles = list( Rhino.RhinoDoc.ActiveDoc.DimStyles )
  while True:
    scriptcontext.escape_test()
    gop = Rhino.Input.Custom.GetOption()
    pro = 'Height %.3f - Precision %d [ Enter => OK ]' % ( hei, pre )
    gop.SetCommandPrompt( pro )
    gop.AcceptNothing( True )
    extind = gop.AddOption( 'Exit' )
    resind = gop.AddOption( 'Reset' )
    higind = gop.AddOption( 'HigherSize' )
    lowind = gop.AddOption( 'LowerSize' )
    hipind = gop.AddOption( 'HigherPrec' )
    lopind = gop.AddOption( 'LowerPrec' )
    insind = gop.AddOption( 'InputSize' )
    inpind = gop.AddOption( 'InputPrec' )
    gop.Get()
    res = gop.Result()
    if res == Rhino.Input.GetResult.Cancel:
      hei = oldhei
      pre = oldpre
      for style in styles:
        style.TextHeight = hei
        style.ArrowLength = hei * 0.666
        style.LeaderArrowLength = hei * 0.666
        style.TextGap = hei * 0.333
        style.LengthResolution = pre
        style.CommitChanges()
      Rhino.RhinoDoc.ActiveDoc.Views.Redraw()
      break
    elif res == Rhino.Input.GetResult.Option:
      opind = gop.OptionIndex()
      if opind == extind:
        hei = oldhei
        pre = oldpre
        for style in styles:
          style.TextHeight = hei
          style.ArrowLength = hei * 0.666
          style.LeaderArrowLength = hei * 0.666
          style.TextGap = hei * 0.333
          style.LengthResolution = pre
          style.CommitChanges()
        Rhino.RhinoDoc.ActiveDoc.Views.Redraw()
      elif opind == resind:
        for style in styles:
          style.TextHeight = 10.0
          style.ArrowLength = 6.66
          style.LeaderArrowLength = 6.66
          style.LengthResolution = 1
          style.TextGap = 3.33
          style.CommitChanges()
        Rhino.RhinoDoc.ActiveDoc.Views.Redraw()
      elif opind == higind:
        hei = higher( hei )
        for style in styles:
          style.TextHeight = hei
          style.ArrowLength = hei * 0.666
          style.LeaderArrowLength = hei * 0.666
          style.TextGap = hei * 0.333
          style.CommitChanges()
        Rhino.RhinoDoc.ActiveDoc.Views.Redraw()
      elif opind == lowind:
        hei = lower( hei )
        for style in styles:
          style.TextHeight = hei
          style.ArrowLength = hei * 0.666
          style.LeaderArrowLength = hei * 0.666
          style.TextGap = hei * 0.333
          style.CommitChanges()
        Rhino.RhinoDoc.ActiveDoc.Views.Redraw()
      elif opind == hipind:
        pre += 1
        for style in styles:
          style.LengthResolution = pre
          style.CommitChanges()
        Rhino.RhinoDoc.ActiveDoc.Views.Redraw()
      elif opind == lopind:
        pre -= 1
        if pre < 0:
          pre = 0
        for style in styles:
          style.LengthResolution = pre
          style.CommitChanges()
        Rhino.RhinoDoc.ActiveDoc.Views.Redraw()
      elif opind == insind:
        res, hei = Rhino.Input.RhinoGet.GetNumber( 'Size ?', True, hei )
        if res == Rhino.Commands.Result.Success:
          for style in styles:
            style.TextHeight = hei
            style.ArrowLength = hei * 0.666
            style.LeaderArrowLength = hei * 0.666
            style.TextGap = hei * 0.333
            style.CommitChanges()
          Rhino.RhinoDoc.ActiveDoc.Views.Redraw()
      elif opind == inpind:
        res, pre = Rhino.Input.RhinoGet.GetInteger( 'Precision ?', True, pre )
        if res == Rhino.Commands.Result.Success:
          for style in styles:
            style.LengthResolution = pre
            style.CommitChanges()
          Rhino.RhinoDoc.ActiveDoc.Views.Redraw()
    elif res == Rhino.Input.GetResult.Nothing:
      break
  print 'Dimension Height %.3f - Precision %d' % (
      dstyle.TextHeight, dstyle.LengthResolution )

main()

Cheers

1 Like

When 5 was in beta I noticed that the dimension type sizing was hard to understand, and I confess I have not since figured it out.

My approach is to just tinker with it until I somehow arrive at an acceptable point size.

My suggestion for the beta tests was a slider control, and I will urge this idea again. Ideally the slider would incrementally run the point size up and down in real time while you watch. The scroll-roller on the mouse might be another way to dial the point size up and down. Michael

I have seen so many discussions about the font size on dimensions over the years and still it seems that all the coders still cannot make it simple, I decided to start using Rhino v6 on the mac after using Rhino for many years on the PC, not worth the grief, started out trying to relocate the gumball like I used to by holding down CTRL and moving it, after reading lots of misleading help files I finally gave up, then I came to drafting and putting a dimension on the drawing, after 40 mins of trying to find the options panel, (still haven’t found it) I have given up on that too, do these coders do this purposely to justify their existence or are they just cryptic people? Meanwhile I still have text that is so small it is unreadable and I still cant scale it.
Mac version, Pah!

PC: Ctrl == Mac: Cmd

For everything in Rhino

There is no “Options” on Mac, it’s called “Preferences” (Rhinoceros menu). Document Properties are called “Settings” (File menu).

The Properties panel in the right sidebar allows you to edit dimensions when they are selected (like in Windows Rhino)

2 Likes

Dude, seriously! You resurrect a 4 year old topic to go on a rant?

Dude??? Nothing constructive to say so you just jumped on my comment to slate me, grow up.

Thank you.

You are correct, my reaction was overblown, my apologies. The last thing I want is for others to feel unwelcome due to my contributions.

Let me try again: Welcome to the forum :slightly_smiling_face: Just to let you know, it is usually better to ask a question in a new topic, rather than to resurrect an old topic. In the link below you find more content on how to ask questions, what information is needed to answer a question etc.

1 Like

Surely the idea of developing any complex application is to make is easy as possible for a user to use.
I have found the Dimension option really difficult to use, the size is usaully way to big for the model being created, would it be possible to left click on text (goes yellow) then right click on the text and get a scaling option.
I am not a programmer but just a simple user, surely the programmers can solve this.I did play around with “Dimension styles” option and got what I wanted but it really is just a work around. I do have an old version of Rhino, so maybe that is a problem.

Anyone has any experience using Dimensions in Autocad? How do they work there? Is this problem global or only Rhino related?

Hi Alan - I’d say that’s pretty much as it works, except for having to right-click. You select the dimension and then you can directly change it’s height or model space scale in the properties panel:

Using annotation styles isn’t a workaround, it’s the recommended workflow.
When you start a new project, you get to pick a template that sets your units but also the general size of the objects that you will be working with - “small” or “large”. Dimension styles are based on that choice. I do see room for improvement and we will be reviewing the default templates for Rhino 7. That said, those few factory-default templates will never be able to cater to absolutely every project being created out there and customizing your own default template will likely always be necessary.
-wim

Hi Wim for some reason my version does not work right click is doing nothing.

Hop e I can get it to work like you said.

Alan

Mail](https://go.microsoft.com/fwlink/?LinkId=550986) for Windows 10