HOKGroup/MissionControl

View Templates Comparison Dashboard

Closed this issue · 11 comments

I am starting to create a tool that lists the view template’s properties so we can compare them with another old template. For example what model elements are hidden or have overrides in a given template or which Revit links have been hidden or overridden in a given template and who did the change.
From the API:
GetTemplateParameterIds Method / ViewTemplateId Property
I posted also the "Issue" in StackOverflow, I would like also to explore if with Forge could be easier and more convenient.
https://stackoverflow.com/questions/50766698/access-to-view-template-properties-for-revit-forge/50821298#50821298

So again, what is the question?

  • Is it: Is Forge technology capable of querying View Template properties from a Revit model?

I don't understand what you are asking for so I can only speculate...

Speculation: No, Forge is pretty much a model viewer at this point. If you went to their website and read through what it offers you would see this:

image

That's a list of libraries that they have for forge.

  • viewer allows you to view models in a browser
  • data management api deals with their permission models, versioning etc.
  • model derivative api is a library that translates models from/to file formats. RVT > SWF etc.
  • design automation api is probably closest to what what you are looking for but it only supports Auto CAD at the moment so no it cannot perform automation tasks on Revit
  • reality capture api ....that's pretty obvious.

So, let's get to the bigger picture. What problem are you trying to solve? How are you trying to solve it?

Answer the two questions above, and I will be able to help.

Ps. Why is this conversation happening in Mission Control GitHub repo? Does any of this have anything to do with MC? cc: @gschleusner

Konrad,
Thanks a lot for your time and the clear answer.
@jvandezande suggested reporting the issue here if I understood correctly. Maybe because It is connected to the View Template Controller of Mission Control. Where a warning pop-up when someone wants to change the ViewTemplate.

Problem:
It is related to the fact that there are still users who change the viewTemplate and if they do this there is no way to fix in a faster and easy way.

Steps:
1)I presume this is the first step that needs to be implemented in SLC Airport here in a robust way. I presume Mission Control needs to be deployed in every machine and users.
2) Second implementation step could be to create a webhook or send a message or email to the Team when someone is modifying the ViewTemplate.
3) Third step here the PM and BIM Coordinator see the potential to create something that can catch who modify, when, and what properties.
4) With the upcoming Forge App Framework API Beta Accelerator, (next week) maybe can be interesting to see if they will release something related to this issue.

PS: more than welcome to discuss with you some topics related to Forge in order to prepare us better for the accelerator.

Ok, I talked to @jvandezande and combined with your comments above I am starting to see what you are asking for.

  1. Mission Control feature that collects View Templates data.
  2. Ability to compare View Templates across their versions from the past.
  3. Potentially an automation tool that would allow to revert a View Template to its previous state.
  4. Better and more robust way of preventing users from editing View Templates.

These are all possible but at this moment a long term projects.

Forge Revit Automation was not yet released and I am not sure they will provide this level of control over Revit right out of the gate when it does get released. I would not hold my breath. Also, there is a reason we are not using Forge. It's expensive. It doesn't offer anything of actual value for us at the moment. Please do me a favor and before you start investing time into Forge, please make sure you are building something that cannot be built using free and/or open source tools, because someone will have to pay for these tokens.

Thanks a lot for the suggestions. That exactly the reason why I asked your expertise and opinion about this, before starting to build something on it.
I agree that is a long-term project, I would be more than welcome to start accomplishing this task.
I presume it could be a good opportunity to integrate this task into MC from my end and start some pull requests about this.
I would love to discuss with you and @gschleusner how I can contribute on this projects or other projects related to web Dashboard, or Forge Application before next week if this could be possible.

Ok, I mentioned four (4) things that would/could be needed for a tool like that. Let's talk a little more about details so that I can better conceptualize it:

  1. Mission Control feature that collects View Templates data. This is pretty straight forward with the setup that we have right now. We can add this to the data that we are already storing for views or create a new collection.
  2. Ability to compare View Templates across their versions from the past. What are we comparing exactly? At the basic level we could look at the checked/unchecked parameters in the main View Template window, but to actually compare two view templates we would really need to dig into details. That will be quite a bit of data to collect. What level of comparison are we looking for?
  3. Potentially an automation tool that would allow to revert a View Template to its previous state. This depends on the above for the amount of stuff that we are looking to re-instate. Now, what would that workflow look like? Is that a tool in Revit that we can use to pool previous states of a view template and re-apply them? Is that a tool in Mission Control website where we compare two templates and then schedule the reinstatement as a task?
  4. Better and more robust way of preventing users from editing View Templates. This was logged before by @MPritchy and I am aware of this, but I don't have answers yet. It's not easy to keep track of these. I guess this goes back to some of the comments that you made as well, where you want to know who is making these changes. We will need to come up with a solution if this is to track who is making changes to the View Templates.

Please expand on the above 4 points.

Thanks Konrad,
I appreciate your efforts to conceptualize it better also for me:

  1. Mission Control feature that collects View Templates data I would like to set up the Path maybe in the Agile Dashboard that @gschleusner designed in RealTime Board, in order to follow and be supervised from you guys during this process.
  2. Ability to compare View Templates across their versions from the past. The comparison seems that needs to be done one by one in order to preserve the data integrity. (We can't operate a simple count True and Count False). In the dashboard, we need only to display the two differences.
  3. Potentially an automation tool that would allow to revert a View Template to its previous state
    I presume the first achievable step is to schedule the reinstatement as a task, but find a way to manipulate data directly in MC could be awesome. (Do you think could be implemented a sort of WebSocket(Socket.io) between MC and Revit if the specific File is open?)
    4 Better and more robust way of preventing users from editing View Templates I presume this need to be done first. Just send an email, a message with Twilio or some webhook in a slack channel (or whatever) about who ignore the MC warning and when. I can take care of this.

I would like to involve in the conversation also the BIM Coordinator here in SF so we can better understand if this is the solution they are looking for.

Ok, let's make this short and sweet. I got no time for another Trello, Asana or RealTime board. Please don't go there. This is not complicated. We don't have 100 people working on this. We are good right where we are...so stay with me.

  1. What? Please answer the actual question I asked. I need to define scope so I know what to do next.
  2. What? I have no clue what you are trying to say. I just need you to help me define the scope. That's it. Don't get distracted.
  3. There is no such thing as editing Revit data directly in MC. You can edit "some" data, and then send it to Revit to let some Revit plug-in handle the actual manipulation in Revit. So again, my question is do we want to define what template gets swapped for what other template in MC and just send that to Revit as a task or do we just do a tool in Revit and users would choose templates there?
  4. No Twilio, Slack, webhooks or any other tech you can think of is needed here. We already have that implemented in MC so you don't have to do anything. My question was pertaining to means and methods of actually getting hold of "user changing view template" in revit. That doesn't exist as an event and the current implementation is buggy, and gets triggered on synch events. That's that issue to solve here.

Konrad,
I really like your practical approach.

  1. I would prefer to add a new separate collection so I can take care of it in a separate way. Let me know is you are agree.
  2. We need to compare all the View Properties in order to understand where are the changes.
  3. Send to revit as a Task.
  4. If you are referring to how technically solve this issue I can look into it.
  1. Ok, so let's assume we do a new collection in the DB. We will need a new schema for that, so I need to know what data you want to store.
  2. Define "All". I will need to see a more robust list.
  3. That can be arranged. We have that implemented in a basic way for Family Tasks so that can be extended to accommodate View Templates.
  4. Yes. This is a place that you can focus. If you can look into that, then we can have an actual conversation about how to fix that.

Number 4 is something that you can get started with. Let me know if you need help with that.

  1. I am checking and I am not sure we can reach all the parameters, unfortunately.
  2. Agree. I will provide you a list of all the parameters that we can access.
  3. Sounds great. I would like also to help in this part.
  4. Perfect, I will let you know when I will be ready for this discussion

So this is not possible due to API availability in Revit. I will close this issue, but feel free to re-open if you think that we should be addressing this in some smaller scope.