Jump to content

Controlling visibility using data visualisation


Recommended Posts

Before I get to the question let me explain the particular situation I am looking at. Also - I am currently on VW2018.

 

I am building a model which shows buildings on several streets. This will eventually become a model that shows the development of the area over time. I want to create views of the model that show snapshots in time, over a historical period. So for example, I have three buildings:

Building A is built in 1870 and demolished in 1950.

Building B is built in 1910 and demolished in 1960.

Building C is built in 1951 and still exists.

So in my "existing in 1900" view, buildings A and B should be visible.

In my "existing in 1955" view, buildings B and C should be visible.

In my "as currently exists" view, only building C should be visible.

 

I started out thinking that I would do this using classes (eg building A would be in an "1870-1950" class), with certain classes being switched on and off in each view. This I think is possible, but will create a large list of classes that I'll have to manually choose from for each view.

 

Then I started wondering if this can be done using data visualisation. I give each building a "built date" and "demolished date". Then, if I want to see an "exists in 1955" view I use the data vis controls on a viewport to make invisible anything with a "built date" higher than 1955, and anything with a "demolished date" lower than 1955.

 

Having fiddled around a bit with the data visualisation settings (which I've not really used before), I am not sure that I can do what I want. So, my questions:

 

1) Is it right that I can't simply set objects with specific data attached to them to be "visible" or "invisible"? I have to set those objects with a 'none' fill and pen to make them invisible?

 

2) Is it right that I can't apply rules relating to more than one record field to each viewport? So I can't say, make it invisible if "built date">1955 OR "demolish date"<1955?

 

3) Have either of the above changed in VW2020?

 

 

Link to comment
Guest Wes Gardner

@line-weight....what's changed in 2020 is that you can visualize data in both sheet AND design layers

 

1) You can view your data with "the other stuff" grayed out - see screen shot - at the bottom is a drop-down providing "Draw All Other Objects" either Normally of Greyed

 

2) Soon

 

3) Yes

 

 

Screen Shot 2019-09-30 at 3.10.34 PM.png

Link to comment

@Wes Gardner thanks for your responses. To clarify...

 

1) So not directly possible to make stuff visible/invisible using data visualisation? Just greyed/not greyed.

 

2) Soon as in, an update to 2020?

 

3) I'm not sure I understand - which of (1) and (2) has changed - I realise there's now the possibility to visualise in design layers too, but that doesn't affect my question as such, I don't think.

Link to comment

If I got that right,

 

a) Data Visualization has not changed,

it is just possible to use it on Design Layers too now.

 

b) Data Visualization is not really the solution to your Problem.

 

c) I think working with Classes (and or Layers) isn't that bad ?

 

Less about year xxx-xxx building Layers

5 hours ago, line-weight said:

Building A is built in 1870 and demolished in 1950.

Building B is built in 1910 and demolished in 1960.

Building C is built in 1951 and still exists. 

 

but just the Layer States you want to show

5 hours ago, line-weight said:

in my "existing in 1900" view, buildings A and B should be visible.

In my "existing in 1955" view, buildings B and C should be visible.

In my "as currently exists" view, only building C should be visible.

 

OK, needs some concentration and copying between Layers ....

 

Edited by zoomer
Link to comment
31 minutes ago, zoomer said:

 

Less about year xxx-xxx building Layers

 

but just the Layer States you want to show

 

OK, needs some concentration and copying between Layers ....

 

 

I'll have more than just buildings A, B and C though ... maybe once I have completed the project there will be hundreds of individual buildings.

 

Building 104 might be built in 1870 and demolished in 1980 ... and I want it to be visible in the views for 1880, 1890, 1918, 1943 and 1976 (but not 1982 or 2010 or 1850).

 

If I edit it, or add more detail, I don't want to copy the revised version between layers or classes in order to update each of those views.

 

I can make a class called "1870-1980" and maybe there will be 3 other buildings that can go in that class, but I'll also need classes "1870-1992" and "1865-1980" and so on. So the number of different classes might not be much fewer than the number of buildings. If that's the only solution, then so be it... but it would be nice if there were a neater way to do it.

Link to comment

Yes, then it gets complicated and uncomfortable.

 

It is like my usual versioning.

Should work in C4D with Render Takes too.

As long as it works with just Layers, it is quite comfortable.

If I need additional separation by classes, it gets tedious.

 

So such an automated separation, similar to Level of Detail,

would be welcome.

 

As I would like to go back to Modo - there is no Exchange like for C4D

or easy Render Takes for visibility changes, I thought about referencing.

Or using Bricscad instead of VW, without an option to export Names or

Layer/Class Hierarchies by FBX.

So for Versions with Referencing only, it would need to save out each

version state as a separate file duplicate, which I could then switch by

visibilities.

Not really sure if it would help in your case, to put buildings in extra Files

like "1967from1910" (To sort them by name)

and make it easier to switch Visibilities for Viewports.

Link to comment

What about making the buildings symbols and having a layer for each view.

 

If a building existed in a certain view an instance of the building symbol gets placed on the appropriate layer for that view. 

 

To do a new view duplicate a similar one and add / delete building symbols as required.

 

This would work for a limited number of views.

 

Edit:

Or to quickly prepare other multiple other views: Create a custom "building Life" record for each building symbol with "Year Constructed" and "Year Demolished" fields.

 

In a layer consisting of an instance of each building a custom selection could be run with the criteria being

Field value "Year Constructed" < [input low year range] and

Field value "Year Demolished" > [input high year range].

 

The set of building symbol instances selected would be the required set for the new view and they could be copied to a design layer representing that view.

Edited by Boh
  • Like 1
Link to comment

 

 

8 hours ago, Boh said:

What about making the buildings symbols and having a layer for each view.

 

If a building existed in a certain view an instance of the building symbol gets placed on the appropriate layer for that view. 

 

To do a new view duplicate a similar one and add / delete building symbols as required.

 

This would work for a limited number of views.

 

Edit:

Or to quickly prepare other multiple other views: Create a custom "building Life" record for each building symbol with "Year Constructed" and "Year Demolished" fields.

 

In a layer consisting of an instance of each building a custom selection could be run with the criteria being

Field value "Year Constructed" < [input low year range] and

Field value "Year Demolished" > [input high year range].

 

The set of building symbol instances selected would be the required set for the new view and they could be copied to a design layer representing that view.

 

Yes, good thinking to exploit the capability of the "custom selection" command. That would avoid having to manually select which buildings show up in which views.

 

It wouldn't automatically change what's visible in each view if I made changes (say, I got new info that revealed a building was built earlier or later than I thought). Doing it by class would achieve this to some extent (as long as there already existed a class with the correct date range, to move it into).

 

It's a shame the 'data visualisation' choices aren't as flexible as the 'custom selection' tool ones are. Does this have a future as a wishlist item perhaps?

Edited by line-weight
  • Like 1
Link to comment
11 hours ago, zoomer said:

Yes, then it gets complicated and uncomfortable.

 

It is like my usual versioning.

Should work in C4D with Render Takes too.

As long as it works with just Layers, it is quite comfortable.

If I need additional separation by classes, it gets tedious.

 

So such an automated separation, similar to Level of Detail,

would be welcome.

 

As I would like to go back to Modo - there is no Exchange like for C4D

or easy Render Takes for visibility changes, I thought about referencing.

Or using Bricscad instead of VW, without an option to export Names or

Layer/Class Hierarchies by FBX.

So for Versions with Referencing only, it would need to save out each

version state as a separate file duplicate, which I could then switch by

visibilities.

Not really sure if it would help in your case, to put buildings in extra Files

like "1967from1910" (To sort them by name)

and make it easier to switch Visibilities for Viewports.

 

you lost me after you mentioned your 'usual versioning' - what's that?

Link to comment
7 hours ago, line-weight said:

It's a shame the 'data visualisation' choices aren't as flexible as the 'custom selection' tool ones are. Does this have a future as a wishlist item perhaps?

Yes it would be good if DV could used to set visibilities. I’m sure though that it could prove very useful on a project like this. 

 

7 hours ago, line-weight said:

t wouldn't automatically change what's visible in each view if I made changes (say, I got new info that revealed a building was built earlier or later than I thought).

With the range of tools available there is surely a way of quickly updating the views. 

One way perhaps is if the custom selections were saved as scripts they could be quickly run again.

Link to comment
9 hours ago, line-weight said:

 

you lost me after you mentioned your 'usual versioning' - what's that?

 

Most times I have to render 3 Versions of the Design

(to force the building owner to make decisions)

 

As long as it is just about geometry differences of a single Story,

it is quite easy to separate the changes by a few Layers, V1, V2 and V3.

If it is about multiple Stories and different Materials, I may need

also additional Classes, which makes it very tedious and requires a

lot of concentration to separate Versions.

Especially if decisions were made and you have to integrate the

final Version back into standard Class/Layer System.

(And not delete the wrong things)

Link to comment
12 hours ago, zoomer said:

 

Most times I have to render 3 Versions of the Design

(to force the building owner to make decisions)

 

As long as it is just about geometry differences of a single Story,

it is quite easy to separate the changes by a few Layers, V1, V2 and V3.

If it is about multiple Stories and different Materials, I may need

also additional Classes, which makes it very tedious and requires a

lot of concentration to separate Versions.

Especially if decisions were made and you have to integrate the

final Version back into standard Class/Layer System.

(And not delete the wrong things)

Ah yes, I know what you mean, I have exactly the same sometimes.

Link to comment

While DataVisualization may not do what you want, it would be a fairly simple Vectorscript to set custom visibilities based on a date that a building existed. If you are interested, I can explain in more detail, but the idea is exactly what you have above. Attach a record with fields that show when the building was build and when demolished. The script would then just take a data as input and set the custom visibility of all objects that were built before the script data and not demolished until after the script date.

  • Like 2
Link to comment
10 hours ago, Pat Stanford said:

While DataVisualization may not do what you want, it would be a fairly simple Vectorscript to set custom visibilities based on a date that a building existed. If you are interested, I can explain in more detail, but the idea is exactly what you have above. Attach a record with fields that show when the building was build and when demolished. The script would then just take a data as input and set the custom visibility of all objects that were built before the script data and not demolished until after the script date.

Thanks, yes I would be interested to hear how that would work.

 

Would it be possible to apply it to viewports though, or just what is visible whilst viewing the design layers?

Link to comment

@line-weight My humble suggestion would be to use DL's for separating different era buildings. That way your class system remains intact. Simply put buildings into correct DL's reflecting their built date. They can have the same elevation, too, if desired. Then turn those DL's off in those viewports you wish. You can still apply class overrides to them if you use two viewports on top of each other.

 

W

 

Link to comment

I'm not that bothered about my class system remaining intact for this project. I could do it by class or layer - my preference is usually to keep number of layers to a minimum, which is one reason to do it by class, also, classes are much more flexible when you are grouping things (I can have several classes within a group and make some of them visible/not visible, same is not possible with layers)

 

But whether it's class or layer the basic issue is ending up with hundreds of them, which then have to be manually selected for visibility for each viewport. It's doable, just a bit tedious.

 

 

Link to comment

Hmm, would it be possible to use data visualization in reverse, that is to apply zero width pen and none fill to all those buildings not in the desired data range? In essence, DV would "hide" stuff outside the data range, thus displaying only what is wanted.

 

Not at the office to test but I would think this would work with simple box geometry at least, not sure about wall objects. I've used DV on plan drawings mostly so not certain how it behaves in 3D.

 

I agree layers and classes are not practical for that number of different buildings.

Link to comment
44 minutes ago, JMR said:

Hmm, would it be possible to use data visualization in reverse, that is to apply zero width pen and none fill to all those buildings not in the desired data range? In essence, DV would "hide" stuff outside the data range, thus displaying only what is wanted.

 

Yes, I think it maybe works (see question 1 in my original post) to set pen/fill to 'none'.

 

But even if that works - it's not (as far as I can see) then possible to apply this to objects outside of a data range. I can apply it to anything built before a certain date, or demolished after a certain date, but not both. See question 2 in my original post.

 

Hence @Boh's suggestion involving the 'custom selection' function, which allows you to select something that satisfies one condition AND satisfies another condition.

Edited by line-weight
Link to comment

I was just playing with @JMR idea and you can certainly use Data Visualization to do as he said and hide the objects with None fill and None pen. It will probably depend on if the views are rendered and if so, in what mode.

 

My original idea about using the Custom Visibility functions would have to apply to the Design Layer and then should (not yet tested) flow through to the Sheet Layers. If they have to be rendered in a Renderworks style that takes a long time and you want to keep the Viewport Cache, that probably won't work very well. If you are using OpenGL for quick renders, then the script can be included as part of a Saved View used to go to specific sheet layers/viewport and you can probably get what you need.

 

A combination of the above ideas using a script to attach a record (or set a Record.Field) to each object that should show in a given viewport coupled with the None fill, None pen for objects that don't  have the record should be what you are looking for.

 

Or maybe a record with a field for each year. The script would then go through and populate each of the year fields based on if the building existed then. That would definitely be able to be handled by Data Visualization.

 

Link to comment
11 hours ago, Pat Stanford said:

My original idea about using the Custom Visibility functions would have to apply to the Design Layer and then should (not yet tested) flow through to the Sheet Layers. If they have to be rendered in a Renderworks style that takes a long time and you want to keep the Viewport Cache, that probably won't work very well. If you are using OpenGL for quick renders, then the script can be included as part of a Saved View used to go to specific sheet layers/viewport and you can probably get what you need.

 

I think that having saved views set up could potentially work, if those visibility settings could flow through to a sheet layer viewport, although I don't really see how that could happen. A downside of this approach is (I think)that I'd have to re-perform the custom selection process, and redefine the relevant saved views, each time I added a new object to the model.

 

11 hours ago, Pat Stanford said:

Or maybe a record with a field for each year. The script would then go through and populate each of the year fields based on if the building existed then. That would definitely be able to be handled by Data Visualization.

 

 

Yes that's a good idea, a way to get around the limited filtering abilities of DV. I think this could work well, as long as the method of setting line/fill to none doesn't have any unexpected side effects.

Link to comment

Would it be feasible to create a script that could interpret a class name, and then use it to apply visibility settings to a viewport?

 

So for example if the class name is 1870-2004 (or some other standardised naming), the script can take the requested view date (let's say it's 1950), find whether it is between 1870 and 2004, and if so, set that class to be visible in a selected viewport?

Link to comment

I tried to do this with DV, and while it's kind of possible, it's not perfect and not quite what you want.

 

-Line issues if using a 3D view with what's in front and what's not (top/plan would work)

-Need to manually create DV settings for each year or range you wish to show

-Need to use two viewports on top of each other

-There are two records, date of construction and date of demolition. These are used in separate viewports.

 

kuva.thumb.png.41fa10c7afce577d734965783ffa7a74.png

Link to comment
8 hours ago, line-weight said:

Would it be feasible to create a script that could interpret a class name, and then use it to apply visibility settings to a viewport?

 

So for example if the class name is 1870-2004 (or some other standardised naming), the script can take the requested view date (let's say it's 1950), find whether it is between 1870 and 2004, and if so, set that class to be visible in a selected viewport?

This could certainly be scripted, but I think this may be the worst of all possible solutions. You would need to have a separate class for each possible built/demo'd combination. Potentially this could end up as one class for each building.

Link to comment

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.

Guest
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...