Exemple #1
0
def build_test_beam():
    a = Assembly("MyAssembly")
    p = Part("MyPart")
    p.add_beam(Beam("Bm", (0, 0, 0), (1, 0, 0), "IPE300"))
    p.gmsh.mesh(0.5)
    a.add_part(p)
    return a
Exemple #2
0
def build_test_beam():
    a = Assembly('MyAssembly')
    p = Part('MyPart')
    p.add_beam(Beam('Bm', (0, 0, 0), (1, 0, 0), 'IPE300'))
    p.gmsh.mesh(0.5)
    a.add_part(p)
    return a
Exemple #3
0
 def test_profiles_to_ifc(self):
     a = Assembly("MyAssembly")
     p = Part("MyPart")
     p.add_beam(
         Beam("bm1", n1=[0, 0, 0], n2=[2, 0, 0], sec="IPE220",
              colour="red"))
     p.add_beam(
         Beam("bm2",
              n1=[0, 0, 1],
              n2=[2, 0, 1],
              sec="HP220x10",
              colour="blue"))
     p.add_beam(
         Beam("bm3",
              n1=[0, 0, 2],
              n2=[2, 0, 2],
              sec="BG800x400x20x40",
              colour="green"))
     p.add_beam(
         Beam("bm4",
              n1=[0, 0, 3],
              n2=[2, 0, 3],
              sec="CIRC200",
              colour="green"))
     p.add_beam(
         Beam("bm5",
              n1=[0, 0, 4],
              n2=[2, 0, 4],
              sec="TUB200x10",
              colour="green"))
     a.add_part(p)
     a.to_ifc(test_folder / "my_beam_profiles.ifc")
Exemple #4
0
    def test_fem(self):
        a = Assembly("MyAssembly")
        p = Part("MyPart")
        p.add_beam(Beam("Bm", (0, 0, 0), (1, 0, 0), "IPE300"))
        a.add_part(p)
        a.gmsh.mesh()

        a._repr_html_()
        a._renderer.toggle_mesh_visibility()
Exemple #5
0
def test_profiles_to_ifc(ifc_test_dir):
    a = Assembly("MyAssembly")
    p = Part("MyPart")
    p.add_beam(Beam("bm1", n1=[0, 0, 0], n2=[2, 0, 0], sec="IPE220", colour="red"))
    p.add_beam(Beam("bm2", n1=[0, 0, 1], n2=[2, 0, 1], sec="HP220x10", colour="blue"))
    p.add_beam(Beam("bm3", n1=[0, 0, 2], n2=[2, 0, 2], sec="BG800x400x20x40", colour="green"))
    p.add_beam(Beam("bm4", n1=[0, 0, 3], n2=[2, 0, 3], sec="CIRC200", colour="green"))
    p.add_beam(Beam("bm5", n1=[0, 0, 4], n2=[2, 0, 4], sec="TUB200x10", colour="green"))
    a.add_part(p)
    _ = a.to_ifc(ifc_test_dir / "my_beam_profiles.ifc", return_file_obj=True)
Exemple #6
0
 def create_ifc(name, up=(0, 0, 1)):
     a = Assembly("MyAssembly")
     p = Part(name)
     p.add_beam(
         Beam(
             "bm_up",
             n1=[0, 0, 0],
             n2=[2, 0, 0],
             sec="HP200x10",
             mat=Material("SteelMat", CarbonSteel("S420")),
             colour="red",
             up=up,
         ))
     a.add_part(p)
     a.to_ifc(test_folder / name)
def get_fsec_bm_collection():
    sec = Section('myIPE', from_str='BG800x400x30x40')
    mat = Material('my_mat')
    p = Part('my_part')
    bm = Beam('my_beam', (0, 0, 0), (1, 0, 0), sec, mat)
    elem = Elem(1, [bm.n1, bm.n2], 'B31')
    fem_set = FemSet('my_set', [elem], 'elset')
    fem_sec = FemSection('my_sec',
                         'beam',
                         fem_set,
                         mat,
                         sec,
                         local_z=(0, 0, 1))

    p.add_beam(bm)
    p.fem.elements.add(elem)
    p.fem.sets.add(fem_set)
    p.fem.sections.add(fem_sec)
    return p
def get_fsec_bm_collection():
    sec = Section("myIPE", from_str="BG800x400x30x40")
    mat = Material("my_mat")
    p = Part("my_part")
    bm = Beam("my_beam", (0, 0, 0), (1, 0, 0), sec, mat)
    elem = Elem(1, [bm.n1, bm.n2], "B31")
    fem_set = FemSet("my_set", [elem], "elset")
    fem_sec = FemSection("my_sec",
                         "beam",
                         fem_set,
                         mat,
                         sec,
                         local_z=(0, 0, 1))

    p.add_beam(bm)
    p.fem.elements.add(elem)
    p.fem.sets.add(fem_set)
    p.fem.sections.add(fem_sec)
    return p
Exemple #9
0
    def test_ifc_groups(self):
        a = Assembly("MySiteName", project="MyTestProject")
        p = Part(
            "MyTopSpatialLevel",
            metadata=dict(ifctype="spatial", description="MyTopLevelSpace"),
        )
        p.add_beam(Beam("bm1", n1=[0, 0, 0], n2=[2, 0, 0], sec="IPE220", colour="red"))
        a.add_part(p)

        newp = Part(
            "MySecondLevel",
            metadata=dict(ifctype="spatial", description="MySecondLevelSpace"),
        )
        newp.add_beam(Beam("bm2", n1=[0, 0, 0], n2=[0, 2, 0], sec="IPE220", colour="blue"))
        p.add_part(newp)

        newp2 = Part(
            "MyThirdLevel",
            metadata=dict(ifctype="spatial", description="MyThirdLevelSpace"),
        )
        newp2.add_beam(Beam("bm3", n1=[0, 0, 0], n2=[0, 0, 2], sec="IPE220", colour="green"))
        newp2.add_plate(
            Plate(
                "pl1",
                [(0, 0, 0), (0, 0, 2), (0, 2, 2), (0, 2.0, 0.0)],
                0.01,
                use3dnodes=True,
            )
        )
        newp.add_part(newp2)

        a.to_ifc(test_folder / "my_test_groups.ifc")
Exemple #10
0
    def test_beam_mesh(self):
        import gmsh

        try:
            gmsh.finalize()
        except:
            pass
        bm = Beam(f"bm1", n1=[0, 0, 0], n2=[1, 0, 0], sec="IPE220")

        bm.add_penetration(
            PrimCyl("Cylinder", (0.5, -0.5, 0), (0.5, 0.5, 0), 0.05))

        p = Part('MyFem')
        p.add_beam(bm)

        create_beam_mesh(bm, p.fem, "solid", interactive=False)
        a = Assembly('Test') / p
        a.to_fem('my_test',
                 'xdmf',
                 scratch_dir=test_folder,
                 fem_converter='meshio',
                 overwrite=True)
Exemple #11
0
    def test_beam_directions(self):
        a = Assembly("AdaRotatedProfiles")
        p = Part("Part")
        a.add_part(p)

        props = dict(spre="/JSB_VA-DIN-SPEC/Y26IPE400", matr="/GR.355-II(Y26)_jsb_va")

        p.add_beam(
            Beam(
                "bm_test2X0",
                n1=[0, 0, 0],
                n2=[5, 0, 0],
                sec=section,
                angle=0,
                metadata=dict(props=props),
            )
        )
        p.add_beam(
            Beam(
                "bm_test2X90",
                n1=[0, 0, 1],
                n2=[5, 0, 1],
                sec=section,
                angle=90,
                metadata=dict(props=props),
            )
        )
        p.add_beam(
            Beam(
                "bm_test2Y0",
                n1=[0, 0, 2],
                n2=[0, 5, 2],
                sec=section,
                angle=0,
                metadata=dict(props=props),
            )
        )
        p.add_beam(
            Beam(
                "bm_test2Y90",
                n1=[0, 0, 3],
                n2=[0, 5, 3],
                sec=section,
                angle=90,
                metadata=dict(props=props),
            )
        )

        a.to_ifc(test_folder / "my_angled_profiles.ifc")
Exemple #12
0
    def test_beam_mesh(self):
        import gmsh

        try:
            gmsh.finalize()
        except BaseException as e:
            logging.error(e)
            pass
        bm = Beam("bm1", n1=[0, 0, 0], n2=[1, 0, 0], sec="IPE220")

        bm.add_penetration(
            PrimCyl("Cylinder", (0.5, -0.5, 0), (0.5, 0.5, 0), 0.05))

        p = Part("MyFem")
        p.add_beam(bm)

        create_beam_mesh(bm, p.fem, "solid", interactive=False)
        a = Assembly("Test") / p
        a.to_fem("my_test",
                 "xdmf",
                 scratch_dir=test_folder,
                 fem_converter="meshio",
                 overwrite=True)
Exemple #13
0
    def test_meter_to_millimeter(self):
        a = Assembly("MySiteName", project="MyTestProject")
        p = Part(
            "MyTopSpatialLevel",
            metadata=dict(ifctype="storey", description="MyTopLevelSpace"),
        )
        bm1 = Beam("bm1",
                   n1=[0, 0, 0],
                   n2=[2, 0, 0],
                   sec="IPE220",
                   colour="red")
        p.add_beam(bm1)
        a.add_part(p)

        newp = Part(
            "MySecondLevel",
            metadata=dict(ifctype="storey", description="MySecondLevelSpace"),
        )
        bm2 = Beam("bm2",
                   n1=[0, 0, 0],
                   n2=[0, 2, 0],
                   sec="IPE220",
                   colour="blue")
        newp.add_beam(bm2)
        p.add_part(newp)

        newp2 = Part(
            "MyThirdLevel",
            metadata=dict(ifctype="storey", description="MyThirdLevelSpace"),
        )
        bm3 = Beam("bm3",
                   n1=[0, 0, 0],
                   n2=[0, 0, 2],
                   sec="IPE220",
                   colour="green")
        newp2.add_beam(bm3)
        pl1 = Plate(
            "pl1",
            [(0, 0, 0), (0, 0, 2), (0, 2, 2), (0, 2.0, 0.0)],
            0.01,
            use3dnodes=True,
        )
        newp2.add_plate(pl1)
        newp.add_part(newp2)

        a.to_ifc(test_folder / "my_test_in_meter.ifc")

        a.units = "mm"
Exemple #14
0
    def test_beam_rotation_by_angle(self):
        # Define beam rotations using vectors
        a = Assembly("AdaRotatedProfiles")
        p = Part("Part")
        a.add_part(p)

        for i, angle in enumerate(angles):
            # Along X-Axis
            bm = Beam(
                f"bmX_n{i}_a",
                n1=[0, 0, 0],
                n2=[5, 0, 0],
                sec=section,
                angle=angle,
                metadata=dict(props=dict(axis="X", angle=angle, vector=None)),
            )
            assert tuple(bm.up.tolist()) == vectorX[i]
            p.add_beam(bm)
            bm = Beam(
                f"bmX_n{i}_v",
                n1=[0, 0, 0],
                n2=[5, 0, 0],
                sec=section,
                up=vectorX[i],
                metadata=dict(props=dict(axis="X", angle=None, vector=vectorX[i])),
            )
            p.add_beam(bm)
            # Must fix error in 270 deg angle calculation
            # assert bm._angle == angle

            # Along Y-Axis
            bm = Beam(
                f"bmY_n{i}_a",
                n1=[0, 0, 0],
                n2=[0, 5, 0],
                sec=section,
                angle=angle,
                metadata=dict(props=dict(axis="Y", angle=angle, vector=None)),
            )
            p.add_beam(bm)
            assert tuple(bm.up.tolist()) == vectorY[i]
            bm = Beam(
                f"bmY_n{i}_v",
                n1=[0, 0, 0],
                n2=[0, 5, 0],
                sec=section,
                up=vectorY[i],
                metadata=dict(props=dict(axis="Y", angle=None, vector=vectorY[i])),
            )
            p.add_beam(bm)
            # assert bm._angle == angle

            # Along Z-Axis
            bm = Beam(
                f"bmZ_n{i}_a",
                n1=[0, 0, 0],
                n2=[0, 0, 5],
                sec=section,
                angle=angle,
                metadata=dict(props=dict(axis="Z", angle=angle, vector=None)),
            )
            p.add_beam(bm)
            assert tuple(bm.up.tolist()) == vectorZ[i]
            bm = Beam(
                f"bmZ_n{i}_v",
                n1=[0, 0, 0],
                n2=[0, 0, 5],
                sec=section,
                up=vectorZ[i],
                metadata=dict(props=dict(axis="Z", angle=None, vector=vectorZ[i])),
            )
            p.add_beam(bm)
            # assert bm._angle == angle

        p.to_stp(test_folder / "my_angle_rotated_profiles.stp")
        a.to_ifc(test_folder / "my_angle_rotated_profiles.ifc")