Requirements
- Target platform
- OpenClaw
- Install method
- Manual import
- Extraction
- Extract archive
- Prerequisites
- OpenClaw
- Primary doc
- SKILL.md
Generate technical engineering mechanics sketches (beams, supports, forces, moments, dimensions, coordinate systems) as PDF/PNG/SVG using the MechanicsSketch...
Generate technical engineering mechanics sketches (beams, supports, forces, moments, dimensions, coordinate systems) as PDF/PNG/SVG using the MechanicsSketch...
Hand the extracted package to your coding agent with a concrete install brief instead of figuring it out manually.
I downloaded a skill package from Yavira. Read SKILL.md from the extracted folder and install it by following the included instructions. Tell me what you changed and call out any manual steps you could not complete.
I downloaded an updated skill package from Yavira. Read SKILL.md from the extracted folder, compare it with my current installation, and upgrade it while preserving any custom configuration unless the package docs explicitly say otherwise. Summarize what changed and any follow-up checks I should run.
You can generate engineering mechanics sketches programmatically using the MechanicsSketches Python library.
Install the library via pip: pip install git+https://github.com/MatthiasHBusch/MechanicsSketches.git Or install dependencies manually and add to PYTHONPATH: pip install matplotlib PyQt5 export PYTHONPATH="/path/to/parent/of/MechanicsSketches:$PYTHONPATH"
Create a Python script that builds a sketch and renders it: from MechanicsSketches import * import os sketch = create_sketch("My Sketch") S = 30.0 # Scale factor (recommended: 20-40) # Add components add_beam(sketch, ax=0, ay=0, bx=10*S, by=0, scale_factor=S) add_pinned_support(sketch, cx=0, cy=0, angle_deg=0, scale_factor=S) add_roller_support(sketch, cx=10*S, cy=0, angle_deg=0, scale_factor=S) add_force(sketch, cx=5*S, cy=0, angle_deg=0, scale_factor=S, annotation=r"$F$") # Render script_dir = os.path.dirname(os.path.abspath(__file__)) render(sketch, filename=os.path.join(script_dir, "output.pdf"), dpi=300) Then run: python my_sketch.py
Alternatively, use the bundled helper to render from JSON: python scripts/generate_sketch.py input.json output.pdf
All positions and sizes should be multiples of S (typically 30.0). This keeps proportions consistent across components.
angle_deg=0 β default orientation (upward for supports/forces, horizontal for dimensions) Angles rotate counterclockwise in degrees
FunctionDescriptionKey Parametersadd_beam(sketch, ax, ay, bx, by, scale_factor)Rectangular beam AβBEndpoints, scaleadd_truss(sketch, ax, ay, bx, by, scale_factor)Line member AβBEndpoints, scaleadd_pinned_support(sketch, cx, cy, angle_deg, scale_factor)Fixed-position support (triangle)Center, angle, scaleadd_roller_support(sketch, cx, cy, angle_deg, scale_factor)Sliding supportCenter, angle, scaleadd_fixed_support(sketch, cx, cy, angle_deg, scale_factor)Clamped wall supportCenter, angle, scaleadd_hinge(sketch, cx, cy, scale_factor)Joint circleCenter, scaleadd_force(sketch, cx, cy, angle_deg, scale_factor, annotation, ...)Force arrowCenter, angle, scale, labeladd_moment(sketch, cx, cy, angle_deg, scale_factor, annotation, ...)Curved moment arrowCenter, angle, scale, labeladd_dimension_arrow(sketch, cx, cy, length, angle_deg, scale_factor, annotation, ...)Double-headed dimensionCenter, length, angle, scale, labeladd_dimension_thickness(sketch, cx, cy, thickness, angle_deg, scale_factor, annotation, ...)Inward dimension arrowsCenter, thickness, angle, scale, labeladd_coordinate_system(sketch, cx, cy, angle_deg, scale_factor, ax1, ax2, ax3, ...)x-y-z axesCenter, angle, scale, axis labelsadd_text(sketch, x, y, text, fontsize, name, rotation)Text annotationPosition, text, font size
Force, moment, and dimension functions accept: annotation β LaTeX string (e.g., r"$F$", r"$M_A$") fontsize_scale β relative font size (default 1.0) offsetx, offsety β label position offset rotate_annotation β rotate label with component (default False)
For custom shapes, use: make_line(x0, y0, x1, y1, linewidth, layer, edgecolor) make_circle(x, y, r, linewidth, layer, facecolor, edgecolor) make_polygon(points, linewidth, layer, facecolor, edgecolor) make_arc(x, y, width, height, theta1, theta2, angle, linewidth, layer) make_text(x, y, text, fontsize, layer, color, ha, va, rotation) make_rectangle(x0, y0, x1, y1, ...) Add to sketch via add_to_sketch(sketch, primitive).
translate(obj, dx, dy) β move by offset rotate(obj, cx, cy, angle_deg) β rotate around point scale(obj, cx, cy, factor) β scale from center All return new objects (non-destructive). Can be chained.
render(sketch, filename="output.pdf", dpi=300) # Qt renderer (default, recommended) mpl_render(sketch, filename="output.pdf") # Matplotlib fallback (deprecated, text scaling issues) Supported formats: .pdf, .png, .jpg, .svg
Always define S = 30.0 as the scale factor Place beams first, then supports at endpoints, then loads Use LaTeX for annotations: r"$F$", r"$M_0$", r"$\ell$" For detailed API signatures, see references/api_reference.md The render() function requires a filename β it does not display interactively Do not use mpl_render() β it is deprecated due to text scaling issues. Always use render().
This skill makes no network requests. All processing is done locally.
No data leaves your machine. The skill only reads local JSON files and writes local image/PDF output. No API keys or credentials are required. No telemetry or analytics. The helper script (scripts/generate_sketch.py) only reads the input file specified by the user and writes to the specified output path.
This skill is developed and maintained by MatthiasHBusch. The source code is fully open under the MIT license. All functionality runs locally with no external dependencies beyond standard Python packages (matplotlib, PyQt5).
Agent frameworks, memory systems, reasoning layers, and model-native orchestration.
Largest current source with strong distribution and engagement signals.