fix short_walls below ramps
This commit is contained in:
parent
465391d145
commit
9b66a2b4e5
1 changed files with 10 additions and 5 deletions
|
@ -548,7 +548,7 @@ class LevelGeometries:
|
||||||
if intersection.is_empty:
|
if intersection.is_empty:
|
||||||
continue
|
continue
|
||||||
remaining = remaining.difference(altitudearea.geometry)
|
remaining = remaining.difference(altitudearea.geometry)
|
||||||
geoms.short_walls.append((altitudearea.altitude, intersection))
|
geoms.short_walls.append((altitudearea, intersection))
|
||||||
geoms.all_walls = geoms.walls
|
geoms.all_walls = geoms.walls
|
||||||
geoms.walls = geoms.walls.difference(
|
geoms.walls = geoms.walls.difference(
|
||||||
unary_union(tuple(altitudearea.geometry for altitudearea in altitudeareas_above))
|
unary_union(tuple(altitudearea.geometry for altitudearea in altitudeareas_above))
|
||||||
|
@ -578,8 +578,8 @@ class LevelGeometries:
|
||||||
self.heightareas = tuple((HybridGeometry.create(area, face_centers), height)
|
self.heightareas = tuple((HybridGeometry.create(area, face_centers), height)
|
||||||
for area, height in self.heightareas)
|
for area, height in self.heightareas)
|
||||||
self.walls = HybridGeometry.create(self.walls, face_centers)
|
self.walls = HybridGeometry.create(self.walls, face_centers)
|
||||||
self.short_walls = tuple((altitude, HybridGeometry.create(geom, face_centers))
|
self.short_walls = tuple((altitudearea, HybridGeometry.create(geom, face_centers))
|
||||||
for altitude, geom in self.short_walls)
|
for altitudearea, geom in self.short_walls)
|
||||||
self.all_walls = HybridGeometry.create(self.all_walls, face_centers)
|
self.all_walls = HybridGeometry.create(self.all_walls, face_centers)
|
||||||
self.doors = HybridGeometry.create(self.doors, face_centers)
|
self.doors = HybridGeometry.create(self.doors, face_centers)
|
||||||
self.restricted_spaces_indoors = {key: HybridGeometry.create(geom, face_centers)
|
self.restricted_spaces_indoors = {key: HybridGeometry.create(geom, face_centers)
|
||||||
|
@ -590,6 +590,9 @@ class LevelGeometries:
|
||||||
def _get_altitudearea_vertex_values(self, area, i_vertices):
|
def _get_altitudearea_vertex_values(self, area, i_vertices):
|
||||||
return area.get_altitudes(self.vertices[i_vertices])
|
return area.get_altitudes(self.vertices[i_vertices])
|
||||||
|
|
||||||
|
def _get_short_wall_vertex_values(self, item, i_vertices):
|
||||||
|
return item[0].get_altitudes(self.vertices[i_vertices]) - int(0.7 * 1000)
|
||||||
|
|
||||||
def _build_vertex_values(self, items, area_func, value_func):
|
def _build_vertex_values(self, items, area_func, value_func):
|
||||||
vertex_values = np.empty(self.vertices.shape[:1], dtype=np.int32)
|
vertex_values = np.empty(self.vertices.shape[:1], dtype=np.int32)
|
||||||
vertex_value_mask = np.full(self.vertices.shape[:1], fill_value=False, dtype=np.bool)
|
vertex_value_mask = np.full(self.vertices.shape[:1], fill_value=False, dtype=np.bool)
|
||||||
|
@ -709,10 +712,12 @@ class LevelGeometries:
|
||||||
lower=vertex_altitudes - int(0.7 * 1000),
|
lower=vertex_altitudes - int(0.7 * 1000),
|
||||||
upper=vertex_wall_heights)
|
upper=vertex_wall_heights)
|
||||||
|
|
||||||
for altitude, geom in self.short_walls:
|
for altitudearea, geom in self.short_walls:
|
||||||
geom.build_polyhedron(self._create_polyhedron,
|
geom.build_polyhedron(self._create_polyhedron,
|
||||||
lower=vertex_altitudes - int(0.7 * 1000),
|
lower=vertex_altitudes - int(0.7 * 1000),
|
||||||
upper=altitude - int(0.7 * 1000))
|
upper=self._build_vertex_values([(altitudearea, geom)],
|
||||||
|
area_func=operator.itemgetter(1),
|
||||||
|
value_func=self._get_short_wall_vertex_values))
|
||||||
self.short_walls = tuple(geom for altitude, geom in self.short_walls)
|
self.short_walls = tuple(geom for altitude, geom in self.short_walls)
|
||||||
|
|
||||||
for key, geometry in self.restricted_spaces_indoors.items():
|
for key, geometry in self.restricted_spaces_indoors.items():
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue