Documentation
Alexandria Phoenix
Grasshopper components for the logic every project repeats: grids, attractor fields, transforms, culls and fabrication
v2.1 Rhino 8 for Windows Overview PDF
Start
- InstallAlexandria Grasshopper Tools from Rhino's Package Manager (see Install).
- RestartRhino.
- OpenThe Alexandria Phoenix tab in Grasshopper.
Rhino 8 for Windows. The packages are in the office's shared Alexandria packages folder; full steps are in INSTALL.md. For a short introduction to show someone, there is the overview PDF.
How It Works
Each component does one job. Chain them left to right.
Cells also feed Pattern and Fabricate. Document moves data in and out of Rhino.
Shared Ports
Components that do the same job take and give the same things, so any one swaps for another.
| Port | Carries |
|---|---|
| Region | A closed planar curve to fill |
| Cells | Closed curves from any grid |
| Geometry | Anything to measure, move or cull |
| Values | One number per item |
| Domain | The range values are remapped to |
Components
Open a row for its ports.
Grid 7
Square Grid in RegionSqGrid
ShowHide
Square cells, centred on a closed planar region and trimmed to it
| Port | Type | Description |
|---|---|---|
| Region | Curve | Closed planar curve that bounds the grid. |
| Size | Number | Edge length of each square cell, in model units. |
| Cells | Output | Closed cell curves inside the region, ordered row by row. |
Hex Grid in RegionHexGrid
ShowHide
Pointy-top hexagons, centred and trimmed the same way
| Port | Type | Description |
|---|---|---|
| Region | Curve | Closed planar curve that bounds the grid. |
| Size | Number | Width of each hexagon across its flats, which is also the spacing between neighbouring cell centres, in model units. |
| Cells | Output | Closed cell curves inside the region, ordered row by row. |
Rectangle Grid in RegionRectGrid
ShowHide
Rectangular cells
| Port | Type | Description |
|---|---|---|
| Region | Curve | Closed planar curve that bounds the grid. |
| SizeX | Number | Width of each cell along the grid X axis, in model units. |
| SizeY | Number | Height of each cell along the grid Y axis, in model units. |
| Cells | Output | Closed cell curves inside the region, ordered row by row. |
Triangle Grid in RegionTriGrid
ShowHide
Equilateral triangles in alternating rows
| Port | Type | Description |
|---|---|---|
| Region | Curve | Closed planar curve that bounds the grid. |
| Size | Number | Edge length of each triangle, in model units. Rows are Size x sqrt(3) / 2 tall. |
| Cells | Output | Closed cell curves inside the region, ordered row by row. |
Diamond Grid in RegionDiaGrid
ShowHide
Interlocking diamonds
| Port | Type | Description |
|---|---|---|
| Region | Curve | Closed planar curve that bounds the grid. |
| SizeX | Number | Width of each diamond corner to corner along the grid X axis, in model units. |
| SizeY | Number | Height of each diamond corner to corner along the grid Y axis, in model units. |
| Cells | Output | Closed cell curves inside the region, ordered row by row. |
Brick Grid in RegionBrickGrid
ShowHide
Running-bond courses with an adjustable shift
| Port | Type | Description |
|---|---|---|
| Region | Curve | Closed planar curve that bounds the grid. |
| SizeX | Number | Length of each brick along the grid X axis, in model units. |
| SizeY | Number | Height of each brick and of each row, in model units. |
| Shift | Number, optional | Fraction of SizeX that every other row slides along the grid X axis. 0.5 gives the classic half bond, 0 a stack bond. Default: 0.5. |
| Cells | Output | Closed cell curves inside the region, ordered row by row. |
Panel Grid in RegionPanelGrid
ShowHide
Exact-size panels with closers at the edges and open joints
| Port | Type | Description |
|---|---|---|
| Region | Curve | Closed planar curve that bounds the panels. |
| SizeX | Number | Module width of a full panel along the grid X axis, joint included, in model units. |
| SizeY | Number | Module height of a full panel along the grid Y axis, joint included, in model units. |
| Joint | Number, optional | Gap opened between neighbouring panels without moving them. The same gap is left as a margin where the run meets the region's bounding box, and panels too small to survive it are dropped. Default: 0. |
| Cells | Output | Closed panel curves inside the region, ordered row by row. |
Voronoi 4
Attractor SeedsAttrSeeds
ShowHide
One seed per cell, pulled from its centroid toward attractor curves
| Port | Type | Description |
|---|---|---|
| Cells | Curve list | Closed planar cells from any grid, one seed each. |
| Curves | Curve list | Attractor curves. Each seed is pulled toward the nearest one. |
| Domain | Domain, optional | Where each seed sits on the line from its nearest point on the curves (0) to its cell's centroid (1). The nearest cell takes the start of the domain and the furthest the end. Default: 0 To 1. |
| Seeds | Output | One seed per cell, in input order, for Voronoi in Region. |
Jitter SeedsJitSeeds
ShowHide
One seed per cell, at a random point inside it
| Port | Type | Description |
|---|---|---|
| Cells | Curve list | Closed planar cells from any grid, one seed each. |
| Jitter | Number, optional | How far (0-1) each seed may wander from its cell's centroid, as a share of the cell's half-width and half-height. Seeds always stay inside their cell. Default: 0.5. |
| Seed | Integer, optional | Random seed for the jitter. Each cell draws from its own generator, so a cell keeps its seed when others change. Default: 0. |
| Seeds | Output | One seed per cell, in input order, for Voronoi in Region. |
Scatter SeedsScatSeeds
ShowHide
Evenly scattered random seeds in a region, optionally pulled toward curves
| Port | Type | Description |
|---|---|---|
| Region | Curve | Closed planar curve to scatter the seeds in. |
| Count | Integer | Number of seeds. |
| Curves | Curve list, optional | Optional attractor curves. Each seed is pulled toward the nearest one, as Attractor Seeds pulls cell centroids; without them the seeds stay where they were scattered. |
| Domain | Domain, optional | Where each seed sits on the line from its nearest point on the curves (0) to where it was scattered (1). The nearest seed takes the start of the domain and the furthest the end. Default: 0 To 1. |
| Seed | Integer, optional | Random seed for the scatter. Default: 0. |
| Seeds | Output | The seeds, in the order they were scattered, for Voronoi in Region. |
Voronoi in RegionVoroRegion
ShowHide
Voronoi cells from any seeds, trimmed to a region
| Port | Type | Description |
|---|---|---|
| Region | Curve | Closed planar curve that bounds the Voronoi. |
| Seeds | Point list | Points the cells grow from. |
| Cells | Output | Closed Voronoi cells inside the region, in seed order. A cell the boundary cuts in two gives two. |
Remap 7
Point RemapPtRemap
ShowHide
Distance to the nearest attractor point, remapped to a domain
| Port | Type | Description |
|---|---|---|
| Geometry | Any list | Items to measure. Points are used as they are; closed curves, surfaces and meshes are measured from their area centroid. |
| Points | Point list | Attractor points. Each item measures to the nearest one. |
| Domain | Domain, optional | Target domain for the remapped values. Default: 0 To 1. |
| Source | Domain, optional | Domain the measured distances are remapped from. Pin it to make several remaps share one scale; distances outside it then land outside the target domain rather than being clamped. Default: their own spread. |
| Values | Output | One remapped value per item, in input order. |
Curve RemapCrvRemap
ShowHide
Distance to the nearest attractor curve, remapped to a domain
| Port | Type | Description |
|---|---|---|
| Geometry | Any list | Items to measure. Points are used as they are; closed curves, surfaces and meshes are measured from their area centroid. |
| Curves | Curve list | Attractor curves. Each item measures to the nearest one. |
| Domain | Domain, optional | Target domain for the remapped values. Default: 0 To 1. |
| Source | Domain, optional | Domain the measured distances are remapped from. Pin it to make several remaps share one scale; distances outside it then land outside the target domain rather than being clamped. Default: their own spread. |
| Values | Output | One remapped value per item, in input order. |
Image RemapImgRemap
ShowHide
Image brightness under each item, remapped to a domain
| Port | Type | Description |
|---|---|---|
| Geometry | Any list | Items to sample. Points are used as they are; closed curves, surfaces and meshes are read at their area centroid. |
| Image | Text | Path to the image file. A relative path is read from the folder of the Grasshopper file. |
| Region | Curve, optional | Planar curve, usually a rectangle, that the image is stretched over. Default: the items' bounding box. |
| Domain | Domain, optional | Target domain for the remapped values. Default: 0 To 1. |
| Values | Output | Remapped brightness under each item, in input order. |
| Colors | Output | Pixel colour under each item, in input order. |
Random ValuesRandVal
ShowHide
One seeded random value per item
| Port | Type | Description |
|---|---|---|
| Geometry | Any list | Items to give values to. Any data works; empty items get no value. |
| Domain | Domain, optional | Domain the values are drawn from. Default: 0 To 1. |
| Seed | Integer, optional | Random seed; change it for a different set of values. Default: 0. |
| Values | Output | One random value per item, in input order. |
Value RemapValRemap
ShowHide
Any number list remapped to a domain
| Port | Type | Description |
|---|---|---|
| Values | Number list | Numbers to remap. |
| Domain | Domain, optional | Target domain for the remapped values. Default: 0 To 1. |
| Source | Domain, optional | Domain the values are remapped from. Pin it to make several remaps share one scale; values outside it then land outside the target domain rather than being clamped. Default: their own spread. |
| Remapped | Output | One remapped value per input value, in input order. |
Blend ValuesBlendVal
ShowHide
Two value fields combined by average, min, max or multiply
| Port | Type | Description |
|---|---|---|
| ValuesA | Number list | First list of values. |
| ValuesB | Number list | Second list of values. |
| Mode | Integer, optional | 0 weighted average, 1 minimum, 2 maximum, 3 multiply. Default: 0. |
| Weight | Number, optional | Share (0-1) of ValuesB in the weighted average: 0 gives ValuesA, 1 gives ValuesB. Default: 0.5. |
| Values | Output | One blended value per pair, in input order. |
Step ValuesStepVal
ShowHide
Values snapped to a step, with a type index per distinct size
| Port | Type | Description |
|---|---|---|
| Values | Number list | Numbers to round. Empty items stay empty. |
| Step | Number | Increment to round to. Must be greater than zero. |
| Mode | Integer, optional | 0 rounds to the nearest multiple, 1 rounds down, 2 rounds up. Default: 0. |
| Stepped | Output | The rounded values, in input order. |
| Types | Output | Index of each value's stepped size among the distinct sizes, smallest first. |
Transform 3
Scale by ValuesScaleVal
ShowHide
Scales each item about its own centroid by its matching value
| Port | Type | Description |
|---|---|---|
| Geometry | Any list | Items to scale. Closed curves, surfaces and meshes scale about their area centroid; other geometry about its bounding-box centre. |
| Factors | Number list | Scale factor per item; 1 leaves the item unchanged. Factors at or below zero give an empty item. |
| Scaled | Output | Scaled copies of the items, in input order. |
Rotate by ValuesRotateVal
ShowHide
Rotates each item about its own centroid by its matching angle
| Port | Type | Description |
|---|---|---|
| Geometry | Any list | Items to rotate. Closed curves, surfaces and meshes turn about their area centroid; other geometry about its bounding-box centre. |
| Angles | Number list | Rotation per item, in degrees. Positive angles turn counter-clockwise as seen from the tip of the Axis, as in the Top view for world Z. |
| Axis | Vector, optional | Direction of the rotation axis through each item's centre. Default: world Z. |
| Rotated | Output | Rotated copies of the items, in input order. |
Offset by ValuesOffsetVal
ShowHide
Insets or grows each closed curve by its matching distance
| Port | Type | Description |
|---|---|---|
| Curves | Curve list | Closed planar curves to offset. |
| Distances | Number list | Offset per curve, in model units. Positive insets, negative grows, zero keeps the curve as it is. |
| Offset | Output | One offset curve per input curve, in input order. |
Cull 1
Percent CullPctCull
ShowHide
Randomly removes a share of the items on one side of a value threshold
| Port | Type | Description |
|---|---|---|
| Geometry | Any list | Items to cull. Any data works; must match Values in length. |
| Values | Number list | One value per item, usually a distance or area. Remapped to 0-1 before the threshold is applied. |
| Threshold | Number, optional | Remapped value (0-1) that splits the list into candidates and protected items. Default: 0.5. |
| Percent | Number, optional | Share (0-1) of the candidates to remove. Default: 0.5. |
| Seed | Integer, optional | Random seed that picks which candidates are removed. Default: 0. |
| Invert | Boolean, optional | Make the items below the Threshold the candidates. Default: False. |
| Kept | Output | Items that survive the cull, in input order. |
| Culled | Output | Items that were removed, in input order. |
| Pattern | Output | One boolean per item, True where the item was kept. |
Pattern 2
Lattice PatternLattice
ShowHide
A chord lattice inside every cell, picked with one index
| Port | Type | Description |
|---|---|---|
| Cells | Curve list | Closed cell curves, one lattice each. Curved edges are read as straight lines between their corners. |
| Pattern | Integer, optional | Which combination of chord families to draw, in the order given above. Wraps at 1023. Default: 0 (Outline alone). |
| Inner | Number, optional | Size of the inner ring, from 0 (collapsed onto the centroid) to 1 (on the outline). Default: 0.5. |
| Enclose | Boolean, optional | Also resolve each cell's chords into the closed shapes they enclose, for cutting rather than engraving. Slower than the lines alone, except where cells are copies of one another. Default: False. |
| Lines | Output | The chords, one branch per cell. Zero-length and repeated chords are dropped within a cell, but neighbouring cells each draw the edge they share. |
| Shapes | Output | The closed shapes the chords enclose, one branch per cell. Empty unless Enclose is on; the cell must be planar. |
| Families | Output | Names of the chord families Pattern draws. |
Voronoi PatternVoroPatt
ShowHide
A Voronoi subdivision of every cell, picked with one index
| Port | Type | Description |
|---|---|---|
| Cells | Curve list | Closed planar cell curves, one pattern each. |
| Pattern | Integer, optional | Which combination of seed families to use, in the order given above. Wraps at 120. Default: 0 (InnerVert + InnerEval). |
| Inner | Number, optional | Size of the inner copy: 1 is the cell itself, 0 collapses it onto the centroid, and values above 1 put its seeds outside the cell. Default: 0.5. |
| OuterAt | Number, optional | Where along each cell edge the OuterEval seeds sit, from 0 (its start) to 1 (its end). Default: 0.5. |
| InnerAt | Number, optional | Where along each inner edge the InnerEval seeds sit, from 0 to 1. Default: 0.5. |
| Shapes | Output | The Voronoi regions clipped to the cell, one branch per cell, running the same way round as the cell. |
| Seeds | Output | The seed points each pattern grew from, one branch per cell. |
| Families | Output | Names of the seed families Pattern uses. |
Fabricate 4
Fold CellsFold
ShowHide
Folds cells up along creases into flaps, wedges or pyramids
| Port | Type | Description |
|---|---|---|
| Cells | Curve tree | Closed planar cells to fold. |
| Creases | Curve tree, optional | Optional. Crease lines, one branch per cell. Ignored in Mode 2. |
| Angles | Number tree | Fold angle per cell, in degrees; the last value repeats, so one angle folds every cell alike and a Values list drives a field. |
| Mode | Integer, optional | 0 folds open flaps, 1 closes each flap into a solid wedge, 2 raises a closed pyramid on each cell. Default: 0. |
| Folded | Output | Folded pieces, wedges or pyramids, one branch per cell. |
| Hinges | Output | The edge each piece turned about, parallel to Folded; empty where a piece stayed flat and in Mode 2. |
UnfoldUnfold
ShowHide
Flattens folded geometry into cut and score lines
| Port | Type | Description |
|---|---|---|
| Geometry | Brep tree | Folded faces or closed solids to flatten. |
| Spacing | Number, optional | Gap between neighbouring pieces in the row. Default: 10. |
| Cuts | Output | Outside edges to cut, one branch per flat piece. |
| Scores | Output | Shared edges to score, one branch per flat piece. |
| Bounds | Output | Rectangle each flat piece occupies, parallel to the branches. |
Panel TabsPanelTabs
ShowHide
Flat blank of a folded panel: face, folds and tabs, plus creases
| Port | Type | Description |
|---|---|---|
| Panel | Curve | Closed planar outline of the panel face. |
| Fold | Number | Width of the fold zone turned back along each side. |
| TabWidth | Number, optional | Optional. How far each tab reaches beyond its fold zone; ignored when a Profile is given. |
| TabHeight | Number, optional | Optional. Height of each tab; ignored when a Profile is given. |
| Spacing | Number | Distance between tab centres; give Frame Slots the same value. |
| Profile | Curve, optional | Optional. Closed planar curve drawn as the right-hand tab, used in place of a rectangle. |
| Plane | Plane, optional | Plane the panel is laid out in. Default: the panel's own plane with Y running up the panel, world XY when it lies flat. |
| Blank | Output | The outline to cut: face, fold zones and tabs as one closed curve. |
| Creases | Output | The two fold lines to score, left then right. |
| Tabs | Output | The tab outlines, left and right in pairs from the bottom up. |
| Count | Output | How many tabs were placed on each side. |
Frame SlotsFrameSlots
ShowHide
The frame slots that line up with Panel Tabs
| Port | Type | Description |
|---|---|---|
| Frame | Curve | Closed planar outline of the frame face. |
| SlotWidth | Number | Width of each slot before clearance. |
| SlotHeight | Number | Height of each slot before clearance. |
| SpacingX | Number | Distance between the centres of the two slot columns. |
| SpacingY | Number | Distance between slot rows; give it the panel's Spacing. |
| Clearance | Number, optional | Added around every slot on each side. Default: 0. |
| Plane | Plane, optional | Plane the frame is laid out in. Default: the frame's own plane with Y running up the frame, world XY when it lies flat. |
| Slots | Output | The slot outlines, left and right in pairs from the bottom up. |
| Count | Output | How many rows of slots were placed. |
Geometry 2
Region TrimTrim
ShowHide
Splits curves into what lies inside and outside a region, keeping closed curves closed
| Port | Type | Description |
|---|---|---|
| Curves | Curve list | Curves to trim, open or closed. Curves off the region's plane are projected onto it first. |
| Region | Curve | Closed planar curve to trim against. |
| Inside | Output | Pieces inside the region, in input order. |
| Outside | Output | Pieces outside the region, in input order. |
Plane BoundsBounds
ShowHide
Bounding rectangle and box square to any plane, for stock sizes
| Port | Type | Description |
|---|---|---|
| Geometry | Any list | Items to measure. |
| Plane | Plane, optional | Plane to measure in. Default: world XY. |
| Rectangle | Output | The bounding rectangle, drawn on the plane. |
| Box | Output | The bounding box, square to the plane. |
| Center | Output | Centre of the box. |
| SizeX | Output | Size along the plane's X axis. |
| SizeY | Output | Size along the plane's Y axis. |
| SizeZ | Output | Size along the plane's Z axis. |
Display 1
Material PreviewPreview
ShowHide
Shaded preview in a chosen colour and opacity
| Port | Type | Description |
|---|---|---|
| Geometry | Geometry list | Geometry to preview. |
| Color | Colour, optional | Preview colour. Default: Phoenix orange (242, 101, 34). |
| Opacity | Number, optional | Preview opacity, from 0 (invisible) to 1 (solid). Default: 1. |
Document 4
Layer GeometryLayerGeo
ShowHide
Live geometry from a Rhino layer, updating as the layer changes
| Port | Type | Description |
|---|---|---|
| Layer | Text | Full path of the layer, nested layers joined with a double colon. |
| Sublayers | Boolean, optional | Also read the layers nested under it. Default: False. |
| Geometry | Output | Geometry of each object, layer by layer, oldest first. |
| Names | Output | Rhino object name of each item, blank when it has none. |
Bake to LayerBake
ShowHide
Bakes branches onto named, coloured layers, replacing on each press
| Port | Type | Description |
|---|---|---|
| Geometry | Any tree | Geometry to bake, one branch per layer. |
| Layers | Text list | Layer for each branch, nested layers joined with a double colon. |
| Color | Colour list, optional | Layer colour, one per layer name; the last repeats. Default: new layers get Phoenix orange (242, 101, 34) and existing layers keep theirs. |
| Replace | Boolean, optional | Clear each layer before baking onto it. Default: False. |
| Bake | Boolean | Set True, usually from a Button, to bake. |
| Count | Output | Number of objects baked. |
| Report | Output | One line per branch saying what was baked, removed and skipped. |
Export ParametersParamOut
ShowHide
Writes the canvas's inputs to a CSV, one section per variant
| Port | Type | Description |
|---|---|---|
| File | Text | Path of the CSV file to write; relative paths start at this .gh file. |
| Section | Text, optional | Optional. Section name written into every row. |
| Export | Boolean | Set True, usually from a Button, to write the file. |
| Count | Output | How many inputs were written. |
| Report | Output | What was written, or why nothing was. |
Apply ParametersParamIn
ShowHide
Sets the canvas's inputs from that CSV
| Port | Type | Description |
|---|---|---|
| File | Text | Path of the CSV file to read; relative paths start at this .gh file. |
| Section | Text, optional | Only apply rows whose section matches. Default: every row. |
| Apply | Boolean | Set True, usually from a Button, to apply the file. |
| Count | Output | How many inputs were set. |
| Report | Output | One line per row saying what was set or skipped. |
Utility 1
Feet InchesFtIn
ShowHide
Lengths as architectural feet and inches
| Port | Type | Description |
|---|---|---|
| Values | Number list | Lengths in model units. Empty items stay empty. |
| Precision | Integer, optional | Smallest fraction of an inch, as its denominator: 16 rounds to sixteenths, 1 to whole inches. Default: 16. |
| Text | Output | One feet-and-inches string per length, in input order. |
No component matches.
Template Definition
alexandria_phoenix_master_v1.0.gh with its .3dm shows the layout every definition follows. Logic runs along the top; each input group sits below the stage it feeds.
| Group | Colour | Holds |
|---|---|---|
| Input | Blue | Variables and their relays |
| Logic | Orange | Phoenix components |
| Output | Green | Results to bake or pass on |
| Display | Violet | Material Preview |
Showcase
Below the template, every component runs in its simplest form: one column per section of the Phoenix tab and one titled row per sample, each on its own tile in the .3dm. The section headers and row titles are the one place the master uses notes.
| Column | Rows |
|---|---|
| Grid | All seven grids, each on its own region |
| Voronoi | Hex Grid → Attractor Seeds · Hex Grid → Jitter Seeds · Scatter Seeds, each → Voronoi in Region |
| Geometry | Region Trim · Plane Bounds |
| Remap | Layer Geometry → Point Remap + Image Remap → Blend Values → Value Remap → Step Values → Scale by Values |
| Transform | Random Values → Rotate by Values · Offset by Values |
| Cull | Random Values → Percent Cull |
| Pattern | Lattice Pattern · Voronoi Pattern |
| Fabricate | Lattice → Fold Cells → Unfold → Bake to Layer · Panel Tabs → Frame Slots |
| Display | Material Preview |
| Document | Layer Geometry · Export Parameters + Apply Parameters |
| Utility | Feet Inches |
alexandria_phoenix_master_parameters.csv holds the canvas's inputs in two sections, Default and Dense. Set Section and press Apply to switch between them.
Standards
| Rule | Why |
|---|---|
| Every variable feeds a typed relay in its group | Swap a variable, rewire one point |
| Logic outputs pass through relays too | Swap a component, rewire one point |
| Groups get short names and a role colour | Readable at a glance |
| Only Display components preview | The viewport shows what matters |
| No panels or notes | The layout explains itself |
| One Rhino layer per referenced input | Inputs are easy to find and replace |
Install
Two packages for Rhino 8 on Windows, both from Rhino's Package Manager: Alexandria Rhino Tools (the toolbar, its commands and the display modes) and Alexandria Grasshopper Tools (the components). They live in the office's shared Alexandria packages folder rather than on McNeel's public server.
- Add the folderOnce per computer. In Tools > Options > Advanced, replace the value of
Rhino.Options.PackageManager.Sourceswith the one inINSTALL.md, ready to paste. - InstallRun
PackageManager, search forAlexandriaand install both packages. Tick Automatically update packages when Rhino starts. - RestartRhino.
- Set upType
AlexandriaSetup. It adds Alexandria Tools as a tab after Standard, where it stays through updates, and installs the display modes.
With automatic updates on, a new release installs the next time Rhino starts; otherwise it's in the Package Manager's Updates tab. Click Alexandria Setup again after an update. The render buttons need V-Ray for Rhino. Full steps, including moving from the old install, are in INSTALL.md.
Alexandria Tools
A Rhino toolbar for drawing and rendering, from the Alexandria Rhino Tools package (see Install). Each button runs one of the package's Alexandria… commands.
| Button | Does |
|---|---|
| Alexandria Setup | Adds this tab and installs the DM display modes that ship in the package. |
| Populate Model | Adds the standard DETAILS and DESIGN layers, the annotation styles, the render backdrop (wall, modeled ground, scale figure) and the world light. |
| Set Material | Gives each sublayer of a layer you choose a plaster material in its display colour, MAT_1, MAT_2 and on, replacing any it had. DESIGN::ILLUMS keeps its own. |
| Day Render | V-Ray's bright, neutral studio day, with the lighting on DESIGN::ILLUMS off. |
| Night Render | A dim, neutral night where lit sign faces carry the image, with the lighting on DESIGN::ILLUMS back on. |
| Standard Dimension | Left click: a dimension. Right click: a leader. Both in the Alexandria annotation styles, filed under DETAILS::ANNOTATIONS. |
| Populate Detail | Adds the 2D drawing of a sign detail from the detail library where you click, in the Alexandria styles. |
| Save as Rhino 7 | Writes <name>_r7.3dm next to the model. The open model keeps its name and path. |
Keep illuminated sign faces and their lights on DESIGN::ILLUMS: Day turns them off and Night back on as you set them up. Other materials and lights stay as they are.
Drawings
Annotation styles and display modes shared by every Alexandria drawing. The details are in STANDARDS.md.
Annotation
Oswald, capitals. Dimensions go on DETAILS::ANNOTATIONS::DIMENSIONS (grey 128,128,128), leaders, notes and titles on DETAILS::ANNOTATIONS::CALLOUTS (grey 50,50,50). Sizes are paper inches, scaled by each style's model space scale (4 by default, 3″ = 1′-0″, so a full-size detail gets 0.5″ dimension text). Populate Model adds the styles; alexandria_annotation_styles.3dm shows each in use.
| Style | Shape |
|---|---|
| Alexandria Dimension | 1/8″ text. Feet and inches to 1/16″, no zero feet. Text centred on the line, always level, masked 0.0375″ each side. No arrowheads. Extension lines start 0.05″ off the design and run 0.075″ past the line. |
| Alexandria Leader | 0.1375″ text. 0.055″ dot, a leg at any angle, 0.25″ horizontal landing, text centred on the landing 0.1″ past its end. |
| Alexandria Text | 0.1375″ text, top left aligned. |
| Alexandria Title | 3/16″ Oswald Bold, centred. |
Display Modes
Exported to standards/display_modes/ and installed by Alexandria Setup. To import them by hand, download alexandria_display_modes.zip and use Options > View > Display Modes > Import.
| Mode | Background | Look |
|---|---|---|
| DM-WORKING | White | Off-white shading, dark grey edges, grid and axes, no shadows |
| DM-AUTOCAD | Dark slate | DM-WORKING's shading on a CAD-style background |
| DM-DIAGRAM | White | Flat mid-grey with one light, thin dark edges |
| DM-DIAGRAM-SHADOW | White | Flat white with hard shadows on a shadow-only ground |
Rendering
Day Render and Night Render set the same V-Ray values, so they run in either order. Day turns off the lighting on DESIGN::ILLUMS (self-illumination and V-Ray lights) and Night restores it, so give sign faces a V-Ray Generic material: its colour reads by day and its glow at night.
| Setting | Day | Night |
|---|---|---|
| Environment (background, GI, reflections) | × 1 | × 0.05 |
| World light (directional, front left, 31° up) | 0.0625 | Same |
| Sun, ground plane | Off | Off |
| Camera | ISO 625, f/8, 1/100 s | Same |
| White balance | Neutral | Neutral |
| Image size | 3840 × 2160 (4K, 16:9) | Same |
Develop
Each component is one Python 3 script. The scripts are the source of truth; the plugin is built from them.
- Edit
src/<family>/<name>.py. - BuildIn Rhino 8, run
_-RunPythonScript "tools\build.py". - TestRestart Rhino and test.
- ReleaseCommit and push. Pushing
maincopies the packages into the shared Alexandria packages folder. - DocumentRefresh these docs with
python tools/make_site.py.
The Docstring Is the Spec
"""Point Remap (PtRemap)
Measures how far each item sits from its nearest attractor point
and remaps those distances onto a target domain.
Inputs:
Geometry: Items to measure.
Points: Attractor points.
Domain: Target domain. Default: 0 To 1.
Outputs:
Values: One remapped value per item.
"""
| In the script | In Grasshopper |
|---|---|
First line Name (NickName) | Component name and nickname |
Folder src/grid | Ribbon panel Grid |
RunScript arguments | Inputs, in order |
list[...] annotation | List access |
Default: in a description | Optional input |
Full rules in STANDARDS.md.