Skip to content

compas_tf.floor_guide ¤

Classes¤

FloorGuide ¤

FloorGuide(size_grid_x=3000, size_grid_y=3000, size_column_head=250, size_column_head_chamfer=100, size_outer_ribs=100, size_inner_ribs=60, size_inner_beams=60, size_wedge=100, size_tsections=27, height=650, rise=453, size_oculus=1000, wedge_plane_angle=-10, bay_height=3000)

Provides geometry parameters for building column heads and edge beams.

Depending if the column is bigger than column head, there is either cutters of a beam of a separate block.

Attributes¤

bed_top_planes property ¤
bed_top_planes

Best-fit top plane of each bed panel, ordered to match the 3 wedges.

The beds are the last (bottom) plate layer; each bed panel sits under one wedge. The boolean wedge bottoms are cut by these planes so the wedges land on the beds instead of stopping in the air. Mirrors the per-panel construction in :pyattr:beds.

beds property ¤
beds

Bed plates as a flat list, three panels (rows) deep.

Each plate is tagged with plate.bed_row (0, 1 or 2) so a consumer can split the beds into their three rows without having to know the panel boundaries.

block_level_bottom property ¤
block_level_bottom

Bottom level of the block - used for ribs and wedges.

block_level_top property ¤
block_level_top

Top level of the block - used for ribs and wedges.

boundary_parabolas property ¤
boundary_parabolas

Boundary parabolas along the outer and inner rib axes, each flanked by two t-section offsets at +/- size_tsections.

column_cutters property ¤
column_cutters

PlateElements that carve the column head as boolean-difference cutters.

Built from the three wedge construction planes plus the two side planes of the quarter column polygon. The plane fan is intersected with three horizontal levels (top at z=0, and two lower levels) to produce six cutter quads, each lofted into a closed PlateElement so it can be registered as a SolidDifferenceModifier source against the column.

The cutters are authored in the guide's local frame (column head near z=0); FloorModel.add_floor_guide applies the guide transformation so they line up with the column at the correct elevation.

Returns:

Type Description
list[:class:`compas_tf.plate.PlateElement`]
construction_planes property ¤
construction_planes

Plane pairs each corresponds to the long edge of 2d plan plate edges. In the next function we would make two other pair polylines form indicies to construct rectangles.

inner_beams property ¤
inner_beams

Flip the middle beam.

inner_ribs property ¤
inner_ribs

Create the ribs geometry

oculus property ¤
oculus

Oculus constructed from the inner beam 2 beam first plane rotated around origin 4 times. Oculus is made from 5 plates elements: 4x boundary beams 1x inner plate connecting the 4 beams

oculus_points property ¤
oculus_points

Four points whose distance is sqrt(2) * oculus.

outer_ribs property ¤
outer_ribs

Create the ribs geometry

outer_ribs_bottom property ¤
outer_ribs_bottom

Lowest z coordinate reached by the outer rib plates.

Used as the bottom level of the boolean blocks that cut the column, so the column is cut down exactly to the deepest point of the outer ribs.

quarter_column_polygon property ¤
quarter_column_polygon

The column head polygon from which the ribs will start.

quarter_polygon property ¤
quarter_polygon

The main polygon of the floor.

tsections property ¤
tsections

Create the tsections geometry

wedges_inner_beams property ¤
wedges_inner_beams

3 wedges + 2 sherpa connections + 3 collumn cutting blocks

Methods:¤

brep_meshes ¤
brep_meshes(variant=None) -> list

The geometry of every plate the guide produces - what :meth:get_brep converts.

column_cutters_for ¤
column_cutters_for(column_height)

Column-head cutter solids in a column's LOCAL frame.

:attr:column_cutters are authored in the guide's world frame - at the bay corner, with the head top near z=0. This recentres them on the column axis (xy -> 0) and lifts the head top to the column top (z = column_height), which is the frame a column feature is applied in. Pass the result straight to :meth:compas_tf.column.ColumnElement.add_cutters.

Parameters:

Name Type Description Default
column_height float

Local height of the target column; its head top sits at this z.

required

Returns:

Type Description
list[:class:`compas.datastructures.Mesh`]

Closed cutter solids in the column's local frame.

corner_point_column ¤
corner_point_column(column_size=200)

Column base center in plan for one quarter (the grid corner).

Mirrors the position the columns and supports are placed at: the bottom-left corner of the quarter grid, inset by half the column size.

Parameters:

Name Type Description Default
column_size float

Column cross-section side length in mm.

200

Returns:

Type Description
class:`compas.geometry.Point`
plates ¤
plates() -> list

Every :class:compas_tf.plate.PlateElement the guide produces, flattened.

Each group is a lazy property, so this builds them all on first call.

quadratic_points staticmethod ¤
quadratic_points(p0, p1, p2, divisions=7)

Generate points along a quadratic Bezier curve (parabola).

Parameters:

Name Type Description Default
p0 :class:`compas.geometry.Point`

Start point.

required
p1 :class:`compas.geometry.Point`

Control point.

required
p2 :class:`compas.geometry.Point`

End point.

required
divisions int

Number of points to generate along the curve.

7

Returns:

Type Description
class:`compas.geometry.Polyline`

Polyline of points along the Bezier curve.