I'm trying to create a specific floorplan of specific rooms in a building. I thought of giving the exact GlobalIds that I need to see in the SVG. Only spaces are represented in the SVG however, no doors are visible.
I know I can just do a complete conversion and then eliminate the given Id's from the actual SVG. But that would require me to rescale the SVG coordinates to fit the bounds again. I would like to avoid that.
For debuging purposes I'm using this IFC from the wiki.
Here is the command that fails. The first ids are two IfcSpaces. The third one is an IfcDoor: IfcConvert AC20-Institute-Var-2.ifc AC20-Institute-Var-2.svg --plan --model --section-height-from-storeys --door-arcs --bounds=1024x1024 --include=arg GlobalId '3uvYP4OyH5ufyPIMbZD86h' GlobalId '3CXBDjcSTES8AedjLKSfJe' GlobalId '2$R4rUG1nFkBAylN9aGNhb'
This works great however: IfcConvert AC20-Institute-Var-2.ifc AC20-Institute-Var-2.svg --plan --model --section-height-from-storeys --door-arcs --bounds=1024x1024 --include entities IfcSpace IfcDoor
If this is simply not in scope of IfcConvert. Then is there a painless way to use IfcConvert c++ code via python?
Yes, the way how filtering works from the command line is very limited and has confusing defaults. The default for IfcSpace is include entities ={IfcSpace} and when you say included/excuded entities = something else, that defaults get overwritten, but not when you include by attribute.
That makes sense in the case of the 3D formats, if you select a single building storey you probably still want the default entity filter to be in place. But in this case it's confusing.
Note that you don't need to repeat GlobalId btw, only list it once after -include entities.
Hello, First of thank you for an amazing product.
I'm trying to create a specific floorplan of specific rooms in a building. I thought of giving the exact GlobalIds that I need to see in the SVG. Only spaces are represented in the SVG however, no doors are visible.
I know I can just do a complete conversion and then eliminate the given Id's from the actual SVG. But that would require me to rescale the SVG coordinates to fit the bounds again. I would like to avoid that.
For debuging purposes I'm using this IFC from the wiki.
Here is the command that fails. The first ids are two IfcSpaces. The third one is an IfcDoor:
IfcConvert AC20-Institute-Var-2.ifc AC20-Institute-Var-2.svg --plan --model --section-height-from-storeys --door-arcs --bounds=1024x1024 --include=arg GlobalId '3uvYP4OyH5ufyPIMbZD86h' GlobalId '3CXBDjcSTES8AedjLKSfJe' GlobalId '2$R4rUG1nFkBAylN9aGNhb'This works great however:
IfcConvert AC20-Institute-Var-2.ifc AC20-Institute-Var-2.svg --plan --model --section-height-from-storeys --door-arcs --bounds=1024x1024 --include entities IfcSpace IfcDoorIf this is simply not in scope of IfcConvert. Then is there a painless way to use IfcConvert c++ code via python?
Last edit: Deadity 2022-02-24
Yes, the way how filtering works from the command line is very limited and has confusing defaults. The default for IfcSpace is
include entities ={IfcSpace}and when you sayincluded/excuded entities = something else, that defaults get overwritten, but not when you include by attribute.That makes sense in the case of the 3D formats, if you select a single building storey you probably still want the default entity filter to be in place. But in this case it's confusing.
Note that you don't need to repeat GlobalId btw, only list it once after
-include entities.The good news is that indeed IfcConvert and the serializers are fully available in Python. Maybe this helps https://github.com/IfcOpenShell/IfcOpenShell/issues/1564