Assignment #7: Initial CAD Tool Suite
Based on your CAD tool proposals, here is a suite of tools,
broken down into small manageable tasks
that should not be too difficult to prototype.
Each person should take responsibility for one tool,
but working with others is encouraged;
at the very least you will have to make sure that
the output of one tool gets accepted as input by other tools,
and that the tools properly obtain and deliver data
from and to the general database.
Database:
Refine the database format and extend the format
to capture geometrical information as outlined below.
Create suitable read and write modules as well as
partial converters from and to Unigrafix.
NetSketch:
(See: Sefler: Sketchtalk; Bacher: Pint2Point)
A two-way interactive drawing panel
connecting two users over the net.
Concentrate on drawing panel.
Assume use of telephone for discussion.
ModelSlicer:
(See: Downs: section 2.2; Bukowsky: FloorForm).
Starts with a 3D Form.Z model and a specification of
the number or separations of floor planes for each building wing;
produces the floor plan outlines for each floor.
These outlines should be usable as input to either the
BubbleDiagramBuilder or to the FloorSpaceManager.
BubbleDiagramBuilder:
(Many have proposed something like this).
Reads list of desired spaces and sizes from database;
creates visual display representing each space as a circle,
ellipse, or rectangle with size proportional to desired area.
In bubble, size information and type tag is displayed.
Ellipses and rectangles can be deformed into other aspect ratios
by grabbing handles in a MacDraw style, keeping area constant.
(Perhaps one handle, lower left corner, shown in red,
could be used to graphically change area of specified space type;
alternatively, a CTRL-mouse-drag operation could be used for that).
Bubbles can be moved around by grabbing them Enywhere,
except on handles.
Bubbles can be cut; when (a, say, vertical) cut-line is moved,
area and percentages of the two halves are displayed in real time;
when the cut is executed, the two halves form separate bubbles
of appropriate sizes.
Bubbles can be grouped and merged into a single bubble.
If bubbles of the same type are joined, a bigger bubble
of the same type will result.
If bubbles of different types are merged, a compound bubble
with a special color will be generated.
FloorSpaceManager:
(See Downs: 2.1; Simmons: 1.1; Bacher: Alet)
Reads bubbles or rectangles of desired "rooms"
as well as bubbles or floor outlines of available "partitions".
Allows interactive movement of room bubbles into partitions,
while keeping track (instantly) of occupied/free space in each partition
as well as certain sub-totals of particular space types.
Writes generated floorspace allocation back into database.
AdjacencyChecker:
(See Downs, Keller, Simmons)
This tool either reads data from an adjacency matrix
or it permits interactive editing of a bubble diagram,
enhancing the latter with rubberbands between bubbles
which have different width to indicate strength,
and different colors to indicate whether
adjacencies are desired or repulsive.
These rubber bands are maintained when the bubbles are moved.
When a bubble is split, the attached rubberbands reattach themselves
to the closer of the two halves.
When queried (or after each move when bubble is deselected)
some weighted sum of the lengths of the rubberbands
is calculated and displayed.
This permits a quick evaluation of a floorplan at the rectangle level.
FloorPlanGenerator: [-Rick L.]
(See Lewis #1)
Converts schematic rectangle based floor partitioning
into an extrudable floor plan with default placement
of windows and doors.
Room rectangles should be placed on union of floor rectangles;
difference between the two defines corridors.
Adjacent rectangles can be connected by doors, partitions,
or "opens connections" (such as between two adjacent corridor sections.
Description is maintained in schematic form
so that it can easily be edited by the user.
When all symbols are in proper place,
the schematic is converted into a geometrical form
suitable for extrusion with some Unigrafix tool;
e.g. merged and shrunk floor polygons for each room;
plus outer contour for skin of building.
FloorPlanExtruder:
(See Lewis #2)
This is the tool that actually extrudes the floorplan
into a simple walkthru model, creating inside-viewable boxes
for all rooms with suitably tailored floor and ceiling polygons.
The heigth of extrusion may be table driven, where
different room types have a different default extrusion height.
The tool inserts previously defined symbols for doors and windows,
and (in later turns of the tool development spiral) will include
models of stairs generated by StairMaster (Lewis).
Geometry Extension to DataBase.
This is mostly another version of UniGrafix/Glide
with a modified syntax to fit the database format.
Major keywords are g_;
this should give you an idea of what I have in mind:
- {g_v ID x y z {c ref_color} {n dx dy dz} }
- {g_e ID ref_v1 ref_v2 {c ref_color} }
- {g_w ID ref_v1 ref_v2 ref_v3 ... {c ref_color} }
- {g_f ID ref_v1 ref_v2 ref_v3 ... {c ref_color} }
-- perhaps limited to a single contour.
- {g_r ID cent_x cent_y dim_x dim_y {c ref_color} {t ref_type} {s "string"} } }
-- this is a new construct for efficiency reasons
- {g_def ID [any of the above commands] }
- {g_i ID ref_def {xform} {xform} ... }
- {g_a ID ref_def {xform} {xform} ... iter_num {xform} {xform} ... }
-- {xform}:= {rx angle}, {ry angle}, {mx}, {sx factor}, {sa factor}, {tx distance}, and so on.
- {color ID intensity hue saturation}
- {colrgb ID red green blue}
- {comments "anything goes -- except braces" }