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
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)
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'])
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)
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()
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())
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 }), ])
# 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'))