- Frontend can be found at https://github.com/yuj8fuj6/fluxus
- Instead of using
ifctester
to conduct IDS, having to parse the entire model - We could first filter the relevant items from the Speckle Model and check them individually
- e.g., Based on IDS, grab all walls
- Then loop through walls to check only the
PropertySet
relevant to IDS
- This filtered method of dealing with the model will allow checking to be parallelised and potentially faster
- User will be required to share a Revit Property Mapping to allow fixes to be pushed to the Speckle Stream
- POC for IFC models uploaded to Speckle
- POC for Revit models in Speckle + Mapping doc
- Payload:
ids
: IDS specification (.xml/.ids)speckle
: Speckle Infostream
: Speckle Streamcommit
: Speckle Committoken
: Speckle Auth Token
mapping
: Revit <-> IFC Property Mapping file
- Response:
report
: Validation reportfailed_items
: List of failed elementsid
: Speckle ID of the failed element (used to highlight in frontend).specification
: Which part of the specification failed.msg
: Any additional messages
- Notes
- Frontend should not do the filtering, and should be a server side op due to giant file size for large projects, which makes it too dependent on user compute (which is not scalable)
- Server will handle the getting of Speckle Objects and checking
-
Payload:
ids
: List[] of IDS specificationsspeckle
: Speckle Infomapping
: Revit <-> IFC Property Mapping file
-
Response
- Similar to
<IDS-1>
except in a map keyed by ids file names.
- Similar to
- Payload:
failed_items
: List of failed elementsmapping
: BIM <-> IFC Property Mapping file
- Response:
patch
: List of transformations recommended by vector DB
- Notes:
- We embed IDS requirements into a vector embedding using ChromaDB
- Based on failed item's list of properties, we suggest either modifying:
- Property Keys
- Property Values
- Payload:
objects
:id
: Speckle ID of the objectupdate
: List of objects to update{ "id": "abcd" "properties": { "add": { "key": "value" } ,"update": { "key": "value" } } }
- Notes:
- Based on accepted changes / field updates
- Try to create a new commit with only the updated items i.e. update parameter only
- In example below, we extract only IFCWALL type objects from the Speckle model.
- This query could be sent from server side to retrieve relevant Speckle objects with the relevant IFC
PropertySet
- In the case the model is from Revit, or other BIM Software, we can just select properties according to the Mapping provided by the user.
query Walls($query: [JSONObject!]){
stream(id: "90247e86c2"){
object(id: "b7d4aa78f723dea7e168b1a6bd2e09d3"){
children(query: $query select: ["type", "SGPset_WallStructuralLoad"]){
objects{
data
}
}
}
}
}
{
"query": {
"field": "type",
"value": "IFCWALL",
"operator": "="
}
}
- To develop, edit
dev.sh
for environment variables: - To start the dev server:
bash dev.sh
- To start the production server:
bash start.sh
- List stack components here
- Bob YX Lee