Open BCF Viewpoints

I’d like to create a dynamoscript which allows me to use viewpoint data in BCF-Files in order to create 2D components for tracking issues within the my revit model.

Is this possible?

Hi,

Why do you want that? When the issue is build well bcf will give you the right position and select the elements.

I can somewhat agree with you here. I’ve had good experiences with BCF, and bad experiences with BCF. It really depends on what type of issue you’re dealing with.

For me, it really depends on the platform. I’m using BIMcollab without Zoom, and if I compare it to Revizto…it’s terrible. I’m sure ZOOM offers a lot more, but because many companies choose the “cheapest solution” you get what the project team is willing to pay for. (I personally think the single-user license for a ZOOM or Revizto seat is well worth it when spread across multiple projects, but I also work in a country which has been very slow to adopt BIM.)

Anyways…it’s kind of a documentation issue within the model. We have certain workflows which still require generating 2D planing for coordination, like technical openings. On small projects, you can probably get away with a purely model-based solution, but once you reach a certain number of openings, it gets to be tedious tracking which elements have issues associated with them, and what the status is. It would be nice if I could create a 2D overview plan which places a detail component (which I can schedule) at each view-point location. Then there is synchronisation between older 2d workflows and the bim-based issues associated with them.

I can do this with revizto, but unfortunately, I’m not using it.

I guess I’m just looking to explore more dynamic workflows between models and bcf-data.

I think this is possible with a little effort, but we would need a sample data set. Can you create a few bcf files based on an unedited copy of the Revit sample project for use in Revit 2022 or 2023? If you can and you get them posted here I’ll have a look at producing a quick POC tomorrow.

It will require Those two versions will likely be a must as Python 3 capability will likely be a pre-requisite for a simpler effort.

Hi Jacob. :slight_smile:
I would love to send you a sample project, but I’m not that good with BCF and I don’t know how to remove username information (which happens to be e-mails) attached to the issues.

Mostly, I just want to extract bcf-issue information:
viewpoint xy values for 2D views
view names
the issue number
status
assigned to
date created
date last modified
etc.

We are using BCF in a very rudimentary way for the current project, which mostly runs over 2D views.
It’s also a large project which many partitions and interfaces between participants. I’m trying to get the issues out of the add-in, and directly on the 2D documentation. Otherwise, I have to create reports, or bombard people with Issue-Updates via E-Mail.

I appreciate the offer, and I’ll try to get you some data. I don’t have any capacity for creating a sample project and trying to remove the user-data at the moment. :frowning:

Matt

Hi Jacob,
I have the same task. I want to place a Family at the point of a collision I get via BCF. Ideally with all the issue information.
After searching for a while I’m a bit confused. It seems there were some Dynamo-Nodes for reading XML but not anymore… I would appreciate your help and input.
Link to bcf:
https://vielmoarchitekten-my.sharepoint.com/:u:/g/personal/neumann_vielmo_de/EZ16ABfGG1tCsoXp0eimGMIBdzb2Q4CA46ANWmOp-bV2VQ?e=vGLRXo

Exactly what I am looking for. Would also be nice to create issues based on detail-elements.

I am creating “red-point” plans. Would really streamline creating Issues.

So I looked into this, and it’s possible but not easy, and will be painful to maintain as the core technologies update. There are at least three independent techs under the hood to deal with (by my count Dynamo, Revit, OLE, XML, and a fourth if we add in Civil 3D). Safe to say this isn’t a “build it out in an hour between calls” project as a result.

Assuming the BCF above was built for one of the Revit sample models and not an actual project I’ll look it over and see if it’s something I can finish in the next week or two. If it was for an actual project I’ll have to abstain though - direct project production work is out of scope for my engagement here as that conflicts with my day job.

Hi Jacob, thanks for your offer! It was an idea I had for some time and wanted to test with an actual project. I think, since it sounds like a lot of work and maintenance it is to much for what we ant to do with it.
But if it is something you would be interested to try I would provide some issues from the sampleproject.

Hi Nicolai,

So I found some time to try and figure out how to read these damn BCFs. Turns out they are actually a ZIP-File cleverly disguised as another format. So, if you rename the file extension from .bcf zo .zip you can extract the files. Here is the github documentation:

The main points are, that each issue is stored in it’s own folder (GUID) and each folder contains specific file types. The ones you will be most interested in are the view points and the markup information. These are also marked as .bcf and .bcfv files, but they can be read as text files. Once you do that, it’s a matter of formatting the strings.

Viewpoints
For 2D Views
The viewpoints appear to be bounding boxes. I usually grab the min and max points, draw a line between them, and place a point at the 0.5 curve parameter. Not sure how accurate the placement will be in terms of collisions. I think it depends on the software used to create the issue.

For 3D Views
3D Views consist of a camera, and a clipping box. There are two types of 3d views: Perspective and Orthogonal. I don’t differentiate between the two; my goal is simply to import the views into a 2D view.
The important point here, is that the units appear to be meters, and if you are using a shared coordinate system (XY-translation and rotation) then you will need to conver the points from the shared (geo) coordinates to the project basis-point. Genius Loci has a package.

UNITS - Important!
Depening on your project-setup and software packages, you may need to convert between units. I am using Revit with the BIMcollab Manager. My project units are meters, but the 2D viewpoint captures use Project Base-Point in Feet! In my experience, 3D Viewpoints are created using BIMcollab references the shared coordinate system (survey point), but for some reason the 2D views appear to use the project basis point. See my comment above regarding 2D and 3D views.

I have the feeling my project is set-up incorrectly…but I’m not sure anymore because the world coordinates are correct. Anyways…the point is…you may need to convert between units to get the XY-coordinates for metric-projects.

Markups
Parsing the Markup files with all of the information will be potentially troublesome…there is a lot of information, but a few string-splits “>” and “/<” will get you very far.

I’ve managed to get the pieces of information I need filtered and parsed (Status, View, Issue Nr., XY-Location, View Type, GUID.)

Not sure about the BCF-Format Version. I am currently using BCF 2.1, and the average file-size is 1MB per Issue. (432 MB for current Issues relevant to my discipline.)
I believe 1.0 doesn’t allow snap-shots, which would be more useful for parsing the data…but I don’t know what (if any) differences there are in the XML-Format between BCF Versions. I’ll keep you posted.

Automating ZIP
There is also some information floating around on the forum regarding the .BCF File format and getting it converted to a .zip and extracting the files. Looks like there is some automation being done in Windows to streamline this part of the workflow…here’s a link.

I’m focusing on getting the files parsed and worrying about the zipping later. My more complex workflows are generally broken-up into checklists, and then executed manually according to a schedule. Automation would be nice, but checklists go a long way to keep things moving along efficiently / enabling handover to someone else…

End-Result:

Cheers,
Matt