New Connector Request - IFC viewer

We are developping an IFC viewer based on IFC JS and we wonder if it is feasible to create a connector with speckle for the following use cases :

  • Add a stream from a selection in the viewer
  • view a stream over a loaded IFC file
  • modify an existing stream by adding new properties groups (psets) and new properties
  • modify an existing stream by adding new objects from a selection
1 Like

Hey Nader, Good to see you.

What you describe is certainly possible. I can break your points down individually and discuss some critical caveats. It wouldn’t necessarily be via a Connector in Speckle speak.

Firstly, you may be aware that the IFC upload facility with Speckle is based on top of IFC.JS, so whatever parsing capabilities for the source files have, Speckle inherits those and Specklifies the resultant data.

I’m not clear what you are referring to as a selection. What you can do with Speckle Viewer are overlay commits and individual objects. You can see this in action if you select an object. The data tree viewer will expose its SpeckleId, which could be used to reference it to overlay with another. I happen to have just written about this here: Federating Speckle Models

I think this is the same as I have described for an object which suggests my understanding of point 1 wasn’t complete. Nevertheless, you can upload two IFC files into Speckle (subject to size limits) and view them over the top of each other.

You’ll never modify an existing stream in Speckle, but you can access all the Objects, amend them programmatically and then commit that new Model Version. Our .NET or specklepy SDKs can achieve this. Caveat: you will be augmenting the Objects within Speckle as properties. These can follow whatever structure you wish, but they are no longer organised with the IFC PropertySet schema. Your data is no longer an IFC at this point.

I think my misunderstanding of what a Selection is in this context continues. If you can access all the objects in a Project Stream organised in Version Commits, you can filter and merge them. Again, fortuitously I have just written something adjacent to this here: Federating Speckle Models - #2 by jonathon

The most crucial caveat I already mentioned is that the data you now have inside Speckle will have all the data properties of the original IFC, include any changes you have made and be accessible programmatically or with authoring software for which we have a receiving connector. It is not IFC any more.


Thanks Jonathon for your reply. I hope I can explain better what is a selection.

In IFC JS we can select objects by id, by group of ids. I think it will be a great idea to generate a stream from these ids.

I know that you have developed a speckle viewer based on IFC JS. But as I know, it doesn’t support a connector to expose a partial ifc file as a stream. Our idea is to permit the generation of streams in user speckle account from partial selections of existing IFC files managed by our viewer.

The Speckle Viewer is an independent project predating IFCJS; we use their library to ingest IFC to Speckle.

In which case, what you describe is completely possible. If your viewer app handles the selections of objects, then this can be sent to Speckle. Again, there is no need for a Connector but using either .NET or specklepy SDKs.

It IS possible to do so from javascript, GQL and REST, but the process is much more involved. We haven’t generated a lot of support documentation to help with this. As Speckle is 100% open source, you could even fork the IFCJS parser adaption we have as a package in Speckle Server to help.


Super. But we are not familiar with speckle meta model (generic description of model objects).

For us this option would be the best. Do you think, documentation will come soon ?

We will try this option. Thanks for this tour guide :wink:

1 Like