Ejemplo n.º 1
0
from compas_fea.structure import SolidSection
from compas_fea.structure import Structure

from compas_blender.utilities import get_object_by_name

# Author(s): Andrew Liew (github.com/andrewliew)

# Structure

mdl = Structure(name='block_tets', path='C:/Temp/')

# Tetrahedrons

blender.add_tets_from_mesh(mdl,
                           name='elset_tets',
                           mesh=get_object_by_name('mesh'))

# Sets

blender.add_nsets_from_layers(mdl, layers=['nset_base', 'nset_top'])

# Materials

mdl.add(ElasticIsotropic(name='mat_elastic', E=10 * 10**9, v=0.3, p=1))

# Sections

mdl.add(SolidSection(name='sec_solid'))

# Properties
Ejemplo n.º 2
0
        raise NotImplementedError

    def closest_points(self, points, maxdist=None):

        raise NotImplementedError


# ==============================================================================
# Main
# ==============================================================================

if __name__ == '__main__':

    from compas_blender.utilities import xdraw_points
    from compas_blender.utilities import get_object_by_name

    object = get_object_by_name(name='BezierCurve')

    curve = BlenderCurve(object=object)

    print(curve)
    print(curve.control_points())
    print(curve.control_point_coordinates())

    points = [{
        'pos': i,
        'radius': 0.1
    } for i in curve.divide(number_of_segments=5)]

    xdraw_points(points=points)
Ejemplo n.º 3
0
from compas_fea.structure import Structure
from compas_fea.structure import TrussSection

from compas_blender.utilities import get_object_by_name

# Author(s): Andrew Liew (github.com/andrewliew)

# Structure

mdl = Structure(name='block_bridge', path='C:/Temp/')

# Tetrahedrons

blender.add_tets_from_mesh(mdl,
                           name='elset_tets',
                           mesh=get_object_by_name('elset_tets'))

# Elements

blender.add_nodes_elements_from_layers(
    mdl,
    layers=['elset_top_plate', 'elset_bot_plate'],
    mesh_type='ShellElement')
blender.add_nodes_elements_from_layers(mdl,
                                       layers='elset_ties',
                                       line_type='TrussElement')

# Sets

blender.add_nsets_from_layers(mdl, layers=['nset_supports', 'nset_load'])
Ejemplo n.º 4
0
    def closest_points(self, points, maxdist=None):

        raise NotImplementedError

    def project_to_curve(self, curve, direction=(0, 0, 1)):

        raise NotImplementedError

    def project_to_surface(self, surface, direction=(0, 0, 1)):

        raise NotImplementedError

    def project_to_mesh(self, mesh, direction=(0, 0, 1)):

        raise NotImplementedError


# ==============================================================================
# Main
# ==============================================================================

if __name__ == "__main__":

    from compas_blender.utilities import get_object_by_name

    object = get_object_by_name(name='Empty')

    point = BlenderPoint(object=object)

    print(point.xyz)
Ejemplo n.º 5
0
from compas_fea.cad import blender
from compas_fea.structure import Structure

from compas_blender.utilities import get_object_by_name

# Author(s): Andrew Liew (github.com/andrewliew)

# Structure

mdl = Structure(name='mesh_discretise', path='C:/Temp/')

# Discretise

mesh = get_object_by_name(name='mesh_input')
blender.discretise_mesh(mdl,
                        mesh=mesh,
                        layer='elset_mesh',
                        target=0.100,
                        min_angle=15)

# Weld

blender.weld_meshes_from_layer(layer_input='elset_mesh',
                               layer_output='elset_welded')

# Summary

mdl.summary()
Ejemplo n.º 6
0
    def to_datastructure(self):
        vertices = self.get_vertices_coordinates().values()
        faces = self.get_faces_vertex_indices().values()
        return Mesh.from_vertices_and_faces(vertices=vertices, faces=faces)


# ==============================================================================
# Main
# ==============================================================================

if __name__ == '__main__':

    from compas_blender.utilities import get_object_by_name

    object = get_object_by_name(name='Cube')

    mesh = BlenderMesh(object)

    print(mesh.geometry)
    print(mesh.object)
    print(mesh.otype)
    print(mesh.name)
    print(mesh.location)

    print(mesh.get_vertex_coordinates(vertex=0))
    print(mesh.get_vertices_coordinates())
    # mesh.set_vertices_coordinates({0: [0, 0, 0], 1: [1, 1, 0]})

    mesh.set_vertices_colors(colors={0: [1, 0, 0], 1: [0, 0, 1], 2: [0, 1, 0]})
    print(mesh.get_vertices_colors())
Ejemplo n.º 7
0
mdl.add([
    RollerDisplacementXY(name='disp_edges', nodes='nset_edges'),
    PinnedDisplacement(name='disp_pinned', nodes='nset_corner1'),
    GeneralDisplacement(name='disp_xdof', nodes='nset_corner2', x=0),
])

# Loads

mdl.add([
    GravityLoad(name='load_gravity', elements='elset_floor'),
    PrestressLoad(name='load_prestress', elements='elset_ties',
                  sxx=10 * 10**6),
    TributaryLoad(mdl,
                  name='load_area',
                  mesh=mesh_from_bmesh(get_object_by_name('load_mesh')),
                  z=-2000),
])

# Steps

mdl.add([
    GeneralStep(name='step_bc',
                displacements=['disp_edges', 'disp_pinned', 'disp_xdof']),
    GeneralStep(name='step_loads',
                loads=['load_gravity', 'load_area'],
                factor={
                    'load_gravity': 1.35,
                    'load_area': 1.50
                }),
])
Ejemplo n.º 8
0
# Author(s): Andrew Liew (github.com/andrewliew)


# Structure

mdl = Structure(name='block_deepbeam', path='C:/Temp/')

# Mesh

ds = 0.05
Lx = 1
Ly = 2
Lz = 1

mesh = get_object_by_name(name='plane')
blender.mesh_extrude(mdl, mesh=mesh, layers=int(Lz / ds), thickness=ds, blocks_name='elset_blocks')

# Sets

pins = [[ds, ds, 0], [Lx - ds, ds, 0], [Lx - ds, Ly - ds, 0], [ds, Ly - ds, 0]]
mdl.add_set(name='nset_supports', type='node', selection=[mdl.check_node_exists(i) for i in pins])
mdl.add_set(name='nset_load', type='node', selection=[mdl.check_node_exists([Lx * 0.5, Ly * 0.5, Lz])])

# Materials

mdl.add(ElasticIsotropic(name='mat_elastic', E=10**10, v=0.3, p=1))

# Sections

mdl.add(SolidSection(name='sec_solid'))