incidence and adjacency of cells, but also to resolve—
via fast SpMV computational kernels—the boundary
extraction of any 3D subset of the building model.
It is worth noting that LAR provides a direct
management of all subsets of cells and their physi-
cal properties trough the linear spaces of chains in-
duced by the model partitioning, and their dual spaces
of cochains. The linear operators of boundary and
coboundary between such linear spaces, suitably im-
plemented by sparse matrices, directly provide, de-
pending on the dimension of the mapped spaces, the
discrete differential operators of gradient, curl and di-
vergence, while their product gives the Laplacian (Di-
Carlo et al., 2009).
5.2 Geometric Computing of Shape
Our computational environment is strongly ori-
ented towards the most general parametric model-
ing of component shapes of buildings. This atti-
tude is produced by two Python libraries, that pro-
vide a dimension-independent algebraic calculus with
shapes (pyplasm) and their representation in the LAR
scheme (larlib).
PLaSM (Paoluzzi et al., 1995; Paoluzzi et al.,
2003), which stands for Programming Language for
Solid Modeling, is a geometry-oriented extension of
Backus’ FL language (Backus, 1978; Backus et al.,
1989). PLaSM is a project developed in the nineties in
the framework of Building Technologies Project (“PF
Edilizia”) of the Italian National Research Council.
The pyplasm module (2006) is the C++ porting of
PLaSM to Python via SWIG wrapping.
On top of the Scipy/Pyplasm stack we started
(2012), using literate programming methods, to build
a set of software modules, named larlib, and us-
ing the LAR scheme. This library supports topolog-
ical queries and physical properties of meshes and
complexes, including integration of polynomials over
the boundary of any chain of cells. For interactive
visualization it relies on the pyplasm viewer, based
on OpenGL. A porting of the most engaging parts
of larlib to Julia, the last-generation programming
language for scientific computing (Bezanson et al.,
2014) started very recently, with the purpose of taking
advantage of the great computational efficiency and
parallelism of Julia in more demanding applications.
5.3 Plugin Server Framework
Our building deconstruction framework has a web-
based client-server architecture, discussed in Sec-
tion 4. Metior, the web client application, is illus-
trated in Section 3. The server-side of the framework,
discussed in this section, is a plugin server written in
Python, which capitalizes on the stack of geometric
programming tools described above.
The Metior user quickly develops a 3D hierarchi-
cal assembly of different parts of the building en-
velope, as well as the horizontal and vertical parti-
tions, using very simple 2D drawing tools. The more
geometrically complex parts of the construction are
conversely set up by user picking from context-based
boards of predefined plugin templates, that are Python
scripts (see Figure 6) generating solids models which
are interactively dimensioned, either using 2D draw-
ing tools, or by user’s numeric input from keyboard.
Of course, our list of plugin templates embraces
most of building parts that are not manageable for
quick shape input via 2D interaction. In particular, the
picking boards include templates for planar concrete
frames, spatial building frames, building foundations,
roofs and stairs of different types, attics and dorm-
ers, fireplaces and fitted wardrobes, shover cabins and
sanitary equipments, doors and windows, etc.
It is worth noting that, by virtue of the great
expressiveness of the PLaSM operators and its
functional style of programming and dimension-
independent geometry, the development of a new plu-
gin template is very easy even for non-experienced
programmers, and usually requires a tiny amount of
time and code, that may range between 4-8 hours, and
between 10-100 lines of Python/pyplasm code.
Two important points we would like to remark
are: (a) the great expressive power of the geo-
metric language, strongly empowered by currying,
i.e. by translating the evaluation of a function—
that takes either multiple arguments or a tuple of
arguments—into evaluating a sequence of functions,
each with a single argument; (b) the ease of devel-
opment. Python/pyplasm is used even to teach ge-
ometric programming to K12 students (Solin, 2016)
(see ??https://nclab.com/3d-gallery/). Sev-
eral plugin templates used by Metior were developed
in class by students, in the framework of the computer
graphics course being taught by one of authors.
6 CONCLUSIONS
In this paper we have introduced a software architec-
ture and framework to be used in design for building
deconstruction. The immediate goal is to provide an
advanced web-service for quantity surveyors, called
to make reliable and accurate estimates of economic
and environmental returns from unused buildings, ac-
cording to new waste material regulations and to poli-
cies for land use control.
GRAPP 2017 - International Conference on Computer Graphics Theory and Applications
280