Layout scale not syncronized


(John Schindler) #1

Whenever creating a 4-detail layout, each view is shown in a different scale (zoom extents). How can we obtain the synchronized scale?


(John Brock) #2

Setting the scale in a detail is part of setting it up.
Here’s a link to a tutorials that covers layouts and details:
https://wiki.mcneel.com/rhino/layouts5


(John Schindler) #3

Hi John,
When we create a 4-detail layout, I expect that the scale of these details is consistent or at least follows the scale of the viewports. So if I use linked views. I would expect that the 3 basic layout details inherit the same scale. That is how most CAD systems generate the top, front and right views in the layout. This is not the case here, and each detail shows up at an arbitrary scale, which then has to be separately adjusted - which is a pain. Am I missing something?


(John Brock) #4

Just that the tools are not currently hooked up that way. That was never part of the design implementation.
You could create template files with Layouts and configured details already in them if your modeling standards and needs are that tightly and well defined.


(Pascal Golay) #5

Hi John - I could see a ‘Use viewports’ radio button on the Layout creation dialog. I’m not sure how sizing should work - would you expect the details to all just be scaled together uniformly to fit the page?

-Pascal


(Wim Dekeyser) #6

Hi Pascal,
It sounds like you are reading this as having something to do with the number and the size of the details on the layout. I think it’s about different details having different model-to-layout scales.

I’d say we need something to quickly synchronize the scales of different details or probably better something like a “Master Detail”. A user would pick one detail as the master and pan and zoom the model inside this detail. Linked “slave details” would automatically inherit the zoom level (scale) and pan to have the bounding box centered inside the detail. Hiding of objects in a detail would also be set in the master and inherited by the slaves. Visually, a slave detail could have a (no-printing) cross over it to set it apart from other details.


(John Schindler) #7

Yes, I was referring to the scale of the models in detail views. When I click the NewLayout: 4 Views, I expect to see the top, front, and right view of the model in the same scale, the same way as in synchronized views and in Make2D. That synchronized scale could be determined either before creating the 4-view layout or after, but in any case these basic detail views of the model should be properly aligned and at the same scale, as per drafting standards.

Here is a practical example. A jeweller wants to show 4 views of a ring to his customer. He clicks the New Layout : 4 Details button and get this:

The different scale of the right view will confuse his customer. The Rhino user should not have to go through extensive Layout tutorials to be able to produce a basic layout drawing for his customer.


(John Brock) #8

As the image clearly shows, the initial display looks like the result of a Zoom Extents, which makes sense because Details views are generally set up at different scales for most Rhino users.
This signet ring example is a specific exception.
This is why I specifically suggested using a template file that is setup to do what you expect.

I think your change to the current behavior would be disruptive to far more Rhino users than it would help.

Let’s see what other users think.


(Pascal Golay) #9

Hi John =, so, SynchronizeViews should work in a layout - would that do it?
I know this is not what you’re asking for in its current state, but there is also CopyViewToDetail - if that allowed multiple views it might also help.
@wim - I was thinking that the current viewports could be specified as the details in a new layout - just asking how they then should be fit to the page…

-Pascal


(John Schindler) #10

John, I created this image from the synchronized views of the ring. Rhino applied Zoom Extents automatically while creating the 4-view layout, and this is what I have a problem with. As a rule, the 4-view layouts should be at the same scale, unless determined otherwise by the user.


(John Schindler) #11

Hi Pascal - yes, the SynchronizeViews in layout would do it and the linked view would be better . It would work fine if it was set by default when creating a 4-view layout.
It could also work if the 4-view layout inherited the model scale from the viewports (but not necessarily the size of the viewports).


(John Brock) #12

Right. I understand that.
What I’m trying to describe to you is the Zoom Extents is the designed and expected behavior when the tool was coded.
I also understand that you think it should be otherwise.
I’m hoping other users will chime in with their preferences so we can make a determination of what to do (if anything), so it works better for you but doesn’t cause problems for other users that like the current behavior.


(John Schindler) #13

I wrote a macro which creates a 4-view layout with aligned details at a specific scale. Is it possible to change the view mode of the details from Wireframe to e.g.Rendered by a macro?


(Pascal Golay) #14

Hi John - it looks like it should be possible via Detail > Enable but you might need to set a name to the details when created so that you can select with SelName for the Detail command to know which ti make active. I feel a script coming on…

If if the workflow allows you to select a detail by hand, then

! _Detail _Enable _Pause _SetDisplayMode _Rendered _Detail _EnablePage

-Pascal


(John Schindler) #15

Hi Pascal - this will work, but as you said, I would have to name the details. Here is my macro which sets the 2:1 scale (good for objects smaller than 46 mm):

!SetRedrawOff
SetActiveViewport Top
Line w-23.353,0,0 23.353,0,0
SelLast -Properties Object Name LayoutLine Enter Enter
Line w0,-23.353,0 0,23.353,0
SelLast -Properties Object Name LayoutLine Enter Enter
-Layout 4Views _Enter _Enter 4 Enter
SetActiveViewport Top
-SelName LayoutLine
Delete
-SetActiveViewport 4Views
SetRedrawOn

Any idea how I could name the details by the macro (top, front, right, perspective)?


(Pascal Golay) #16

It might be possible but off hand it does not look it…
@JSchindler - here’s a very quick and dirty Python:

import rhinoscriptsyntax as rs
import scriptcontext as sc
import Rhino

def test():
    
    rs.Command ("-Layout 4Views _Enter _Enter 4 _Enter")
    rs.Command("_Detail _EnablePage")
    
    layout = rs.CurrentView(return_name=False)
    
    dets = sc.doc.Views.ActiveView.GetDetailViews()
    
    ids = [x.Id for x in dets]
    
    for id in ids:
        rs.DetailScale(id,2, 1)
        rs.Command("_Detail _Enable SelId " + str(id))
        rs.CurrentDetail(id)
        rs.Command( "SetDisplayMode Shaded")
        rs.Command("_Detail _EnablePage")
        
    rs.UnselectAllObjects()
    rs.Command("_Detail _EnablePage")

    
test()

change the numbers in the line rs.DetailScale(dId,1, 2) to set the scale.

-Pascal


(John Schindler) #17

The shading works, but not the scaling:


(Pascal Golay) #18

Darn, it worked a minute ago…

hold on…

-Pascal


(John Schindler) #19

The scale is working, but not the display mode.


(Pascal Golay) #20

I saw that - too late… I deleted too much stuff… I do have some small hope of maintaining my focus long enough to combine the two though.

@JSchindler - sorry - now try, please (above)… seems OK here this time.

-Pascal