Making an IfcGroup and copy/paste along a grid

edited October 26 in General

Comments

  • How do you make an IfcGroup?
    I modelled a truss with IfcBeamType instances and the BIM tool, it works so insanely fast with the Shift+E and miter tool, so nice:

    Now I would like to make this a group and copy paste it along a grid.

  • I would assume you'd like to have all these trusses in a 1 to many relationship. That is, if you change one, they all change.
    Unfortunately, if all the members(chords) are individual ifcbeamtype instances, there's no way that i know that you can do this.
    The following conversations speak to this short coming...

    If you want to make them obey a 1 to many relationship, you would have to remove the type assignment to each member(chord), and then join all these meshes into one, and then reassign it to a class like IfcElementAssemblyType, and create the instances.

    I know, sad. :)
    ...
    FYI, there is functionality in the schema where the local placement of an object can be tied to a grid or linear element.

    But, from what i know, IfcOpenShell doesn't support it yet.

    CoenAceGorgious
  • ArvArv
    edited November 23

    this is quite a setback in preserving the construction detail and data esp when you have multiple geometries and multiple materials assigned to them :(
    I did try with IfcElementAssemblyType but without any luck.

    CoentheoryshawCadGiru
  • @theoryshaw said:
    If you want to make them obey a 1 to many relationship, you would have to remove the type assignment to each member(chord), and then join all these meshes into one, and then reassign it to a class like IfcElementAssemblyType, and create the instances.

    maybe to make life a bit easier you can use blender python to unlink the ifc elements with a for loop.
    bpy.context.selected_objects and bpy.ops.bim.unlink_object()
    remember to select all the objects first and also to import ifcopenshell

    Coen
  • edited November 25

    Note it's not mandatory to select the objects beforehand, you can use an override :

    with bpy.context.temp_override(selected_objects=objects_to_unlink):
        bpy.ops.bim.unlink_object()
    

    For anyone wondering, that's the main benefit of using the provided context and not bpy.context in an operator execute.
    Link to the operator class

    ArvCoentheoryshaw
Sign In or Register to comment.