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.