# Cd Calculator

> Python calculators for geometry analysis, structural checking, solar calculations, panel optimization, mesh analysis, material estimation, and fabrication cost estimation for AEC computational design

- **Type:** Skill
- **Install:** `agentstack add skill-amanbh997-claude-skills-for-computational-designers-cd-calculator`
- **Verified:** Pending review
- **Seller:** [Amanbh997](https://agentstack.voostack.com/s/amanbh997)
- **Installs:** 0
- **Category:** [Agent Skills](https://agentstack.voostack.com/c/agent-skills)
- **Latest version:** 0.1.0
- **License:** MIT
- **Upstream author:** [Amanbh997](https://github.com/Amanbh997)
- **Source:** https://github.com/Amanbh997/Claude-skills-for-Computational-Designers/tree/main/skills/cd-calculator

## Install

```sh
agentstack add skill-amanbh997-claude-skills-for-computational-designers-cd-calculator
```

Requires the [AgentStack CLI](https://agentstack.voostack.com/docs/cli). Works with Claude Code, Cursor, and any MCP-compatible agent.

## About

# Computational Design Calculator

## Calculator Overview

This skill provides **7 production-grade Python calculators** purpose-built for computational design workflows in Architecture, Engineering, and Construction (AEC). Each calculator is a standalone command-line tool that accepts domain-specific parameters and returns precise, well-formatted results.

All calculators share common design principles:

- **Human-readable output by default** with clear section headers, formatted tables, and summary statistics.
- **`--json` flag** on every calculator for structured machine-readable output, enabling pipeline integration with parametric design tools, Grasshopper scripts, Dynamo graphs, or custom automation.
- **Strict input validation** with meaningful error messages that guide the user toward correct usage.
- **SI units throughout** (millimeters for geometry, kilonewtons for forces, degrees for angles) with Imperial equivalents noted where relevant.
- **Deterministic calculations** based on published engineering formulas (Eurocode, ASCE, ASHRAE) so results can be cross-checked and audited.

### Calculator Index

| # | Calculator | Script | Primary Domain |
|---|-----------|--------|---------------|
| 1 | Geometry Calculator | `geometry_calculator.py` | Cross-section properties |
| 2 | Structural Checker | `structural_checker.py` | Member sizing & verification |
| 3 | Solar Calculator | `solar_calculator.py` | Solar position & radiation |
| 4 | Panel Optimizer | `panel_optimizer.py` | Facade rationalization |
| 5 | Mesh Analyzer | `mesh_analyzer.py` | Mesh quality & topology |
| 6 | Material Estimator | `material_estimator.py` | Quantity takeoff & carbon |
| 7 | Fabrication Calculator | `fabrication_calculator.py` | CNC / 3D print / laser costing |

### Directory Structure

```
cd-calculator/
  SKILL.md                          # This file
  references/
    formulas.md                     # Complete formula reference
  scripts/
    geometry_calculator.py          # Cross-section geometry
    structural_checker.py           # Beam/column/deflection checks
    solar_calculator.py             # Solar position & radiation
    panel_optimizer.py              # Panel clustering & waste
    mesh_analyzer.py                # OBJ mesh quality analysis
    material_estimator.py           # Material quantity takeoff
    fabrication_calculator.py       # Fabrication time & cost
```

---

## 1. Geometry Calculator

**Script:** `scripts/geometry_calculator.py`

Computes cross-section properties for common AEC shapes used in structural analysis, fabrication planning, and parametric design. All inputs are in millimeters; all outputs are in mm-based units (mm^2, mm^4, etc.).

### Supported Shapes

| Shape | Description | Key Parameters |
|-------|------------|----------------|
| `rectangle` | Solid rectangular section | width, height |
| `circle` | Solid circular section | radius |
| `triangle` | Solid triangular section | base, height |
| `i-beam` | Standard I/H section | width, height, flange thickness, web thickness |
| `hollow-rect` | Rectangular hollow section (RHS) | width, height, wall thickness |
| `hollow-circle` | Circular hollow section (CHS) | outer radius, inner radius |
| `l-shape` | L-angle section | width, height, thickness |
| `t-shape` | T-section | width, height, flange thickness, web thickness |
| `polygon` | Arbitrary polygon | vertex coordinates |

### Parameters

| Parameter | Type | Unit | Description |
|-----------|------|------|-------------|
| `--shape` | string | -- | Shape type (required) |
| `--width` | float | mm | Overall width |
| `--height` | float | mm | Overall height |
| `--radius` | float | mm | Radius for circular sections |
| `--outer-radius` | float | mm | Outer radius for hollow circle |
| `--inner-radius` | float | mm | Inner radius for hollow circle |
| `--base` | float | mm | Base width for triangle |
| `--flange-thickness` | float | mm | Flange thickness for I-beam / T-shape |
| `--web-thickness` | float | mm | Web thickness for I-beam / T-shape |
| `--wall-thickness` | float | mm | Wall thickness for hollow sections |
| `--thickness` | float | mm | Leg thickness for L-shape |
| `--vertices` | string | mm | Comma-separated x,y pairs for polygon |
| `--json` | flag | -- | Output as JSON |

### Example Usage

```bash
# Solid rectangle 300 x 500 mm
python geometry_calculator.py --shape rectangle --width 300 --height 500

# Circular section with 150 mm radius
python geometry_calculator.py --shape circle --radius 150

# Standard I-beam
python geometry_calculator.py --shape i-beam --width 200 --height 400 --flange-thickness 15 --web-thickness 10

# Hollow rectangular section
python geometry_calculator.py --shape hollow-rect --width 300 --height 300 --wall-thickness 12

# JSON output for pipeline integration
python geometry_calculator.py --shape rectangle --width 300 --height 500 --json
```

### Sample Output

```
========================================
  GEOMETRY CALCULATOR - Rectangle
========================================

  Dimensions:
    Width  (b) :   300.00 mm
    Height (h) :   500.00 mm

  Section Properties:
    Area             :   150,000.00 mm²
    Perimeter        :     1,600.00 mm
    Centroid (x, y)  :   (150.00, 250.00) mm

  Second Moment of Area:
    Ix (about x-axis):   3,125,000,000.00 mm⁴
    Iy (about y-axis):   1,125,000,000.00 mm⁴

  Section Modulus:
    Sx               :    12,500,000.00 mm³
    Sy               :     7,500,000.00 mm³

  Radius of Gyration:
    rx               :       144.34 mm
    ry               :        86.60 mm
========================================
```

---

## 2. Structural Checker

**Script:** `scripts/structural_checker.py`

Performs quick structural sizing and verification checks for steel members based on simplified Eurocode 3 and ASCE 7 formulas. Designed for early-stage feasibility assessments, not detailed design.

### Check Types

| Check | Description | Key Inputs |
|-------|------------|------------|
| `beam` | Bending capacity and section sizing | span, UDL, steel grade |
| `column` | Axial capacity and buckling check | axial load, height, steel grade |
| `deflection` | Serviceability deflection check | span, UDL, section properties |

### Parameters

| Parameter | Type | Unit | Description |
|-----------|------|------|-------------|
| `--check` | string | -- | Check type: beam, column, deflection |
| `--span` | float | mm | Beam span or effective length |
| `--load` | float | kN/m or kN | UDL for beams, axial for columns |
| `--steel-grade` | string | -- | S235, S275, S355 |
| `--height` | float | mm | Column height |
| `--buckling-length-factor` | float | -- | Effective length factor (default 1.0) |
| `--moment-of-inertia` | float | mm^4 | Section Ix for deflection check |
| `--section` | string | -- | Named section (e.g., IPE300) |
| `--deflection-limit` | string | -- | L/250, L/360, or custom (default L/250) |
| `--json` | flag | -- | Output as JSON |

### Example Usage

```bash
# Size a beam: 6m span, 15 kN/m UDL, S355 steel
python structural_checker.py --check beam --span 6000 --load 15 --steel-grade S355

# Check a column: 2000 kN axial, 4m height, S355
python structural_checker.py --check column --load 2000 --height 4000 --steel-grade S355

# Deflection check with named section
python structural_checker.py --check deflection --span 8000 --load 10 --section IPE300
```

### Sample Output

```
========================================
  STRUCTURAL CHECKER - Beam Sizing
========================================

  Input:
    Span             :  6,000 mm (6.00 m)
    UDL              :  15.00 kN/m
    Steel Grade      :  S355 (fy = 355 MPa)

  Bending Analysis:
    Max Moment (M)   :  67.50 kN·m
    Required Sx      :  190,141 mm³
    Suggested Section:  IPE 270 (Sx = 429,000 mm³)

  Shear Analysis:
    Max Shear (V)    :  45.00 kN
    Shear Utilization:  0.12  [OK]

  Deflection:
    Max Deflection   :  10.82 mm
    Limit (L/250)    :  24.00 mm
    Utilization      :  0.45  [OK]

  Overall Status:    PASS
========================================
```

---

## 3. Solar Calculator

**Script:** `scripts/solar_calculator.py`

Computes solar geometry, shadow projections, and photovoltaic parameters for any location on Earth at any date and time. Essential for daylighting analysis, shadow studies, and PV system sizing in early-stage design.

### Parameters

| Parameter | Type | Unit | Description |
|-----------|------|------|-------------|
| `--latitude` | float | deg | Site latitude (-90 to 90) |
| `--longitude` | float | deg | Site longitude (-180 to 180) |
| `--date` | string | -- | Date in YYYY-MM-DD format |
| `--time` | string | -- | Solar time in HH:MM format |
| `--annual-summary` | flag | -- | Monthly solar data summary |
| `--shadow-analysis` | flag | -- | Shadow length computation |
| `--object-height` | float | m | Object height for shadow analysis |
| `--pv-tilt` | flag | -- | Optimal PV tilt calculation |
| `--json` | flag | -- | Output as JSON |

### Example Usage

```bash
# Solar position for London at noon on summer solstice
python solar_calculator.py --latitude 51.5 --longitude -0.12 --date 2025-06-21 --time 12:00

# Annual summary for Dubai
python solar_calculator.py --latitude 25.2 --longitude 55.3 --annual-summary

# Shadow analysis for a 30m building in New York
python solar_calculator.py --latitude 40.7 --longitude -74.0 --shadow-analysis --object-height 30

# Optimal PV tilt for Berlin
python solar_calculator.py --latitude 52.5 --longitude 13.4 --pv-tilt
```

### Sample Output

```
========================================
  SOLAR CALCULATOR - Position
========================================

  Location:
    Latitude         :   51.500° N
    Longitude        :   -0.120° W
    Date             :   2025-06-21

  Solar Position at 12:00:
    Altitude         :   62.07°
    Azimuth          :  180.00° (South)

  Day Information:
    Sunrise          :   03:43 solar time
    Sunset           :   20:21 solar time
    Day Length       :   16h 38m

  Shadow (per 1m object):
    Shadow Length    :    0.53 m
    Shadow Direction :    0.00° (North)
========================================
```

---

## 4. Panel Optimizer

**Script:** `scripts/panel_optimizer.py`

Rationalizes facade panel inventories by clustering similar panel dimensions within a configurable tolerance, then estimates material waste and cost impacts. Critical for design-for-manufacture workflows in curtain wall and cladding systems.

### Parameters

| Parameter | Type | Unit | Description |
|-----------|------|------|-------------|
| `--panels` | string | mm | Comma-separated WxH panel dimensions |
| `--tolerance` | float | mm | Grouping tolerance (default 10) |
| `--sheet-width` | float | mm | Raw sheet/stock width |
| `--sheet-height` | float | mm | Raw sheet/stock height |
| `--cost-per-unique` | float | $ | Cost premium per unique type (default 500) |
| `--json` | flag | -- | Output as JSON |

### Example Usage

```bash
# Basic panel clustering
python panel_optimizer.py --panels "1200x800,1200x810,1205x800,1200x800,1190x795,1200x800,2400x800,2400x810"

# With sheet size for waste estimation
python panel_optimizer.py --panels "1200x800,1200x810,1205x800" --tolerance 15 --sheet-width 3000 --sheet-height 2000

# Cost-focused analysis
python panel_optimizer.py --panels "1200x800,1200x810,1205x800,1500x900,1510x895" --cost-per-unique 750
```

### Sample Output

```
========================================
  PANEL OPTIMIZER - Clustering
========================================

  Input Summary:
    Total Panels     :   8
    Raw Unique Sizes :   5
    Tolerance        :  10 mm

  Panel Families:
    Family 1 (1200 x 800 mm):
      Members: 1200x800, 1200x810, 1205x800, 1190x795, 1200x800, 1200x800
      Count: 6
    Family 2 (2400 x 800 mm):
      Members: 2400x800, 2400x810
      Count: 2

  Rationalization:
    Unique types (before) :   5
    Unique types (after)  :   2
    Reduction             :  60.0%

  Cost Impact:
    Uniqueness premium    :  $1,000.00
    Savings vs. raw       :  $1,500.00
========================================
```

---

## 5. Mesh Analyzer

**Script:** `scripts/mesh_analyzer.py`

Evaluates mesh quality and topological properties for architectural meshes. Reads standard OBJ files or accepts inline vertex/face data. Essential for assessing mesh suitability for FEA, fabrication unfolding, and rendering.

### Parameters

| Parameter | Type | Unit | Description |
|-----------|------|------|-------------|
| `--file` | string | -- | Path to OBJ file |
| `--vertices` | string | -- | Inline vertices: "x,y,z;x,y,z;..." |
| `--faces` | string | -- | Inline faces: "i,j,k;i,j,k;..." |
| `--json` | flag | -- | Output as JSON |

### Example Usage

```bash
# Analyze an OBJ file
python mesh_analyzer.py --file model.obj

# Analyze inline mesh data (a simple quad split into two triangles)
python mesh_analyzer.py --vertices "0,0,0;1,0,0;1,1,0;0,1,0" --faces "0,1,2;0,2,3"

# JSON output
python mesh_analyzer.py --file facade_mesh.obj --json
```

### Sample Output

```
========================================
  MESH ANALYZER
========================================

  Topology:
    Vertices         :       4
    Faces            :       2
    Edges            :       5
    Euler Char. (V-E+F):    1
    Genus            :       0
    Is Manifold      :     Yes
    Boundary Edges   :       4

  Face Area Statistics:
    Min Area         :   0.500 units²
    Max Area         :   0.500 units²
    Mean Area        :   0.500 units²
    Std Dev          :   0.000 units²
    Total Area       :   1.000 units²

  Aspect Ratio Statistics:
    Min              :   1.000
    Max              :   1.414
    Mean             :   1.207
    Faces > 3.0      :       0  (0.0%)

  Normal Consistency  :   PASS (all normals consistent)

  Bounding Box:
    X range          :   0.000 to 1.000 (1.000)
    Y range          :   0.000 to 1.000 (1.000)
    Z range          :   0.000 to 0.000 (0.000)
========================================
```

---

## 6. Material Estimator

**Script:** `scripts/material_estimator.py`

Estimates material quantities, weights, and embodied carbon for buildings at the early design stage. Operates in two modes: **parametric** (from building type and GFA) or **direct** (from explicit material quantities).

### Parameters

| Parameter | Type | Unit | Description |
|-----------|------|------|-------------|
| `--building-type` | string | -- | residential, office, industrial, retail |
| `--gfa` | float | m^2 | Gross floor area |
| `--floors` | int | -- | Number of floors |
| `--concrete-volume` | float | m^3 | Direct concrete volume |
| `--steel-ratio` | float | kg/m^3 | Reinforcement ratio |
| `--glass-area` | float | m^2 | Direct glass area |
| `--timber-volume` | float | m^3 | Direct timber volume |
| `--waste-factor` | float | -- | Override waste factor (e.g. 1.10) |
| `--include-embodied-carbon` | flag | -- | Calculate embodied carbon |
| `--json` | flag | -- | Output as JSON |

### Example Usage

```bash
# Parametric estimate for a residential building
python material_estimator.py --building-type residential --gfa 5000 --floors 8

# Direct material quantities with embodied carbon
python material_estimator.py --concrete-volume 450 --steel-ratio 120 --glass-area 2000 --include-embodied-carbon

# Office building with custom waste factor
python material_estimator.py --building-type office --gfa 12000 --floors 20 --waste-factor 1.12 --include-embodied-carbon
```

### Sample Output

```
========================================
  MATERIAL ESTIMATOR - Parametric
========================================

  Building Parameters:
    Type             :  Residential
    Gross Floor Area :  5,000.00 m²
    Floors           :       8
    Floor Area/Floor :    625.00 m²

  Material Quantities (incl. waste):
    Concrete         :    750.00 m³  (1,800.00 tonnes)
    Rebar Steel      :     67.50 tonnes
    Structural Steel :     50.00 tonn

…

## Source & license

This open-source skill is cataloged on AgentStack and links to its original source — we do not rehost the code.

- **Author:** [Amanbh997](https://github.com/Amanbh997)
- **Source:** [Amanbh997/Claude-skills-for-Computational-Designers](https://github.com/Amanbh997/Claude-skills-for-Computational-Designers)
- **License:** MIT

Install and usage instructions live in the source repository linked above.

## Pricing

- **Free** — Free

## Security capabilities

Automated source analysis of v0.1.0 — what this tool can access:

- **Network access:** no
- **Filesystem access:** no
- **Shell / process execution:** yes
- **Environment & secrets:** no
- **Dynamic code execution:** no

*"Yes" means the capability is present in the source — more access means more to trust, not that it is unsafe.*


## Versions

- **0.1.0** — security scan: flagged — Imported from the upstream source.

## Links

- Listing page: https://agentstack.voostack.com/l/skill-amanbh997-claude-skills-for-computational-designers-cd-calculator
- Seller: https://agentstack.voostack.com/s/amanbh997
- Browse the marketplace: https://agentstack.voostack.com/browse

---
Listed on AgentStack — the marketplace for AI agent skills and MCP servers. Every listing is security-reviewed. Creators keep 70%.
