Team:Terrain/Tent Internals
Wet-en-Regelgeving opstelling Zitplaatsen
De inrichting van een besloten ruimte is zodanig dat:
voor elke persoon zonder zitplaats ten minste 0,25 m2 vloeroppervlakte beschikbaar is; voor elke persoon met zitplaats ten minste 0,3 m2 vloeroppervlakte beschikbaar is, indien geen inventaris kan verschuiven of omvallen als gevolg van gedrang; voor elke persoon met zitplaats ten minste 0,5 m2 vloeroppervlakte beschikbaar is, indien inventaris kan verschuiven of omvallen als gevolg van gedrang.
Bij de berekening van de per persoon beschikbare vloeroppervlakte wordt uitgegaan van de vloeroppervlakte aan verblijfsruimte na aftrek van de oppervlakte van de inventaris.
Indien op een plaats meer dan 100 zitplaatsen gezamenlijk zijn opgesteld, zijn de zitplaatsen gekoppeld of aan de vloer bevestigd, zodanig dat deze niet kunnen verschuiven of omvallen als gevolg van gedrang, indien die zitplaatsen in een cluster van meer dan 4 rijen van meer dan 4 stoelen zijn opgesteld.
Bij in rijen opgestelde zitplaatsen is tussen de rijen een vrije ruimte aanwezig met een breedte van ten minste 0,4 m, gemeten tussen de loodlijnen op de elkaar dichtst naderende gedeelten van de rijen.
Indien in een rij als bedoeld in het derde lid tussen de zitplaatsen een tafel is geplaatst, bevindt deze zich niet in de vrije ruimte, bedoeld in dat lid.
Een rij zitplaatsen die slechts aan een einde op een gangpad of uitgang uitkomt, heeft niet meer dan 8 zitplaatsen.
Een rij zitplaatsen die aan beide einden op een gangpad of uitgang uitkomt, heeft ten hoogste:
16 zitplaatsen indien de vrije ruimte, bedoeld in het derde lid, niet groter is dan 0,45 m en de breedte van de vrije doorgang van het gangpad of van de uitgang ten minste 0,6 m is;
32 zitplaatsen indien de vrije ruimte, bedoeld in het derde lid, groter is dan 0,45 m en de breedte van de vrije doorgang van het gangpad of van de uitgang ten minste 0,6 m is;
50 zitplaatsen indien de vrije ruimte, bedoeld in het derde lid, groter is dan 0,45 m en de breedte van de vrije doorgang van het gangpad of van de uitgang ten minste 1,1 m is.
Script
from qgis.core import *
from qgis.utils import iface
from PyQt5.QtCore import Qt
from PyQt5.QtGui import QMouseEvent
class SquareDrawTool(QgsMapTool):
def __init__(self, canvas):
super().__init__(canvas)
self.canvas = canvas
self.layer = iface.activeLayer()
self.tentwidth = 20.0
self.tentlength = 25.0
self.stagewidth = 8.0
self.stagedepth = 4.0
self.islewidth=3.7 # Width of the center isle
self.surroundwidth = 2.0
self.stage_to_chairs = 1.55
self.chairwidth = 0.45
self.chairheight = 0.45
self.chairisle = 0.55 # space between chairs, front to back
def canvasPressEvent(self, event: QMouseEvent):
self.layer.startEditing()
# Get the clicked point's map coordinates
point = self.canvas.getCoordinateTransform().toMapCoordinates(event.pos())
# Draw the outline
self.add_square_from_point(
point,
0,
0,
self.tentwidth,
self.tentlength)
center_x = self.tentwidth/2.0
center_y = self.tentlength/2
# draw the stage
self.add_square_from_point(
point,
center_x - self.stagewidth/2.0,
0.0,
self.stagewidth, self.stagedepth)
# These points all refer to the bottom left of the chair block
chair_min_y = self.stagedepth + self.stage_to_chairs
chair_max_y = self.tentlength - self.surroundwidth - self.chairheight
chair_left_min_x = self.surroundwidth
chair_left_max_x = center_x - self.islewidth/2 - self.chairwidth
# Don't need to do the right block of chairs, as they will be mirrored
#draw the chairs
draw_x = chair_left_max_x
while (draw_x > chair_left_min_x):
mirror_x = (draw_x - center_x)* -1 + center_x - self.chairwidth
draw_y = chair_min_y
while (draw_y <= chair_max_y):
self.add_square_from_point(
point,
draw_x,
draw_y,
self.chairwidth,
self.chairheight)
self.add_square_from_point(
point,
mirror_x,
draw_y,
self.chairwidth,
self.chairheight)
draw_y += self.chairheight + self.chairisle
draw_x -= self.chairwidth
# draw side isle width
self.add_dimension(point,
0,
center_y,
draw_x+self.chairwidth,
center_y
)
# draw isle height
self.add_dimension(point,
center_x/2,
draw_y-self.chairisle,
center_x/2,
self.tentlength
)
# Add dimensions
# tent dims
self.add_dimension(point,
-1,
0,
-1,
self.tentlength
)
self.add_dimension(point,
0,
-1,
self.tentwidth,
-1
)
# stage
self.add_dimension(point,
center_x,
0,
center_x,
self.stagedepth)
self.add_dimension(point,
center_x - self.stagewidth/2,
self.stagedepth/2,
center_x + self.stagewidth/2,
self.stagedepth/2)
# Isle width
self.add_dimension(point,
center_x-self.islewidth/2,
center_y,
center_x+self.islewidth/2,
center_y
)
self.add_dimension(point,
center_x/2,
chair_min_y+self.chairheight,
center_x/2,
chair_min_y+self.chairheight+self.chairisle
)
# Commit the changes
self.layer.commitChanges()
# Refresh the layer
self.layer.triggerRepaint()
def add_dimension(self, start_point, start_x, start_y, end_x, end_y, type="length"):
points = [
QgsPointXY(
start_point.x()+start_x,
start_point.y()+start_y),
QgsPointXY(
start_point.x()+end_x,
start_point.y()+end_y)
]
line = QgsGeometry.fromPolylineXY(points)
if self.layer and self.layer.type() == QgsMapLayer.VectorLayer:
# Create a new feature and set its geometry
feature = QgsFeature(self.layer.fields())
feature.setGeometry(line)
feature.setAttribute('type', type)
# Add the feature to the layer
self.layer.addFeature(feature)
def add_square_from_point(self, start_point, offset_x, offset_y, width, length, type=""):
# Define the coordinates of the square based on the selected point (bottom-left corner)
square_points = [
QgsPointXY(
start_point.x()+offset_x,
start_point.y()+offset_y), # Bottom-left
QgsPointXY(
start_point.x() +offset_x+ width,
start_point.y()+offset_y), # Bottom-right
QgsPointXY(
start_point.x() +offset_x+ width,
start_point.y() +offset_y+ length), # Top-right
QgsPointXY(
start_point.x()+offset_x,
start_point.y()+offset_y+ length), # Top-left
QgsPointXY(
start_point.x()+offset_x,
start_point.y()+offset_y) # Closing the square
]
# Create a polygon geometry for the square
square_geometry = QgsGeometry.fromPolylineXY(square_points)
if self.layer and self.layer.type() == QgsMapLayer.VectorLayer:
# Create a new feature and set its geometry
feature = QgsFeature(self.layer.fields())
feature.setGeometry(square_geometry)
feature.setAttribute('type', type)
# Add the feature to the layer
self.layer.addFeature(feature)
else:
print("No valid vector layer selected.")
- Create and activate the map tool
tool = SquareDrawTool(iface.mapCanvas())
iface.mapCanvas().setMapTool(tool)
To use:
- Have qgis
- Open Plugins -> Python Console
- Create a new script
- Paste the code in
- Edit the parameters (e.g. tent width and length)
- Save
- Select the tent internals layer
- Press green arrow to run
- Click somewhere on field to place
- Enter edit mode on tent internals layer
- Select all the objects of this tent
- Use move and rotate tools to move to the right place
- Save the changes to the layer