Add named parameters, UI scale setting, OPTIONS/OP dispatch, and help manual

Named parameters (docs/named_parameters_design.md, stages 3-4):
- ParameterTable (src/scene/named_parameters.rs): a document-wide table of
  named formulas, each resolved through a shared expression evaluator with
  cross-parameter references, cycle detection, and division-by-zero/parse
  error reporting. SketchConstraint::driving_param becomes DrivingValue
  (Literal | Named) instead of a bare f64, resolved at solve time by
  sketch_solve::build_constraint via Scene::named_parameters.
- Persistence (src/scene/named_parameters_persist.rs): same lazy XRecord
  model sketch_persist.rs already established, synced around open/save.
  Bumps the sketch-constraint XRecord's own format version (1 -> 2) since
  DrivingValue's shape doesn't line up with a version-1 blob's bytes.
- PARAMETERS command and its editor (src/ui/window/named_parameters.rs):
  add/remove/edit rows, live validation, duplicate-name detection: Apply
  defines the table and re-solves every constraint scope with a
  named-parameter-driven constraint (command_driver.rs). Distance/Angle
  constraint prompts (modules/draw/constrain/value.rs) now accept either a
  literal or an existing parameter's name, mirroring how the constraint's
  own value prompt already worked.
- Undo scope-down carried over from this project's own established pattern
  (constraint-system stage 9): the geometry an Apply moves is one undo
  step, but the parameter table edit itself has no undo entry yet — a
  documented follow-up, not a silent gap.

UI scale setting (src/app/settings.rs, app/mod.rs, ui/window/options.rs):
  a whole-interface scale percentage (50-200%), wired directly into iced's
  own per-window scale_factor hook rather than per-panel font-size
  plumbing, so it applies immediately to every panel, dialog, and the
  ribbon at once. Persisted alongside the existing lineweight-display-scale
  setting.

OPTIONS/OP command dispatch (app/commands/view.rs, app/commands/mod.rs):
  OPTIONS was registered for autocomplete but had no dispatch arm — the
  Start-tab welcome screen's own button was the only way to reach it.
  Found live-testing the UI-scale setting, unrelated to that feature
  itself. "OP" is AutoCAD's own short alias.

help/: a new self-contained static user-help manual (manual.md as the
authored source, tools/build_help.py splits it into the committed static
HTML pages plus search index) — not yet wired into the application.

64 new/updated tests across the named-parameters and constraint-prompt
changes.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
Felix RiestraandClaude Sonnet 5 committed 2026-09-09 13:50:08 +02:00
1 parent e2d39b049d
commit 7cddf31bcb
47 files changed
+4136 -52

No files matched your search

+55
View File
@@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="OpenCAD Studio user manual — 3D Modeling and Visualization">
<title>3D Modeling and Visualization — OpenCAD Studio Help</title>
<link rel="stylesheet" href="assets/css/core.css">
<link rel="stylesheet" href="assets/css/opencad.css">
<script src="search-index.js" defer></script>
<script src="assets/js/help.js" defer></script>
</head>
<body>
<header class="topbar">
<button class="nav-toggle" type="button" aria-controls="help-sidebar" aria-expanded="true" title="Toggle chapter navigation"><span aria-hidden="true">☰</span><span class="sr-only">Toggle chapter navigation</span></button>
<a class="brand" href="index.html">OpenCAD Studio Help</a>
<div class="search-shell">
<label class="sr-only" for="help-search">Search help</label>
<input id="help-search" class="help-search" type="search" role="combobox" placeholder="Search commands and topics" autocomplete="off" aria-autocomplete="list" aria-controls="search-results" aria-expanded="false">
<span class="search-key" aria-hidden="true">⌘K</span>
<ul id="search-results" class="search-results" role="listbox" hidden></ul>
</div>
</header>
<nav id="help-sidebar" class="sidebar" aria-label="Help chapters">
<div><a class="chapter-link" href="index.html">Help overview</a></div>
<details><summary><a href="getting-started.html">Getting Started</a></summary><ul><li><a href="getting-started.html#what-opencad-studio-does">What OpenCAD Studio does</a></li><li><a href="getting-started.html#a-first-drawing">A first drawing</a></li><li><a href="getting-started.html#how-to-use-this-manual">How to use this manual</a></li></ul></details>
<details><summary><a href="files-drawings.html">Files and Drawings</a></summary><ul><li><a href="files-drawings.html#create-and-open-drawings">Create and open drawings</a></li><li><a href="files-drawings.html#save-and-save-as">Save and Save As</a></li><li><a href="files-drawings.html#recovery-and-backups">Recovery and backups</a></li><li><a href="files-drawings.html#external-resources">External resources</a></li></ul></details>
<details><summary><a href="workspace-navigation.html">Workspace and Navigation</a></summary><ul><li><a href="workspace-navigation.html#model-space-and-paper-space">Model space and paper space</a></li><li><a href="workspace-navigation.html#pan-zoom-and-orbit">Pan, zoom, and orbit</a></li><li><a href="workspace-navigation.html#multiple-model-viewports">Multiple model viewports</a></li><li><a href="workspace-navigation.html#selection-and-object-snaps">Selection and object snaps</a></li></ul></details>
<details><summary><a href="create-edit-geometry.html">Create and Edit Geometry</a></summary><ul><li><a href="create-edit-geometry.html#basic-drawing-commands">Basic drawing commands</a></li><li><a href="create-edit-geometry.html#modify-geometry">Modify geometry</a></li><li><a href="create-edit-geometry.html#grips-and-direct-manipulation">Grips and direct manipulation</a></li><li><a href="create-edit-geometry.html#undo-redo-and-oops">Undo, redo, and OOPS</a></li></ul></details>
<details><summary><a href="layers-properties.html">Layers and Properties</a></summary><ul><li><a href="layers-properties.html#layers">Layers</a></li><li><a href="layers-properties.html#object-properties">Object properties</a></li><li><a href="layers-properties.html#styles">Styles</a></li></ul></details>
<details><summary><a href="blocks-references.html">Blocks and References</a></summary><ul><li><a href="blocks-references.html#create-and-insert-blocks">Create and insert blocks</a></li><li><a href="blocks-references.html#array-inserts">Array inserts</a></li><li><a href="blocks-references.html#attributes-and-external-references">Attributes and external references</a></li></ul></details>
<details><summary><a href="annotation-dimensions.html">Annotation and Dimensions</a></summary><ul><li><a href="annotation-dimensions.html#text-and-annotation">Text and annotation</a></li><li><a href="annotation-dimensions.html#dimensions">Dimensions</a></li><li><a href="annotation-dimensions.html#annotation-scale">Annotation scale</a></li></ul></details>
<details><summary><a href="layouts-plotting.html">Layouts and Plotting</a></summary><ul><li><a href="layouts-plotting.html#layouts-and-viewports">Layouts and viewports</a></li><li><a href="layouts-plotting.html#page-setup-and-plot-preview">Page setup and plot preview</a></li><li><a href="layouts-plotting.html#export-checks">Export checks</a></li></ul></details>
<details class="current-topic" open><summary><a href="3d-modeling.html">3D Modeling and Visualization</a></summary><ul><li><a href="3d-modeling.html#solids-and-surfaces">Solids and surfaces</a></li><li><a href="3d-modeling.html#visual-styles-and-lighting">Visual styles and lighting</a></li><li><a href="3d-modeling.html#tessellation-quality">Tessellation quality</a></li></ul></details>
<details><summary><a href="parametric-constraints.html">Parametric Constraints</a></summary><ul><li><a href="parametric-constraints.html#geometric-constraints">Geometric constraints</a></li><li><a href="parametric-constraints.html#editing-constrained-geometry">Editing constrained geometry</a></li><li><a href="parametric-constraints.html#persistence-and-history-limitations">Persistence and history limitations</a></li></ul></details>
<details><summary><a href="commands-shortcuts.html">Commands and Shortcuts</a></summary><ul><li><a href="commands-shortcuts.html#command-line">Command line</a></li><li><a href="commands-shortcuts.html#discover-commands">Discover commands</a></li><li><a href="commands-shortcuts.html#shortcut-conventions">Shortcut conventions</a></li></ul></details>
<details><summary><a href="automation-plugins.html">Automation and Plugins</a></summary><ul><li><a href="automation-plugins.html#automation-interface">Automation interface</a></li><li><a href="automation-plugins.html#plugins">Plugins</a></li><li><a href="automation-plugins.html#native-and-web-differences">Native and web differences</a></li></ul></details>
<details><summary><a href="troubleshooting-recovery.html">Troubleshooting and Recovery</a></summary><ul><li><a href="troubleshooting-recovery.html#a-drawing-opens-incorrectly">A drawing opens incorrectly</a></li><li><a href="troubleshooting-recovery.html#geometry-is-missing-or-distorted">Geometry is missing or distorted</a></li><li><a href="troubleshooting-recovery.html#rendering-is-incomplete">Rendering is incomplete</a></li><li><a href="troubleshooting-recovery.html#undo-did-not-restore-the-expected-state">Undo did not restore the expected state</a></li><li><a href="troubleshooting-recovery.html#report-a-reproducible-problem">Report a reproducible problem</a></li></ul></details>
</nav>
<main id="main-content">
<div class="content-wrap">
<p class="page-kicker">OpenCAD Studio User Manual</p>
<h1 class="content-title">3D Modeling and Visualization</h1>
<h3 id="solids-and-surfaces">Solids and surfaces</h3>
<p>OpenCAD Studio can create and display solid primitives and modeled features such as extrusions and revolutions. Imported ACIS-backed bodies are tessellated for display while exact body data is retained where supported.</p>
<h3 id="visual-styles-and-lighting">Visual styles and lighting</h3>
<p>Wireframe, shaded, hidden-line, materials, lights, and shadows affect display, not the underlying object geometry. Switch to wireframe when diagnosing missing faces or material problems.</p>
<h3 id="tessellation-quality">Tessellation quality</h3>
<p>Curves and analytic surfaces are converted into display geometry according to view and tolerance settings. A coarse display does not necessarily mean the stored curve or solid is coarse.</p>
<nav class="page-navigation" aria-label="Previous and next chapter"><a rel="prev" href="layouts-plotting.html">← Layouts and Plotting</a><a rel="next" href="parametric-constraints.html">Parametric Constraints →</a></nav>
<p class="date-footer">OpenCAD Studio Help · Generated from <code>help/manual.md</code></p>
</div>
</main>
</body>
</html>
+43
View File
@@ -0,0 +1,43 @@
# OpenCAD Studio Help
This directory is a self-contained, static user-help system. It is intentionally
not wired into the application yet.
## Authoring model
- `manual.md` is the single source of truth for user-facing prose.
- `tools/build_help.py` splits the level-two chapters into static HTML pages.
- `assets/css/` and `assets/js/` provide the shared responsive presentation,
navigation, dark mode, print styling, and local search.
- `context-map.json` reserves stable help targets for future command/dialog
integration without changing application source now.
- `assets/images/` is for screenshots and workflow illustrations referenced by
`manual.md`.
Generated HTML and `search-index.js` are committed so the manual works directly
from disk without a web server. Do not edit generated pages by hand.
## Build and validate
Requirements: Python 3 and Pandoc.
```sh
python3 help/tools/build_help.py
python3 help/tools/build_help.py --check
python3 help/tools/check_help.py
```
Open `help/index.html` in a browser to review the generated manual. When future
application work is safe, package the complete `help/` directory and connect the
Help menu or contextual controls to the URLs in `context-map.json`.
## Content rules
1. Keep level-two headings unique; each one is a chapter boundary.
2. Keep level-three headings stable because their generated IDs are public help
targets.
3. Describe observable behavior, not implementation details.
4. Use task-first procedures and state prerequisites before numbered steps.
5. Mark safety, compatibility, data-loss, and known limitations explicitly.
6. Regenerate and run both checks before committing documentation changes.
+55
View File
@@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="OpenCAD Studio user manual — Annotation and Dimensions">
<title>Annotation and Dimensions — OpenCAD Studio Help</title>
<link rel="stylesheet" href="assets/css/core.css">
<link rel="stylesheet" href="assets/css/opencad.css">
<script src="search-index.js" defer></script>
<script src="assets/js/help.js" defer></script>
</head>
<body>
<header class="topbar">
<button class="nav-toggle" type="button" aria-controls="help-sidebar" aria-expanded="true" title="Toggle chapter navigation"><span aria-hidden="true">☰</span><span class="sr-only">Toggle chapter navigation</span></button>
<a class="brand" href="index.html">OpenCAD Studio Help</a>
<div class="search-shell">
<label class="sr-only" for="help-search">Search help</label>
<input id="help-search" class="help-search" type="search" role="combobox" placeholder="Search commands and topics" autocomplete="off" aria-autocomplete="list" aria-controls="search-results" aria-expanded="false">
<span class="search-key" aria-hidden="true">⌘K</span>
<ul id="search-results" class="search-results" role="listbox" hidden></ul>
</div>
</header>
<nav id="help-sidebar" class="sidebar" aria-label="Help chapters">
<div><a class="chapter-link" href="index.html">Help overview</a></div>
<details><summary><a href="getting-started.html">Getting Started</a></summary><ul><li><a href="getting-started.html#what-opencad-studio-does">What OpenCAD Studio does</a></li><li><a href="getting-started.html#a-first-drawing">A first drawing</a></li><li><a href="getting-started.html#how-to-use-this-manual">How to use this manual</a></li></ul></details>
<details><summary><a href="files-drawings.html">Files and Drawings</a></summary><ul><li><a href="files-drawings.html#create-and-open-drawings">Create and open drawings</a></li><li><a href="files-drawings.html#save-and-save-as">Save and Save As</a></li><li><a href="files-drawings.html#recovery-and-backups">Recovery and backups</a></li><li><a href="files-drawings.html#external-resources">External resources</a></li></ul></details>
<details><summary><a href="workspace-navigation.html">Workspace and Navigation</a></summary><ul><li><a href="workspace-navigation.html#model-space-and-paper-space">Model space and paper space</a></li><li><a href="workspace-navigation.html#pan-zoom-and-orbit">Pan, zoom, and orbit</a></li><li><a href="workspace-navigation.html#multiple-model-viewports">Multiple model viewports</a></li><li><a href="workspace-navigation.html#selection-and-object-snaps">Selection and object snaps</a></li></ul></details>
<details><summary><a href="create-edit-geometry.html">Create and Edit Geometry</a></summary><ul><li><a href="create-edit-geometry.html#basic-drawing-commands">Basic drawing commands</a></li><li><a href="create-edit-geometry.html#modify-geometry">Modify geometry</a></li><li><a href="create-edit-geometry.html#grips-and-direct-manipulation">Grips and direct manipulation</a></li><li><a href="create-edit-geometry.html#undo-redo-and-oops">Undo, redo, and OOPS</a></li></ul></details>
<details><summary><a href="layers-properties.html">Layers and Properties</a></summary><ul><li><a href="layers-properties.html#layers">Layers</a></li><li><a href="layers-properties.html#object-properties">Object properties</a></li><li><a href="layers-properties.html#styles">Styles</a></li></ul></details>
<details><summary><a href="blocks-references.html">Blocks and References</a></summary><ul><li><a href="blocks-references.html#create-and-insert-blocks">Create and insert blocks</a></li><li><a href="blocks-references.html#array-inserts">Array inserts</a></li><li><a href="blocks-references.html#attributes-and-external-references">Attributes and external references</a></li></ul></details>
<details class="current-topic" open><summary><a href="annotation-dimensions.html">Annotation and Dimensions</a></summary><ul><li><a href="annotation-dimensions.html#text-and-annotation">Text and annotation</a></li><li><a href="annotation-dimensions.html#dimensions">Dimensions</a></li><li><a href="annotation-dimensions.html#annotation-scale">Annotation scale</a></li></ul></details>
<details><summary><a href="layouts-plotting.html">Layouts and Plotting</a></summary><ul><li><a href="layouts-plotting.html#layouts-and-viewports">Layouts and viewports</a></li><li><a href="layouts-plotting.html#page-setup-and-plot-preview">Page setup and plot preview</a></li><li><a href="layouts-plotting.html#export-checks">Export checks</a></li></ul></details>
<details><summary><a href="3d-modeling.html">3D Modeling and Visualization</a></summary><ul><li><a href="3d-modeling.html#solids-and-surfaces">Solids and surfaces</a></li><li><a href="3d-modeling.html#visual-styles-and-lighting">Visual styles and lighting</a></li><li><a href="3d-modeling.html#tessellation-quality">Tessellation quality</a></li></ul></details>
<details><summary><a href="parametric-constraints.html">Parametric Constraints</a></summary><ul><li><a href="parametric-constraints.html#geometric-constraints">Geometric constraints</a></li><li><a href="parametric-constraints.html#editing-constrained-geometry">Editing constrained geometry</a></li><li><a href="parametric-constraints.html#persistence-and-history-limitations">Persistence and history limitations</a></li></ul></details>
<details><summary><a href="commands-shortcuts.html">Commands and Shortcuts</a></summary><ul><li><a href="commands-shortcuts.html#command-line">Command line</a></li><li><a href="commands-shortcuts.html#discover-commands">Discover commands</a></li><li><a href="commands-shortcuts.html#shortcut-conventions">Shortcut conventions</a></li></ul></details>
<details><summary><a href="automation-plugins.html">Automation and Plugins</a></summary><ul><li><a href="automation-plugins.html#automation-interface">Automation interface</a></li><li><a href="automation-plugins.html#plugins">Plugins</a></li><li><a href="automation-plugins.html#native-and-web-differences">Native and web differences</a></li></ul></details>
<details><summary><a href="troubleshooting-recovery.html">Troubleshooting and Recovery</a></summary><ul><li><a href="troubleshooting-recovery.html#a-drawing-opens-incorrectly">A drawing opens incorrectly</a></li><li><a href="troubleshooting-recovery.html#geometry-is-missing-or-distorted">Geometry is missing or distorted</a></li><li><a href="troubleshooting-recovery.html#rendering-is-incomplete">Rendering is incomplete</a></li><li><a href="troubleshooting-recovery.html#undo-did-not-restore-the-expected-state">Undo did not restore the expected state</a></li><li><a href="troubleshooting-recovery.html#report-a-reproducible-problem">Report a reproducible problem</a></li></ul></details>
</nav>
<main id="main-content">
<div class="content-wrap">
<p class="page-kicker">OpenCAD Studio User Manual</p>
<h1 class="content-title">Annotation and Dimensions</h1>
<h3 id="text-and-annotation">Text and annotation</h3>
<p>Single-line text, multiline text, leaders, multileaders, tables, tolerances, center marks, and centerlines communicate design intent. Missing fonts can change layout or substitute glyphs, especially in the web build.</p>
<h3 id="dimensions">Dimensions</h3>
<p>Dimensions combine measured geometry with a dimension style. Associative dimensions update when their source geometry changes; non-associative or partially associated dimensions require manual verification.</p>
<h3 id="annotation-scale">Annotation scale</h3>
<p>Annotative objects can display differently at different viewport scales. Confirm the active annotation scale before creating annotations and inspect all paper-space viewports before plotting.</p>
<nav class="page-navigation" aria-label="Previous and next chapter"><a rel="prev" href="blocks-references.html">← Blocks and References</a><a rel="next" href="layouts-plotting.html">Layouts and Plotting →</a></nav>
<p class="date-footer">OpenCAD Studio Help · Generated from <code>help/manual.md</code></p>
</div>
</main>
</body>
</html>
+190
View File
@@ -0,0 +1,190 @@
:root {
color-scheme: light dark;
--accent: #1677d2;
--accent-strong: #075cae;
--accent-soft: #eaf4ff;
--canvas: #ffffff;
--chrome: rgba(20, 27, 37, 0.96);
--line: #d7dee7;
--muted: #617083;
--sidebar: #f4f7fa;
--text: #16202c;
--warning: #fff4cc;
--danger: #a62b2b;
--sidebar-width: 286px;
--topbar-height: 62px;
}
* { box-sizing: border-box; }
html { scroll-padding-top: calc(var(--topbar-height) + 20px); }
body {
margin: 0;
background: var(--canvas);
color: var(--text);
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
font-size: 16px;
line-height: 1.62;
}
a { color: var(--accent-strong); text-decoration-thickness: .08em; text-underline-offset: .16em; }
a:hover { color: var(--accent); }
a:focus-visible, button:focus-visible, input:focus-visible {
outline: 3px solid color-mix(in srgb, var(--accent) 45%, transparent);
outline-offset: 2px;
}
.topbar {
position: fixed;
inset: 0 0 auto;
z-index: 30;
height: var(--topbar-height);
display: flex;
align-items: center;
gap: 14px;
padding: 0 18px;
background: var(--chrome);
border-bottom: 1px solid rgba(255, 255, 255, .13);
backdrop-filter: blur(16px);
}
.brand { min-width: 190px; color: #fff; font-size: 18px; font-weight: 720; text-decoration: none; }
.brand:hover { color: #fff; }
.nav-toggle {
width: 38px;
height: 38px;
border: 0;
border-radius: 8px;
background: transparent;
color: #fff;
cursor: pointer;
font-size: 22px;
}
.nav-toggle:hover { background: rgba(255, 255, 255, .12); }
.search-shell { position: relative; width: min(520px, 55vw); margin-left: auto; }
.help-search {
width: 100%;
height: 38px;
padding: 0 42px 0 13px;
border: 1px solid rgba(255, 255, 255, .24);
border-radius: 9px;
background: rgba(255, 255, 255, .11);
color: #fff;
font: inherit;
}
.help-search::placeholder { color: rgba(255, 255, 255, .68); }
.search-key { position: absolute; top: 8px; right: 10px; color: rgba(255, 255, 255, .64); font-size: 13px; }
.search-results {
position: absolute;
top: 44px;
right: 0;
width: min(620px, calc(100vw - 24px));
max-height: min(70vh, 560px);
overflow: auto;
margin: 0;
padding: 7px;
border: 1px solid var(--line);
border-radius: 10px;
background: var(--canvas);
box-shadow: 0 18px 50px rgba(0, 0, 0, .28);
list-style: none;
}
.search-results[hidden] { display: none; }
.search-results a { display: block; padding: 10px 11px; border-radius: 7px; color: var(--text); text-decoration: none; }
.search-results a:hover, .search-results a[aria-selected="true"] { background: var(--accent-soft); }
.search-results strong { display: block; color: var(--accent-strong); }
.search-results span { display: block; color: var(--muted); font-size: 13px; }
.search-empty { padding: 12px; color: var(--muted); }
.sidebar {
position: fixed;
z-index: 20;
inset: var(--topbar-height) auto 0 0;
width: var(--sidebar-width);
padding: 16px 13px 36px;
overflow: auto;
background: var(--sidebar);
border-right: 1px solid var(--line);
transition: transform 180ms ease;
}
body.nav-collapsed .sidebar { transform: translateX(-100%); }
.sidebar details, .sidebar > div { margin: 3px 0; border-radius: 8px; }
.sidebar details.current-topic, .sidebar > div.current-topic { background: var(--canvas); box-shadow: 0 0 0 1px var(--line); }
.sidebar summary { padding: 7px 9px; font-weight: 680; cursor: pointer; }
.sidebar .chapter-link { display: block; padding: 7px 9px; font-weight: 680; }
.sidebar ul { margin: 0; padding: 0 9px 9px 27px; list-style: none; }
.sidebar li { margin: 2px 0; line-height: 1.35; }
.sidebar li a { display: block; padding: 3px 0; color: var(--text); font-size: 13px; text-decoration: none; }
.sidebar li a:hover { color: var(--accent); }
#main-content {
min-height: 100vh;
margin-left: var(--sidebar-width);
padding: calc(var(--topbar-height) + 38px) 34px 70px;
transition: margin-left 180ms ease;
}
body.nav-collapsed #main-content { margin-left: 0; }
.content-wrap { max-width: 940px; margin: 0 auto; }
.page-kicker { margin: 0; color: var(--accent-strong); font-size: 12px; font-weight: 760; letter-spacing: .09em; text-transform: uppercase; }
.content-title { margin: 3px 0 30px; font-size: clamp(34px, 6vw, 52px); line-height: 1.06; letter-spacing: -.035em; }
h2 { margin: 44px 0 17px; padding-bottom: 8px; border-bottom: 2px solid var(--accent); font-size: 23px; line-height: 1.3; }
h3 { margin: 34px 0 8px; font-size: 19px; line-height: 1.35; }
p { margin: 9px 0 16px; }
ul, ol { padding-left: 26px; }
li { margin: 5px 0; }
code, pre { font-family: ui-monospace, "SF Mono", Menlo, monospace; }
code { color: #a0440c; font-size: .91em; }
blockquote {
margin: 18px 0;
padding: 12px 15px;
border: 1px solid color-mix(in srgb, #d5a000 45%, var(--line));
border-left: 4px solid #d5a000;
border-radius: 8px;
background: var(--warning);
color: #503f05;
}
blockquote p { margin: 0; }
.page-navigation { display: flex; justify-content: space-between; gap: 20px; margin-top: 58px; padding-top: 18px; border-top: 1px solid var(--line); }
.page-navigation a:last-child { margin-left: auto; }
.date-footer { margin-top: 34px; color: var(--muted); font-size: 13px; text-align: center; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
@media (max-width: 760px) {
.brand { min-width: 0; font-size: 16px; }
.search-shell { width: min(48vw, 420px); }
.search-key { display: none; }
.sidebar { box-shadow: 12px 0 34px rgba(0, 0, 0, .22); }
body:not(.nav-open) .sidebar { transform: translateX(-100%); }
body.nav-open .sidebar { transform: translateX(0); }
#main-content, body.nav-collapsed #main-content { margin-left: 0; padding: calc(var(--topbar-height) + 28px) 18px 52px; }
}
@media (prefers-color-scheme: dark) {
:root {
--accent: #66b6ff;
--accent-strong: #8bc7ff;
--accent-soft: #17344f;
--canvas: #161b22;
--chrome: rgba(14, 18, 24, .96);
--line: #374252;
--muted: #9eabba;
--sidebar: #1d242d;
--text: #eef3f8;
--warning: #423819;
}
code { color: #ffae79; }
blockquote { color: #f5e6ad; }
}
@media print {
.topbar, .sidebar, .page-navigation { display: none !important; }
#main-content { margin: 0; padding: 0; }
body { color: #000; background: #fff; font-size: 11pt; }
a { color: inherit; }
h2, h3 { break-after: avoid; }
blockquote { break-inside: avoid; }
}
+24
View File
@@ -0,0 +1,24 @@
.hero {
margin: 0 0 38px;
padding: clamp(25px, 6vw, 56px);
border: 1px solid color-mix(in srgb, var(--accent) 30%, var(--line));
border-radius: 18px;
background:
linear-gradient(115deg, color-mix(in srgb, var(--accent-soft) 82%, var(--canvas)), var(--canvas));
}
.hero .eyebrow { margin: 0; color: var(--accent-strong); font-size: 12px; font-weight: 760; letter-spacing: .1em; text-transform: uppercase; }
.hero h2 { margin: 8px 0 14px; padding: 0; border: 0; font-size: clamp(28px, 5vw, 44px); line-height: 1.08; letter-spacing: -.03em; }
.hero p:last-child { max-width: 720px; margin-bottom: 0; font-size: 17px; }
.chapter-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
.chapter-card { min-height: 130px; display: flex; flex-direction: column; gap: 7px; padding: 18px; border: 1px solid var(--line); border-radius: 10px; color: var(--text); text-decoration: none; }
.chapter-card:hover { border-color: var(--accent); background: var(--accent-soft); text-decoration: none; }
.chapter-card strong { color: var(--accent-strong); font-size: 18px; }
.chapter-card span { color: var(--muted); }
.quick-paths { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 18px 0 28px; }
.quick-paths a { padding: 12px; border: 1px solid var(--line); border-radius: 9px; text-align: center; text-decoration: none; }
.quick-paths a:hover { background: var(--accent-soft); }
@media (max-width: 640px) {
.chapter-grid, .quick-paths { grid-template-columns: 1fr; }
.chapter-card { min-height: 0; }
}
+9
View File
@@ -0,0 +1,9 @@
# Help images
Place optimized screenshots and workflow illustrations in this directory.
Use descriptive lowercase filenames, include meaningful alternative text in
`manual.md`, crop away unrelated desktop content, and avoid confidential drawing
names or paths. Prefer WebP or optimized PNG and keep each image at the smallest
resolution that remains legible on a high-density display.
+120
View File
@@ -0,0 +1,120 @@
(function () {
"use strict";
const body = document.body;
const toggle = document.querySelector(".nav-toggle");
const sidebar = document.getElementById("help-sidebar");
const search = document.getElementById("help-search");
const results = document.getElementById("search-results");
const mobile = window.matchMedia("(max-width: 760px)");
let selected = -1;
function syncToggle() {
const expanded = mobile.matches
? body.classList.contains("nav-open")
: !body.classList.contains("nav-collapsed");
toggle?.setAttribute("aria-expanded", String(expanded));
}
toggle?.addEventListener("click", function () {
body.classList.toggle(mobile.matches ? "nav-open" : "nav-collapsed");
syncToggle();
});
sidebar?.addEventListener("click", function (event) {
if (mobile.matches && event.target.closest("a")) {
body.classList.remove("nav-open");
syncToggle();
}
});
mobile.addEventListener("change", function () {
body.classList.remove("nav-open");
syncToggle();
});
function hideResults() {
results.hidden = true;
results.innerHTML = "";
selected = -1;
search?.setAttribute("aria-expanded", "false");
}
function renderResults(query) {
const terms = query.toLocaleLowerCase().trim().split(/\s+/).filter(Boolean);
if (!terms.length) {
hideResults();
return;
}
const matches = (window.OCS_HELP_INDEX || []).map(function (entry) {
const title = entry.title.toLocaleLowerCase();
const text = entry.text.toLocaleLowerCase();
const score = terms.reduce(function (total, term) {
if (!text.includes(term) && !title.includes(term)) return -1000;
return total + (title.includes(term) ? 8 : 1);
}, 0);
return { entry: entry, score: score };
}).filter(function (item) { return item.score >= 0; })
.sort(function (a, b) { return b.score - a.score || a.entry.title.localeCompare(b.entry.title); })
.slice(0, 12);
results.innerHTML = "";
if (!matches.length) {
const empty = document.createElement("li");
empty.className = "search-empty";
empty.textContent = "No matching help topics.";
results.appendChild(empty);
} else {
matches.forEach(function (item) {
const li = document.createElement("li");
const link = document.createElement("a");
link.href = item.entry.url;
const strong = document.createElement("strong");
strong.textContent = item.entry.title;
const detail = document.createElement("span");
detail.textContent = item.entry.chapter;
link.append(strong, detail);
li.appendChild(link);
results.appendChild(li);
});
}
results.hidden = false;
search.setAttribute("aria-expanded", "true");
selected = -1;
}
search?.addEventListener("input", function () { renderResults(search.value); });
search?.addEventListener("keydown", function (event) {
const links = Array.from(results.querySelectorAll("a"));
if (event.key === "Escape") {
search.value = "";
hideResults();
return;
}
if (!links.length || !["ArrowDown", "ArrowUp", "Enter"].includes(event.key)) return;
event.preventDefault();
if (event.key === "Enter" && selected >= 0) {
links[selected].click();
return;
}
if (event.key === "ArrowDown") selected = (selected + 1) % links.length;
if (event.key === "ArrowUp") selected = selected < 0 ? links.length - 1 : (selected - 1 + links.length) % links.length;
links.forEach(function (link, index) { link.setAttribute("aria-selected", String(index === selected)); });
links[selected]?.scrollIntoView({ block: "nearest" });
});
document.addEventListener("keydown", function (event) {
const shortcut = event.key === "/" || ((event.metaKey || event.ctrlKey) && event.key.toLowerCase() === "k");
if (shortcut && document.activeElement !== search) {
event.preventDefault();
search?.focus();
}
});
document.addEventListener("click", function (event) {
if (!event.target.closest(".search-shell")) hideResults();
});
syncToggle();
}());
+55
View File
@@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="OpenCAD Studio user manual — Automation and Plugins">
<title>Automation and Plugins — OpenCAD Studio Help</title>
<link rel="stylesheet" href="assets/css/core.css">
<link rel="stylesheet" href="assets/css/opencad.css">
<script src="search-index.js" defer></script>
<script src="assets/js/help.js" defer></script>
</head>
<body>
<header class="topbar">
<button class="nav-toggle" type="button" aria-controls="help-sidebar" aria-expanded="true" title="Toggle chapter navigation"><span aria-hidden="true">☰</span><span class="sr-only">Toggle chapter navigation</span></button>
<a class="brand" href="index.html">OpenCAD Studio Help</a>
<div class="search-shell">
<label class="sr-only" for="help-search">Search help</label>
<input id="help-search" class="help-search" type="search" role="combobox" placeholder="Search commands and topics" autocomplete="off" aria-autocomplete="list" aria-controls="search-results" aria-expanded="false">
<span class="search-key" aria-hidden="true">⌘K</span>
<ul id="search-results" class="search-results" role="listbox" hidden></ul>
</div>
</header>
<nav id="help-sidebar" class="sidebar" aria-label="Help chapters">
<div><a class="chapter-link" href="index.html">Help overview</a></div>
<details><summary><a href="getting-started.html">Getting Started</a></summary><ul><li><a href="getting-started.html#what-opencad-studio-does">What OpenCAD Studio does</a></li><li><a href="getting-started.html#a-first-drawing">A first drawing</a></li><li><a href="getting-started.html#how-to-use-this-manual">How to use this manual</a></li></ul></details>
<details><summary><a href="files-drawings.html">Files and Drawings</a></summary><ul><li><a href="files-drawings.html#create-and-open-drawings">Create and open drawings</a></li><li><a href="files-drawings.html#save-and-save-as">Save and Save As</a></li><li><a href="files-drawings.html#recovery-and-backups">Recovery and backups</a></li><li><a href="files-drawings.html#external-resources">External resources</a></li></ul></details>
<details><summary><a href="workspace-navigation.html">Workspace and Navigation</a></summary><ul><li><a href="workspace-navigation.html#model-space-and-paper-space">Model space and paper space</a></li><li><a href="workspace-navigation.html#pan-zoom-and-orbit">Pan, zoom, and orbit</a></li><li><a href="workspace-navigation.html#multiple-model-viewports">Multiple model viewports</a></li><li><a href="workspace-navigation.html#selection-and-object-snaps">Selection and object snaps</a></li></ul></details>
<details><summary><a href="create-edit-geometry.html">Create and Edit Geometry</a></summary><ul><li><a href="create-edit-geometry.html#basic-drawing-commands">Basic drawing commands</a></li><li><a href="create-edit-geometry.html#modify-geometry">Modify geometry</a></li><li><a href="create-edit-geometry.html#grips-and-direct-manipulation">Grips and direct manipulation</a></li><li><a href="create-edit-geometry.html#undo-redo-and-oops">Undo, redo, and OOPS</a></li></ul></details>
<details><summary><a href="layers-properties.html">Layers and Properties</a></summary><ul><li><a href="layers-properties.html#layers">Layers</a></li><li><a href="layers-properties.html#object-properties">Object properties</a></li><li><a href="layers-properties.html#styles">Styles</a></li></ul></details>
<details><summary><a href="blocks-references.html">Blocks and References</a></summary><ul><li><a href="blocks-references.html#create-and-insert-blocks">Create and insert blocks</a></li><li><a href="blocks-references.html#array-inserts">Array inserts</a></li><li><a href="blocks-references.html#attributes-and-external-references">Attributes and external references</a></li></ul></details>
<details><summary><a href="annotation-dimensions.html">Annotation and Dimensions</a></summary><ul><li><a href="annotation-dimensions.html#text-and-annotation">Text and annotation</a></li><li><a href="annotation-dimensions.html#dimensions">Dimensions</a></li><li><a href="annotation-dimensions.html#annotation-scale">Annotation scale</a></li></ul></details>
<details><summary><a href="layouts-plotting.html">Layouts and Plotting</a></summary><ul><li><a href="layouts-plotting.html#layouts-and-viewports">Layouts and viewports</a></li><li><a href="layouts-plotting.html#page-setup-and-plot-preview">Page setup and plot preview</a></li><li><a href="layouts-plotting.html#export-checks">Export checks</a></li></ul></details>
<details><summary><a href="3d-modeling.html">3D Modeling and Visualization</a></summary><ul><li><a href="3d-modeling.html#solids-and-surfaces">Solids and surfaces</a></li><li><a href="3d-modeling.html#visual-styles-and-lighting">Visual styles and lighting</a></li><li><a href="3d-modeling.html#tessellation-quality">Tessellation quality</a></li></ul></details>
<details><summary><a href="parametric-constraints.html">Parametric Constraints</a></summary><ul><li><a href="parametric-constraints.html#geometric-constraints">Geometric constraints</a></li><li><a href="parametric-constraints.html#editing-constrained-geometry">Editing constrained geometry</a></li><li><a href="parametric-constraints.html#persistence-and-history-limitations">Persistence and history limitations</a></li></ul></details>
<details><summary><a href="commands-shortcuts.html">Commands and Shortcuts</a></summary><ul><li><a href="commands-shortcuts.html#command-line">Command line</a></li><li><a href="commands-shortcuts.html#discover-commands">Discover commands</a></li><li><a href="commands-shortcuts.html#shortcut-conventions">Shortcut conventions</a></li></ul></details>
<details class="current-topic" open><summary><a href="automation-plugins.html">Automation and Plugins</a></summary><ul><li><a href="automation-plugins.html#automation-interface">Automation interface</a></li><li><a href="automation-plugins.html#plugins">Plugins</a></li><li><a href="automation-plugins.html#native-and-web-differences">Native and web differences</a></li></ul></details>
<details><summary><a href="troubleshooting-recovery.html">Troubleshooting and Recovery</a></summary><ul><li><a href="troubleshooting-recovery.html#a-drawing-opens-incorrectly">A drawing opens incorrectly</a></li><li><a href="troubleshooting-recovery.html#geometry-is-missing-or-distorted">Geometry is missing or distorted</a></li><li><a href="troubleshooting-recovery.html#rendering-is-incomplete">Rendering is incomplete</a></li><li><a href="troubleshooting-recovery.html#undo-did-not-restore-the-expected-state">Undo did not restore the expected state</a></li><li><a href="troubleshooting-recovery.html#report-a-reproducible-problem">Report a reproducible problem</a></li></ul></details>
</nav>
<main id="main-content">
<div class="content-wrap">
<p class="page-kicker">OpenCAD Studio User Manual</p>
<h1 class="content-title">Automation and Plugins</h1>
<h3 id="automation-interface">Automation interface</h3>
<p>The automation interface can inspect documents, run commands, query geometry, capture the viewport, and perform batches. Callers should use request IDs and document revisions to avoid repeating or applying work to stale state.</p>
<h3 id="plugins">Plugins</h3>
<p>Native plugins can contribute commands and ribbon surfaces through the plugin host. Install only trusted packages that match the host API, compiler, and CAD model compatibility requirements.</p>
<h3 id="native-and-web-differences">Native and web differences</h3>
<p>The browser build uses in-memory file workflows and cannot load native plugin libraries. Some rendering, font, windowing, and parallel-processing behavior also differs from the desktop build.</p>
<nav class="page-navigation" aria-label="Previous and next chapter"><a rel="prev" href="commands-shortcuts.html">← Commands and Shortcuts</a><a rel="next" href="troubleshooting-recovery.html">Troubleshooting and Recovery →</a></nav>
<p class="date-footer">OpenCAD Studio Help · Generated from <code>help/manual.md</code></p>
</div>
</main>
</body>
</html>
+55
View File
@@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="OpenCAD Studio user manual — Blocks and References">
<title>Blocks and References — OpenCAD Studio Help</title>
<link rel="stylesheet" href="assets/css/core.css">
<link rel="stylesheet" href="assets/css/opencad.css">
<script src="search-index.js" defer></script>
<script src="assets/js/help.js" defer></script>
</head>
<body>
<header class="topbar">
<button class="nav-toggle" type="button" aria-controls="help-sidebar" aria-expanded="true" title="Toggle chapter navigation"><span aria-hidden="true">☰</span><span class="sr-only">Toggle chapter navigation</span></button>
<a class="brand" href="index.html">OpenCAD Studio Help</a>
<div class="search-shell">
<label class="sr-only" for="help-search">Search help</label>
<input id="help-search" class="help-search" type="search" role="combobox" placeholder="Search commands and topics" autocomplete="off" aria-autocomplete="list" aria-controls="search-results" aria-expanded="false">
<span class="search-key" aria-hidden="true">⌘K</span>
<ul id="search-results" class="search-results" role="listbox" hidden></ul>
</div>
</header>
<nav id="help-sidebar" class="sidebar" aria-label="Help chapters">
<div><a class="chapter-link" href="index.html">Help overview</a></div>
<details><summary><a href="getting-started.html">Getting Started</a></summary><ul><li><a href="getting-started.html#what-opencad-studio-does">What OpenCAD Studio does</a></li><li><a href="getting-started.html#a-first-drawing">A first drawing</a></li><li><a href="getting-started.html#how-to-use-this-manual">How to use this manual</a></li></ul></details>
<details><summary><a href="files-drawings.html">Files and Drawings</a></summary><ul><li><a href="files-drawings.html#create-and-open-drawings">Create and open drawings</a></li><li><a href="files-drawings.html#save-and-save-as">Save and Save As</a></li><li><a href="files-drawings.html#recovery-and-backups">Recovery and backups</a></li><li><a href="files-drawings.html#external-resources">External resources</a></li></ul></details>
<details><summary><a href="workspace-navigation.html">Workspace and Navigation</a></summary><ul><li><a href="workspace-navigation.html#model-space-and-paper-space">Model space and paper space</a></li><li><a href="workspace-navigation.html#pan-zoom-and-orbit">Pan, zoom, and orbit</a></li><li><a href="workspace-navigation.html#multiple-model-viewports">Multiple model viewports</a></li><li><a href="workspace-navigation.html#selection-and-object-snaps">Selection and object snaps</a></li></ul></details>
<details><summary><a href="create-edit-geometry.html">Create and Edit Geometry</a></summary><ul><li><a href="create-edit-geometry.html#basic-drawing-commands">Basic drawing commands</a></li><li><a href="create-edit-geometry.html#modify-geometry">Modify geometry</a></li><li><a href="create-edit-geometry.html#grips-and-direct-manipulation">Grips and direct manipulation</a></li><li><a href="create-edit-geometry.html#undo-redo-and-oops">Undo, redo, and OOPS</a></li></ul></details>
<details><summary><a href="layers-properties.html">Layers and Properties</a></summary><ul><li><a href="layers-properties.html#layers">Layers</a></li><li><a href="layers-properties.html#object-properties">Object properties</a></li><li><a href="layers-properties.html#styles">Styles</a></li></ul></details>
<details class="current-topic" open><summary><a href="blocks-references.html">Blocks and References</a></summary><ul><li><a href="blocks-references.html#create-and-insert-blocks">Create and insert blocks</a></li><li><a href="blocks-references.html#array-inserts">Array inserts</a></li><li><a href="blocks-references.html#attributes-and-external-references">Attributes and external references</a></li></ul></details>
<details><summary><a href="annotation-dimensions.html">Annotation and Dimensions</a></summary><ul><li><a href="annotation-dimensions.html#text-and-annotation">Text and annotation</a></li><li><a href="annotation-dimensions.html#dimensions">Dimensions</a></li><li><a href="annotation-dimensions.html#annotation-scale">Annotation scale</a></li></ul></details>
<details><summary><a href="layouts-plotting.html">Layouts and Plotting</a></summary><ul><li><a href="layouts-plotting.html#layouts-and-viewports">Layouts and viewports</a></li><li><a href="layouts-plotting.html#page-setup-and-plot-preview">Page setup and plot preview</a></li><li><a href="layouts-plotting.html#export-checks">Export checks</a></li></ul></details>
<details><summary><a href="3d-modeling.html">3D Modeling and Visualization</a></summary><ul><li><a href="3d-modeling.html#solids-and-surfaces">Solids and surfaces</a></li><li><a href="3d-modeling.html#visual-styles-and-lighting">Visual styles and lighting</a></li><li><a href="3d-modeling.html#tessellation-quality">Tessellation quality</a></li></ul></details>
<details><summary><a href="parametric-constraints.html">Parametric Constraints</a></summary><ul><li><a href="parametric-constraints.html#geometric-constraints">Geometric constraints</a></li><li><a href="parametric-constraints.html#editing-constrained-geometry">Editing constrained geometry</a></li><li><a href="parametric-constraints.html#persistence-and-history-limitations">Persistence and history limitations</a></li></ul></details>
<details><summary><a href="commands-shortcuts.html">Commands and Shortcuts</a></summary><ul><li><a href="commands-shortcuts.html#command-line">Command line</a></li><li><a href="commands-shortcuts.html#discover-commands">Discover commands</a></li><li><a href="commands-shortcuts.html#shortcut-conventions">Shortcut conventions</a></li></ul></details>
<details><summary><a href="automation-plugins.html">Automation and Plugins</a></summary><ul><li><a href="automation-plugins.html#automation-interface">Automation interface</a></li><li><a href="automation-plugins.html#plugins">Plugins</a></li><li><a href="automation-plugins.html#native-and-web-differences">Native and web differences</a></li></ul></details>
<details><summary><a href="troubleshooting-recovery.html">Troubleshooting and Recovery</a></summary><ul><li><a href="troubleshooting-recovery.html#a-drawing-opens-incorrectly">A drawing opens incorrectly</a></li><li><a href="troubleshooting-recovery.html#geometry-is-missing-or-distorted">Geometry is missing or distorted</a></li><li><a href="troubleshooting-recovery.html#rendering-is-incomplete">Rendering is incomplete</a></li><li><a href="troubleshooting-recovery.html#undo-did-not-restore-the-expected-state">Undo did not restore the expected state</a></li><li><a href="troubleshooting-recovery.html#report-a-reproducible-problem">Report a reproducible problem</a></li></ul></details>
</nav>
<main id="main-content">
<div class="content-wrap">
<p class="page-kicker">OpenCAD Studio User Manual</p>
<h1 class="content-title">Blocks and References</h1>
<h3 id="create-and-insert-blocks">Create and insert blocks</h3>
<p>A block definition groups reusable drawing content; an INSERT places an instance with its own position, rotation, scale, attributes, and optional array settings. Editing a definition affects every reference to it.</p>
<h3 id="array-inserts">Array inserts</h3>
<p>Array inserts place multiple block instances with row and column counts and spacing. Large counts can generate substantial geometry. Validate scaled and rotated arrays when exchanging drawings with another CAD system.</p>
<h3 id="attributes-and-external-references">Attributes and external references</h3>
<p>Attributes attach editable values to block references. External references and underlays retain links to other files; preserve their paths when sharing or archiving a project.</p>
<nav class="page-navigation" aria-label="Previous and next chapter"><a rel="prev" href="layers-properties.html">← Layers and Properties</a><a rel="next" href="annotation-dimensions.html">Annotation and Dimensions →</a></nav>
<p class="date-footer">OpenCAD Studio Help · Generated from <code>help/manual.md</code></p>
</div>
</main>
</body>
</html>
+55
View File
@@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="OpenCAD Studio user manual — Commands and Shortcuts">
<title>Commands and Shortcuts — OpenCAD Studio Help</title>
<link rel="stylesheet" href="assets/css/core.css">
<link rel="stylesheet" href="assets/css/opencad.css">
<script src="search-index.js" defer></script>
<script src="assets/js/help.js" defer></script>
</head>
<body>
<header class="topbar">
<button class="nav-toggle" type="button" aria-controls="help-sidebar" aria-expanded="true" title="Toggle chapter navigation"><span aria-hidden="true">☰</span><span class="sr-only">Toggle chapter navigation</span></button>
<a class="brand" href="index.html">OpenCAD Studio Help</a>
<div class="search-shell">
<label class="sr-only" for="help-search">Search help</label>
<input id="help-search" class="help-search" type="search" role="combobox" placeholder="Search commands and topics" autocomplete="off" aria-autocomplete="list" aria-controls="search-results" aria-expanded="false">
<span class="search-key" aria-hidden="true">⌘K</span>
<ul id="search-results" class="search-results" role="listbox" hidden></ul>
</div>
</header>
<nav id="help-sidebar" class="sidebar" aria-label="Help chapters">
<div><a class="chapter-link" href="index.html">Help overview</a></div>
<details><summary><a href="getting-started.html">Getting Started</a></summary><ul><li><a href="getting-started.html#what-opencad-studio-does">What OpenCAD Studio does</a></li><li><a href="getting-started.html#a-first-drawing">A first drawing</a></li><li><a href="getting-started.html#how-to-use-this-manual">How to use this manual</a></li></ul></details>
<details><summary><a href="files-drawings.html">Files and Drawings</a></summary><ul><li><a href="files-drawings.html#create-and-open-drawings">Create and open drawings</a></li><li><a href="files-drawings.html#save-and-save-as">Save and Save As</a></li><li><a href="files-drawings.html#recovery-and-backups">Recovery and backups</a></li><li><a href="files-drawings.html#external-resources">External resources</a></li></ul></details>
<details><summary><a href="workspace-navigation.html">Workspace and Navigation</a></summary><ul><li><a href="workspace-navigation.html#model-space-and-paper-space">Model space and paper space</a></li><li><a href="workspace-navigation.html#pan-zoom-and-orbit">Pan, zoom, and orbit</a></li><li><a href="workspace-navigation.html#multiple-model-viewports">Multiple model viewports</a></li><li><a href="workspace-navigation.html#selection-and-object-snaps">Selection and object snaps</a></li></ul></details>
<details><summary><a href="create-edit-geometry.html">Create and Edit Geometry</a></summary><ul><li><a href="create-edit-geometry.html#basic-drawing-commands">Basic drawing commands</a></li><li><a href="create-edit-geometry.html#modify-geometry">Modify geometry</a></li><li><a href="create-edit-geometry.html#grips-and-direct-manipulation">Grips and direct manipulation</a></li><li><a href="create-edit-geometry.html#undo-redo-and-oops">Undo, redo, and OOPS</a></li></ul></details>
<details><summary><a href="layers-properties.html">Layers and Properties</a></summary><ul><li><a href="layers-properties.html#layers">Layers</a></li><li><a href="layers-properties.html#object-properties">Object properties</a></li><li><a href="layers-properties.html#styles">Styles</a></li></ul></details>
<details><summary><a href="blocks-references.html">Blocks and References</a></summary><ul><li><a href="blocks-references.html#create-and-insert-blocks">Create and insert blocks</a></li><li><a href="blocks-references.html#array-inserts">Array inserts</a></li><li><a href="blocks-references.html#attributes-and-external-references">Attributes and external references</a></li></ul></details>
<details><summary><a href="annotation-dimensions.html">Annotation and Dimensions</a></summary><ul><li><a href="annotation-dimensions.html#text-and-annotation">Text and annotation</a></li><li><a href="annotation-dimensions.html#dimensions">Dimensions</a></li><li><a href="annotation-dimensions.html#annotation-scale">Annotation scale</a></li></ul></details>
<details><summary><a href="layouts-plotting.html">Layouts and Plotting</a></summary><ul><li><a href="layouts-plotting.html#layouts-and-viewports">Layouts and viewports</a></li><li><a href="layouts-plotting.html#page-setup-and-plot-preview">Page setup and plot preview</a></li><li><a href="layouts-plotting.html#export-checks">Export checks</a></li></ul></details>
<details><summary><a href="3d-modeling.html">3D Modeling and Visualization</a></summary><ul><li><a href="3d-modeling.html#solids-and-surfaces">Solids and surfaces</a></li><li><a href="3d-modeling.html#visual-styles-and-lighting">Visual styles and lighting</a></li><li><a href="3d-modeling.html#tessellation-quality">Tessellation quality</a></li></ul></details>
<details><summary><a href="parametric-constraints.html">Parametric Constraints</a></summary><ul><li><a href="parametric-constraints.html#geometric-constraints">Geometric constraints</a></li><li><a href="parametric-constraints.html#editing-constrained-geometry">Editing constrained geometry</a></li><li><a href="parametric-constraints.html#persistence-and-history-limitations">Persistence and history limitations</a></li></ul></details>
<details class="current-topic" open><summary><a href="commands-shortcuts.html">Commands and Shortcuts</a></summary><ul><li><a href="commands-shortcuts.html#command-line">Command line</a></li><li><a href="commands-shortcuts.html#discover-commands">Discover commands</a></li><li><a href="commands-shortcuts.html#shortcut-conventions">Shortcut conventions</a></li></ul></details>
<details><summary><a href="automation-plugins.html">Automation and Plugins</a></summary><ul><li><a href="automation-plugins.html#automation-interface">Automation interface</a></li><li><a href="automation-plugins.html#plugins">Plugins</a></li><li><a href="automation-plugins.html#native-and-web-differences">Native and web differences</a></li></ul></details>
<details><summary><a href="troubleshooting-recovery.html">Troubleshooting and Recovery</a></summary><ul><li><a href="troubleshooting-recovery.html#a-drawing-opens-incorrectly">A drawing opens incorrectly</a></li><li><a href="troubleshooting-recovery.html#geometry-is-missing-or-distorted">Geometry is missing or distorted</a></li><li><a href="troubleshooting-recovery.html#rendering-is-incomplete">Rendering is incomplete</a></li><li><a href="troubleshooting-recovery.html#undo-did-not-restore-the-expected-state">Undo did not restore the expected state</a></li><li><a href="troubleshooting-recovery.html#report-a-reproducible-problem">Report a reproducible problem</a></li></ul></details>
</nav>
<main id="main-content">
<div class="content-wrap">
<p class="page-kicker">OpenCAD Studio User Manual</p>
<h1 class="content-title">Commands and Shortcuts</h1>
<h3 id="command-line">Command line</h3>
<p>Enter a command name or alias, then respond to its prompts. Press <code>Escape</code> to cancel the active command and <code>Return</code> to accept an available default. Exact prompt options vary by command and current selection.</p>
<h3 id="discover-commands">Discover commands</h3>
<p>Use command autocomplete and the ribbon to discover available operations. Some commands are one-shot actions; others maintain state across several point, number, keyword, or object-selection inputs.</p>
<h3 id="shortcut-conventions">Shortcut conventions</h3>
<p>Application and operating-system shortcuts can differ between native and web builds. Avoid assigning browser-reserved shortcuts to web-only workflows.</p>
<nav class="page-navigation" aria-label="Previous and next chapter"><a rel="prev" href="parametric-constraints.html">← Parametric Constraints</a><a rel="next" href="automation-plugins.html">Automation and Plugins →</a></nav>
<p class="date-footer">OpenCAD Studio Help · Generated from <code>help/manual.md</code></p>
</div>
</main>
</body>
</html>
+45
View File
@@ -0,0 +1,45 @@
{
"schema_version": 1,
"fallback": "index.html",
"commands": {
"NEW": "files-drawings.html#create-and-open-drawings",
"OPEN": "files-drawings.html#create-and-open-drawings",
"SAVE": "files-drawings.html#save-and-save-as",
"SAVEAS": "files-drawings.html#save-and-save-as",
"RECOVER": "files-drawings.html#recovery-and-backups",
"LINE": "create-edit-geometry.html#basic-drawing-commands",
"CIRCLE": "create-edit-geometry.html#basic-drawing-commands",
"PLINE": "create-edit-geometry.html#basic-drawing-commands",
"ERASE": "create-edit-geometry.html#modify-geometry",
"UNDO": "create-edit-geometry.html#undo-redo-and-oops",
"REDO": "create-edit-geometry.html#undo-redo-and-oops",
"OOPS": "create-edit-geometry.html#undo-redo-and-oops",
"LAYER": "layers-properties.html#layers",
"CHPROP": "layers-properties.html#object-properties",
"BLOCK": "blocks-references.html#create-and-insert-blocks",
"INSERT": "blocks-references.html#create-and-insert-blocks",
"MINSERT": "blocks-references.html#array-inserts",
"DIM": "annotation-dimensions.html#dimensions",
"PLOT": "layouts-plotting.html#page-setup-and-plot-preview",
"EXTRUDE": "3d-modeling.html#solids-and-surfaces",
"REVOLVE": "3d-modeling.html#solids-and-surfaces",
"HCONSTRAINT": "parametric-constraints.html#geometric-constraints",
"VCONSTRAINT": "parametric-constraints.html#geometric-constraints",
"PCONSTRAINT": "parametric-constraints.html#geometric-constraints",
"QCONSTRAINT": "parametric-constraints.html#geometric-constraints",
"ECONSTRAINT": "parametric-constraints.html#geometric-constraints",
"CCONSTRAINT": "parametric-constraints.html#geometric-constraints",
"TCONSTRAINT": "parametric-constraints.html#geometric-constraints"
},
"surfaces": {
"file-open": "files-drawings.html#create-and-open-drawings",
"file-save": "files-drawings.html#save-and-save-as",
"layers": "layers-properties.html#layers",
"properties": "layers-properties.html#object-properties",
"plot": "layouts-plotting.html#page-setup-and-plot-preview",
"plugin-manager": "automation-plugins.html#plugins",
"constraint-conflicts": "parametric-constraints.html#editing-constrained-geometry",
"recovery": "troubleshooting-recovery.html#a-drawing-opens-incorrectly"
}
}
+57
View File
@@ -0,0 +1,57 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="OpenCAD Studio user manual — Create and Edit Geometry">
<title>Create and Edit Geometry — OpenCAD Studio Help</title>
<link rel="stylesheet" href="assets/css/core.css">
<link rel="stylesheet" href="assets/css/opencad.css">
<script src="search-index.js" defer></script>
<script src="assets/js/help.js" defer></script>
</head>
<body>
<header class="topbar">
<button class="nav-toggle" type="button" aria-controls="help-sidebar" aria-expanded="true" title="Toggle chapter navigation"><span aria-hidden="true">☰</span><span class="sr-only">Toggle chapter navigation</span></button>
<a class="brand" href="index.html">OpenCAD Studio Help</a>
<div class="search-shell">
<label class="sr-only" for="help-search">Search help</label>
<input id="help-search" class="help-search" type="search" role="combobox" placeholder="Search commands and topics" autocomplete="off" aria-autocomplete="list" aria-controls="search-results" aria-expanded="false">
<span class="search-key" aria-hidden="true">⌘K</span>
<ul id="search-results" class="search-results" role="listbox" hidden></ul>
</div>
</header>
<nav id="help-sidebar" class="sidebar" aria-label="Help chapters">
<div><a class="chapter-link" href="index.html">Help overview</a></div>
<details><summary><a href="getting-started.html">Getting Started</a></summary><ul><li><a href="getting-started.html#what-opencad-studio-does">What OpenCAD Studio does</a></li><li><a href="getting-started.html#a-first-drawing">A first drawing</a></li><li><a href="getting-started.html#how-to-use-this-manual">How to use this manual</a></li></ul></details>
<details><summary><a href="files-drawings.html">Files and Drawings</a></summary><ul><li><a href="files-drawings.html#create-and-open-drawings">Create and open drawings</a></li><li><a href="files-drawings.html#save-and-save-as">Save and Save As</a></li><li><a href="files-drawings.html#recovery-and-backups">Recovery and backups</a></li><li><a href="files-drawings.html#external-resources">External resources</a></li></ul></details>
<details><summary><a href="workspace-navigation.html">Workspace and Navigation</a></summary><ul><li><a href="workspace-navigation.html#model-space-and-paper-space">Model space and paper space</a></li><li><a href="workspace-navigation.html#pan-zoom-and-orbit">Pan, zoom, and orbit</a></li><li><a href="workspace-navigation.html#multiple-model-viewports">Multiple model viewports</a></li><li><a href="workspace-navigation.html#selection-and-object-snaps">Selection and object snaps</a></li></ul></details>
<details class="current-topic" open><summary><a href="create-edit-geometry.html">Create and Edit Geometry</a></summary><ul><li><a href="create-edit-geometry.html#basic-drawing-commands">Basic drawing commands</a></li><li><a href="create-edit-geometry.html#modify-geometry">Modify geometry</a></li><li><a href="create-edit-geometry.html#grips-and-direct-manipulation">Grips and direct manipulation</a></li><li><a href="create-edit-geometry.html#undo-redo-and-oops">Undo, redo, and OOPS</a></li></ul></details>
<details><summary><a href="layers-properties.html">Layers and Properties</a></summary><ul><li><a href="layers-properties.html#layers">Layers</a></li><li><a href="layers-properties.html#object-properties">Object properties</a></li><li><a href="layers-properties.html#styles">Styles</a></li></ul></details>
<details><summary><a href="blocks-references.html">Blocks and References</a></summary><ul><li><a href="blocks-references.html#create-and-insert-blocks">Create and insert blocks</a></li><li><a href="blocks-references.html#array-inserts">Array inserts</a></li><li><a href="blocks-references.html#attributes-and-external-references">Attributes and external references</a></li></ul></details>
<details><summary><a href="annotation-dimensions.html">Annotation and Dimensions</a></summary><ul><li><a href="annotation-dimensions.html#text-and-annotation">Text and annotation</a></li><li><a href="annotation-dimensions.html#dimensions">Dimensions</a></li><li><a href="annotation-dimensions.html#annotation-scale">Annotation scale</a></li></ul></details>
<details><summary><a href="layouts-plotting.html">Layouts and Plotting</a></summary><ul><li><a href="layouts-plotting.html#layouts-and-viewports">Layouts and viewports</a></li><li><a href="layouts-plotting.html#page-setup-and-plot-preview">Page setup and plot preview</a></li><li><a href="layouts-plotting.html#export-checks">Export checks</a></li></ul></details>
<details><summary><a href="3d-modeling.html">3D Modeling and Visualization</a></summary><ul><li><a href="3d-modeling.html#solids-and-surfaces">Solids and surfaces</a></li><li><a href="3d-modeling.html#visual-styles-and-lighting">Visual styles and lighting</a></li><li><a href="3d-modeling.html#tessellation-quality">Tessellation quality</a></li></ul></details>
<details><summary><a href="parametric-constraints.html">Parametric Constraints</a></summary><ul><li><a href="parametric-constraints.html#geometric-constraints">Geometric constraints</a></li><li><a href="parametric-constraints.html#editing-constrained-geometry">Editing constrained geometry</a></li><li><a href="parametric-constraints.html#persistence-and-history-limitations">Persistence and history limitations</a></li></ul></details>
<details><summary><a href="commands-shortcuts.html">Commands and Shortcuts</a></summary><ul><li><a href="commands-shortcuts.html#command-line">Command line</a></li><li><a href="commands-shortcuts.html#discover-commands">Discover commands</a></li><li><a href="commands-shortcuts.html#shortcut-conventions">Shortcut conventions</a></li></ul></details>
<details><summary><a href="automation-plugins.html">Automation and Plugins</a></summary><ul><li><a href="automation-plugins.html#automation-interface">Automation interface</a></li><li><a href="automation-plugins.html#plugins">Plugins</a></li><li><a href="automation-plugins.html#native-and-web-differences">Native and web differences</a></li></ul></details>
<details><summary><a href="troubleshooting-recovery.html">Troubleshooting and Recovery</a></summary><ul><li><a href="troubleshooting-recovery.html#a-drawing-opens-incorrectly">A drawing opens incorrectly</a></li><li><a href="troubleshooting-recovery.html#geometry-is-missing-or-distorted">Geometry is missing or distorted</a></li><li><a href="troubleshooting-recovery.html#rendering-is-incomplete">Rendering is incomplete</a></li><li><a href="troubleshooting-recovery.html#undo-did-not-restore-the-expected-state">Undo did not restore the expected state</a></li><li><a href="troubleshooting-recovery.html#report-a-reproducible-problem">Report a reproducible problem</a></li></ul></details>
</nav>
<main id="main-content">
<div class="content-wrap">
<p class="page-kicker">OpenCAD Studio User Manual</p>
<h1 class="content-title">Create and Edit Geometry</h1>
<h3 id="basic-drawing-commands">Basic drawing commands</h3>
<p>Create lines, arcs, circles, ellipses, polylines, splines, points, text, hatches, and other supported entities from the ribbon or command line. Follow the active prompt: multi-step commands remain active until they complete or are cancelled.</p>
<h3 id="modify-geometry">Modify geometry</h3>
<p>Common modification workflows include move, copy, rotate, scale, mirror, offset, trim, extend, fillet, chamfer, stretch, join, explode, and erase. Locked layers can prevent modification.</p>
<h3 id="grips-and-direct-manipulation">Grips and direct manipulation</h3>
<p>Select an entity to expose its grips. Dragging a grip previews and then commits a geometric change. Constrained neighboring geometry may update with it.</p>
<h3 id="undo-redo-and-oops">Undo, redo, and OOPS</h3>
<p><strong>Undo</strong> reverses recorded document operations and <strong>Redo</strong> reapplies them. <strong>OOPS</strong> restores the most recently erased entities without reversing later commands. Save before a risky sequence and verify that associated dimensions, hatches, groups, and constraints were restored with their geometry.</p>
<nav class="page-navigation" aria-label="Previous and next chapter"><a rel="prev" href="workspace-navigation.html">← Workspace and Navigation</a><a rel="next" href="layers-properties.html">Layers and Properties →</a></nav>
<p class="date-footer">OpenCAD Studio Help · Generated from <code>help/manual.md</code></p>
</div>
</main>
</body>
</html>
+57
View File
@@ -0,0 +1,57 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="OpenCAD Studio user manual — Files and Drawings">
<title>Files and Drawings — OpenCAD Studio Help</title>
<link rel="stylesheet" href="assets/css/core.css">
<link rel="stylesheet" href="assets/css/opencad.css">
<script src="search-index.js" defer></script>
<script src="assets/js/help.js" defer></script>
</head>
<body>
<header class="topbar">
<button class="nav-toggle" type="button" aria-controls="help-sidebar" aria-expanded="true" title="Toggle chapter navigation"><span aria-hidden="true">☰</span><span class="sr-only">Toggle chapter navigation</span></button>
<a class="brand" href="index.html">OpenCAD Studio Help</a>
<div class="search-shell">
<label class="sr-only" for="help-search">Search help</label>
<input id="help-search" class="help-search" type="search" role="combobox" placeholder="Search commands and topics" autocomplete="off" aria-autocomplete="list" aria-controls="search-results" aria-expanded="false">
<span class="search-key" aria-hidden="true">⌘K</span>
<ul id="search-results" class="search-results" role="listbox" hidden></ul>
</div>
</header>
<nav id="help-sidebar" class="sidebar" aria-label="Help chapters">
<div><a class="chapter-link" href="index.html">Help overview</a></div>
<details><summary><a href="getting-started.html">Getting Started</a></summary><ul><li><a href="getting-started.html#what-opencad-studio-does">What OpenCAD Studio does</a></li><li><a href="getting-started.html#a-first-drawing">A first drawing</a></li><li><a href="getting-started.html#how-to-use-this-manual">How to use this manual</a></li></ul></details>
<details class="current-topic" open><summary><a href="files-drawings.html">Files and Drawings</a></summary><ul><li><a href="files-drawings.html#create-and-open-drawings">Create and open drawings</a></li><li><a href="files-drawings.html#save-and-save-as">Save and Save As</a></li><li><a href="files-drawings.html#recovery-and-backups">Recovery and backups</a></li><li><a href="files-drawings.html#external-resources">External resources</a></li></ul></details>
<details><summary><a href="workspace-navigation.html">Workspace and Navigation</a></summary><ul><li><a href="workspace-navigation.html#model-space-and-paper-space">Model space and paper space</a></li><li><a href="workspace-navigation.html#pan-zoom-and-orbit">Pan, zoom, and orbit</a></li><li><a href="workspace-navigation.html#multiple-model-viewports">Multiple model viewports</a></li><li><a href="workspace-navigation.html#selection-and-object-snaps">Selection and object snaps</a></li></ul></details>
<details><summary><a href="create-edit-geometry.html">Create and Edit Geometry</a></summary><ul><li><a href="create-edit-geometry.html#basic-drawing-commands">Basic drawing commands</a></li><li><a href="create-edit-geometry.html#modify-geometry">Modify geometry</a></li><li><a href="create-edit-geometry.html#grips-and-direct-manipulation">Grips and direct manipulation</a></li><li><a href="create-edit-geometry.html#undo-redo-and-oops">Undo, redo, and OOPS</a></li></ul></details>
<details><summary><a href="layers-properties.html">Layers and Properties</a></summary><ul><li><a href="layers-properties.html#layers">Layers</a></li><li><a href="layers-properties.html#object-properties">Object properties</a></li><li><a href="layers-properties.html#styles">Styles</a></li></ul></details>
<details><summary><a href="blocks-references.html">Blocks and References</a></summary><ul><li><a href="blocks-references.html#create-and-insert-blocks">Create and insert blocks</a></li><li><a href="blocks-references.html#array-inserts">Array inserts</a></li><li><a href="blocks-references.html#attributes-and-external-references">Attributes and external references</a></li></ul></details>
<details><summary><a href="annotation-dimensions.html">Annotation and Dimensions</a></summary><ul><li><a href="annotation-dimensions.html#text-and-annotation">Text and annotation</a></li><li><a href="annotation-dimensions.html#dimensions">Dimensions</a></li><li><a href="annotation-dimensions.html#annotation-scale">Annotation scale</a></li></ul></details>
<details><summary><a href="layouts-plotting.html">Layouts and Plotting</a></summary><ul><li><a href="layouts-plotting.html#layouts-and-viewports">Layouts and viewports</a></li><li><a href="layouts-plotting.html#page-setup-and-plot-preview">Page setup and plot preview</a></li><li><a href="layouts-plotting.html#export-checks">Export checks</a></li></ul></details>
<details><summary><a href="3d-modeling.html">3D Modeling and Visualization</a></summary><ul><li><a href="3d-modeling.html#solids-and-surfaces">Solids and surfaces</a></li><li><a href="3d-modeling.html#visual-styles-and-lighting">Visual styles and lighting</a></li><li><a href="3d-modeling.html#tessellation-quality">Tessellation quality</a></li></ul></details>
<details><summary><a href="parametric-constraints.html">Parametric Constraints</a></summary><ul><li><a href="parametric-constraints.html#geometric-constraints">Geometric constraints</a></li><li><a href="parametric-constraints.html#editing-constrained-geometry">Editing constrained geometry</a></li><li><a href="parametric-constraints.html#persistence-and-history-limitations">Persistence and history limitations</a></li></ul></details>
<details><summary><a href="commands-shortcuts.html">Commands and Shortcuts</a></summary><ul><li><a href="commands-shortcuts.html#command-line">Command line</a></li><li><a href="commands-shortcuts.html#discover-commands">Discover commands</a></li><li><a href="commands-shortcuts.html#shortcut-conventions">Shortcut conventions</a></li></ul></details>
<details><summary><a href="automation-plugins.html">Automation and Plugins</a></summary><ul><li><a href="automation-plugins.html#automation-interface">Automation interface</a></li><li><a href="automation-plugins.html#plugins">Plugins</a></li><li><a href="automation-plugins.html#native-and-web-differences">Native and web differences</a></li></ul></details>
<details><summary><a href="troubleshooting-recovery.html">Troubleshooting and Recovery</a></summary><ul><li><a href="troubleshooting-recovery.html#a-drawing-opens-incorrectly">A drawing opens incorrectly</a></li><li><a href="troubleshooting-recovery.html#geometry-is-missing-or-distorted">Geometry is missing or distorted</a></li><li><a href="troubleshooting-recovery.html#rendering-is-incomplete">Rendering is incomplete</a></li><li><a href="troubleshooting-recovery.html#undo-did-not-restore-the-expected-state">Undo did not restore the expected state</a></li><li><a href="troubleshooting-recovery.html#report-a-reproducible-problem">Report a reproducible problem</a></li></ul></details>
</nav>
<main id="main-content">
<div class="content-wrap">
<p class="page-kicker">OpenCAD Studio User Manual</p>
<h1 class="content-title">Files and Drawings</h1>
<h3 id="create-and-open-drawings">Create and open drawings</h3>
<p>Use <strong>New</strong> for a blank document and <strong>Open</strong> for an existing DWG, DXF, backup, or autosave drawing. After opening a file from another CAD system, inspect its units, layers, blocks, fonts, raster references, layouts, and model extents.</p>
<h3 id="save-and-save-as">Save and Save As</h3>
<p><strong>Save</strong> updates the current drawing. <strong>Save As</strong> changes its path, format, or version. Prefer Save As when validating interoperability or recovering an older drawing. A successful write does not replace visual inspection of a reopened copy.</p>
<h3 id="recovery-and-backups">Recovery and backups</h3>
<p>OpenCAD Studio recognizes drawing backups and autosave-style files where the underlying data is DWG or DXF. If strict loading rejects malformed entities, use the recovery workflow and review what was discarded before continuing work.</p>
<h3 id="external-resources">External resources</h3>
<p>Raster images, underlays, fonts, materials, and external references may depend on paths outside the drawing. Keep referenced files together when moving a project and verify that relative paths still resolve.</p>
<nav class="page-navigation" aria-label="Previous and next chapter"><a rel="prev" href="getting-started.html">← Getting Started</a><a rel="next" href="workspace-navigation.html">Workspace and Navigation →</a></nav>
<p class="date-footer">OpenCAD Studio Help · Generated from <code>help/manual.md</code></p>
</div>
</main>
</body>
</html>
+64
View File
@@ -0,0 +1,64 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="OpenCAD Studio user manual — Getting Started">
<title>Getting Started — OpenCAD Studio Help</title>
<link rel="stylesheet" href="assets/css/core.css">
<link rel="stylesheet" href="assets/css/opencad.css">
<script src="search-index.js" defer></script>
<script src="assets/js/help.js" defer></script>
</head>
<body>
<header class="topbar">
<button class="nav-toggle" type="button" aria-controls="help-sidebar" aria-expanded="true" title="Toggle chapter navigation"><span aria-hidden="true">☰</span><span class="sr-only">Toggle chapter navigation</span></button>
<a class="brand" href="index.html">OpenCAD Studio Help</a>
<div class="search-shell">
<label class="sr-only" for="help-search">Search help</label>
<input id="help-search" class="help-search" type="search" role="combobox" placeholder="Search commands and topics" autocomplete="off" aria-autocomplete="list" aria-controls="search-results" aria-expanded="false">
<span class="search-key" aria-hidden="true">⌘K</span>
<ul id="search-results" class="search-results" role="listbox" hidden></ul>
</div>
</header>
<nav id="help-sidebar" class="sidebar" aria-label="Help chapters">
<div><a class="chapter-link" href="index.html">Help overview</a></div>
<details class="current-topic" open><summary><a href="getting-started.html">Getting Started</a></summary><ul><li><a href="getting-started.html#what-opencad-studio-does">What OpenCAD Studio does</a></li><li><a href="getting-started.html#a-first-drawing">A first drawing</a></li><li><a href="getting-started.html#how-to-use-this-manual">How to use this manual</a></li></ul></details>
<details><summary><a href="files-drawings.html">Files and Drawings</a></summary><ul><li><a href="files-drawings.html#create-and-open-drawings">Create and open drawings</a></li><li><a href="files-drawings.html#save-and-save-as">Save and Save As</a></li><li><a href="files-drawings.html#recovery-and-backups">Recovery and backups</a></li><li><a href="files-drawings.html#external-resources">External resources</a></li></ul></details>
<details><summary><a href="workspace-navigation.html">Workspace and Navigation</a></summary><ul><li><a href="workspace-navigation.html#model-space-and-paper-space">Model space and paper space</a></li><li><a href="workspace-navigation.html#pan-zoom-and-orbit">Pan, zoom, and orbit</a></li><li><a href="workspace-navigation.html#multiple-model-viewports">Multiple model viewports</a></li><li><a href="workspace-navigation.html#selection-and-object-snaps">Selection and object snaps</a></li></ul></details>
<details><summary><a href="create-edit-geometry.html">Create and Edit Geometry</a></summary><ul><li><a href="create-edit-geometry.html#basic-drawing-commands">Basic drawing commands</a></li><li><a href="create-edit-geometry.html#modify-geometry">Modify geometry</a></li><li><a href="create-edit-geometry.html#grips-and-direct-manipulation">Grips and direct manipulation</a></li><li><a href="create-edit-geometry.html#undo-redo-and-oops">Undo, redo, and OOPS</a></li></ul></details>
<details><summary><a href="layers-properties.html">Layers and Properties</a></summary><ul><li><a href="layers-properties.html#layers">Layers</a></li><li><a href="layers-properties.html#object-properties">Object properties</a></li><li><a href="layers-properties.html#styles">Styles</a></li></ul></details>
<details><summary><a href="blocks-references.html">Blocks and References</a></summary><ul><li><a href="blocks-references.html#create-and-insert-blocks">Create and insert blocks</a></li><li><a href="blocks-references.html#array-inserts">Array inserts</a></li><li><a href="blocks-references.html#attributes-and-external-references">Attributes and external references</a></li></ul></details>
<details><summary><a href="annotation-dimensions.html">Annotation and Dimensions</a></summary><ul><li><a href="annotation-dimensions.html#text-and-annotation">Text and annotation</a></li><li><a href="annotation-dimensions.html#dimensions">Dimensions</a></li><li><a href="annotation-dimensions.html#annotation-scale">Annotation scale</a></li></ul></details>
<details><summary><a href="layouts-plotting.html">Layouts and Plotting</a></summary><ul><li><a href="layouts-plotting.html#layouts-and-viewports">Layouts and viewports</a></li><li><a href="layouts-plotting.html#page-setup-and-plot-preview">Page setup and plot preview</a></li><li><a href="layouts-plotting.html#export-checks">Export checks</a></li></ul></details>
<details><summary><a href="3d-modeling.html">3D Modeling and Visualization</a></summary><ul><li><a href="3d-modeling.html#solids-and-surfaces">Solids and surfaces</a></li><li><a href="3d-modeling.html#visual-styles-and-lighting">Visual styles and lighting</a></li><li><a href="3d-modeling.html#tessellation-quality">Tessellation quality</a></li></ul></details>
<details><summary><a href="parametric-constraints.html">Parametric Constraints</a></summary><ul><li><a href="parametric-constraints.html#geometric-constraints">Geometric constraints</a></li><li><a href="parametric-constraints.html#editing-constrained-geometry">Editing constrained geometry</a></li><li><a href="parametric-constraints.html#persistence-and-history-limitations">Persistence and history limitations</a></li></ul></details>
<details><summary><a href="commands-shortcuts.html">Commands and Shortcuts</a></summary><ul><li><a href="commands-shortcuts.html#command-line">Command line</a></li><li><a href="commands-shortcuts.html#discover-commands">Discover commands</a></li><li><a href="commands-shortcuts.html#shortcut-conventions">Shortcut conventions</a></li></ul></details>
<details><summary><a href="automation-plugins.html">Automation and Plugins</a></summary><ul><li><a href="automation-plugins.html#automation-interface">Automation interface</a></li><li><a href="automation-plugins.html#plugins">Plugins</a></li><li><a href="automation-plugins.html#native-and-web-differences">Native and web differences</a></li></ul></details>
<details><summary><a href="troubleshooting-recovery.html">Troubleshooting and Recovery</a></summary><ul><li><a href="troubleshooting-recovery.html#a-drawing-opens-incorrectly">A drawing opens incorrectly</a></li><li><a href="troubleshooting-recovery.html#geometry-is-missing-or-distorted">Geometry is missing or distorted</a></li><li><a href="troubleshooting-recovery.html#rendering-is-incomplete">Rendering is incomplete</a></li><li><a href="troubleshooting-recovery.html#undo-did-not-restore-the-expected-state">Undo did not restore the expected state</a></li><li><a href="troubleshooting-recovery.html#report-a-reproducible-problem">Report a reproducible problem</a></li></ul></details>
</nav>
<main id="main-content">
<div class="content-wrap">
<p class="page-kicker">OpenCAD Studio User Manual</p>
<h1 class="content-title">Getting Started</h1>
<h3 id="what-opencad-studio-does">What OpenCAD Studio does</h3>
<p>OpenCAD Studio is a desktop and web CAD application for opening, creating, editing, visualizing, and saving two- and three-dimensional drawings. It works with DWG and DXF drawings and provides command-line, ribbon, automation, and plugin-oriented workflows.</p>
<h3 id="a-first-drawing">A first drawing</h3>
<ol type="1">
<li>Create a new drawing or open an existing DWG or DXF file.</li>
<li>Confirm the active workspace, units, layer, and object-snap settings.</li>
<li>Create geometry with a drawing command such as <strong>Line</strong>, <strong>Circle</strong>, or <strong>Polyline</strong>.</li>
<li>Edit the result with grips or a modification command.</li>
<li>Save the drawing under a new name until its compatibility has been verified.</li>
</ol>
<blockquote>
<p><strong>Data safety:</strong> Keep an untouched copy of important third-party drawings. Confirm geometry, layouts, external references, and plotted output before replacing the original file.</p>
</blockquote>
<h3 id="how-to-use-this-manual">How to use this manual</h3>
<p>Use the chapter navigation for broad workflows, the search box for a command or concept, and the previous/next links for sequential reading. Command names, system variables, keys, and file extensions appear in <code>monospaced text</code>.</p>
<nav class="page-navigation" aria-label="Previous and next chapter"><a rel="prev" href="index.html">← Help overview</a><a rel="next" href="files-drawings.html">Files and Drawings →</a></nav>
<p class="date-footer">OpenCAD Studio Help · Generated from <code>help/manual.md</code></p>
</div>
</main>
</body>
</html>
+61
View File
@@ -0,0 +1,61 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="OpenCAD Studio user manual — Help overview">
<title>Help overview — OpenCAD Studio Help</title>
<link rel="stylesheet" href="assets/css/core.css">
<link rel="stylesheet" href="assets/css/opencad.css">
<script src="search-index.js" defer></script>
<script src="assets/js/help.js" defer></script>
</head>
<body>
<header class="topbar">
<button class="nav-toggle" type="button" aria-controls="help-sidebar" aria-expanded="true" title="Toggle chapter navigation"><span aria-hidden="true">☰</span><span class="sr-only">Toggle chapter navigation</span></button>
<a class="brand" href="index.html">OpenCAD Studio Help</a>
<div class="search-shell">
<label class="sr-only" for="help-search">Search help</label>
<input id="help-search" class="help-search" type="search" role="combobox" placeholder="Search commands and topics" autocomplete="off" aria-autocomplete="list" aria-controls="search-results" aria-expanded="false">
<span class="search-key" aria-hidden="true">⌘K</span>
<ul id="search-results" class="search-results" role="listbox" hidden></ul>
</div>
</header>
<nav id="help-sidebar" class="sidebar" aria-label="Help chapters">
<div class="current-topic"><a class="chapter-link" href="index.html">Help overview</a></div>
<details><summary><a href="getting-started.html">Getting Started</a></summary><ul><li><a href="getting-started.html#what-opencad-studio-does">What OpenCAD Studio does</a></li><li><a href="getting-started.html#a-first-drawing">A first drawing</a></li><li><a href="getting-started.html#how-to-use-this-manual">How to use this manual</a></li></ul></details>
<details><summary><a href="files-drawings.html">Files and Drawings</a></summary><ul><li><a href="files-drawings.html#create-and-open-drawings">Create and open drawings</a></li><li><a href="files-drawings.html#save-and-save-as">Save and Save As</a></li><li><a href="files-drawings.html#recovery-and-backups">Recovery and backups</a></li><li><a href="files-drawings.html#external-resources">External resources</a></li></ul></details>
<details><summary><a href="workspace-navigation.html">Workspace and Navigation</a></summary><ul><li><a href="workspace-navigation.html#model-space-and-paper-space">Model space and paper space</a></li><li><a href="workspace-navigation.html#pan-zoom-and-orbit">Pan, zoom, and orbit</a></li><li><a href="workspace-navigation.html#multiple-model-viewports">Multiple model viewports</a></li><li><a href="workspace-navigation.html#selection-and-object-snaps">Selection and object snaps</a></li></ul></details>
<details><summary><a href="create-edit-geometry.html">Create and Edit Geometry</a></summary><ul><li><a href="create-edit-geometry.html#basic-drawing-commands">Basic drawing commands</a></li><li><a href="create-edit-geometry.html#modify-geometry">Modify geometry</a></li><li><a href="create-edit-geometry.html#grips-and-direct-manipulation">Grips and direct manipulation</a></li><li><a href="create-edit-geometry.html#undo-redo-and-oops">Undo, redo, and OOPS</a></li></ul></details>
<details><summary><a href="layers-properties.html">Layers and Properties</a></summary><ul><li><a href="layers-properties.html#layers">Layers</a></li><li><a href="layers-properties.html#object-properties">Object properties</a></li><li><a href="layers-properties.html#styles">Styles</a></li></ul></details>
<details><summary><a href="blocks-references.html">Blocks and References</a></summary><ul><li><a href="blocks-references.html#create-and-insert-blocks">Create and insert blocks</a></li><li><a href="blocks-references.html#array-inserts">Array inserts</a></li><li><a href="blocks-references.html#attributes-and-external-references">Attributes and external references</a></li></ul></details>
<details><summary><a href="annotation-dimensions.html">Annotation and Dimensions</a></summary><ul><li><a href="annotation-dimensions.html#text-and-annotation">Text and annotation</a></li><li><a href="annotation-dimensions.html#dimensions">Dimensions</a></li><li><a href="annotation-dimensions.html#annotation-scale">Annotation scale</a></li></ul></details>
<details><summary><a href="layouts-plotting.html">Layouts and Plotting</a></summary><ul><li><a href="layouts-plotting.html#layouts-and-viewports">Layouts and viewports</a></li><li><a href="layouts-plotting.html#page-setup-and-plot-preview">Page setup and plot preview</a></li><li><a href="layouts-plotting.html#export-checks">Export checks</a></li></ul></details>
<details><summary><a href="3d-modeling.html">3D Modeling and Visualization</a></summary><ul><li><a href="3d-modeling.html#solids-and-surfaces">Solids and surfaces</a></li><li><a href="3d-modeling.html#visual-styles-and-lighting">Visual styles and lighting</a></li><li><a href="3d-modeling.html#tessellation-quality">Tessellation quality</a></li></ul></details>
<details><summary><a href="parametric-constraints.html">Parametric Constraints</a></summary><ul><li><a href="parametric-constraints.html#geometric-constraints">Geometric constraints</a></li><li><a href="parametric-constraints.html#editing-constrained-geometry">Editing constrained geometry</a></li><li><a href="parametric-constraints.html#persistence-and-history-limitations">Persistence and history limitations</a></li></ul></details>
<details><summary><a href="commands-shortcuts.html">Commands and Shortcuts</a></summary><ul><li><a href="commands-shortcuts.html#command-line">Command line</a></li><li><a href="commands-shortcuts.html#discover-commands">Discover commands</a></li><li><a href="commands-shortcuts.html#shortcut-conventions">Shortcut conventions</a></li></ul></details>
<details><summary><a href="automation-plugins.html">Automation and Plugins</a></summary><ul><li><a href="automation-plugins.html#automation-interface">Automation interface</a></li><li><a href="automation-plugins.html#plugins">Plugins</a></li><li><a href="automation-plugins.html#native-and-web-differences">Native and web differences</a></li></ul></details>
<details><summary><a href="troubleshooting-recovery.html">Troubleshooting and Recovery</a></summary><ul><li><a href="troubleshooting-recovery.html#a-drawing-opens-incorrectly">A drawing opens incorrectly</a></li><li><a href="troubleshooting-recovery.html#geometry-is-missing-or-distorted">Geometry is missing or distorted</a></li><li><a href="troubleshooting-recovery.html#rendering-is-incomplete">Rendering is incomplete</a></li><li><a href="troubleshooting-recovery.html#undo-did-not-restore-the-expected-state">Undo did not restore the expected state</a></li><li><a href="troubleshooting-recovery.html#report-a-reproducible-problem">Report a reproducible problem</a></li></ul></details>
</nav>
<main id="main-content">
<div class="content-wrap">
<p class="page-kicker">OpenCAD Studio User Manual</p>
<h1 class="content-title">Help overview</h1>
<section class="hero">
<p class="eyebrow">OpenCAD Studio User Manual</p>
<h2>Find the workflow, command, or concept you need</h2>
<p>Learn how to create and edit drawings, exchange DWG and DXF files, prepare layouts, model in 3D, use constraints, automate work, and recover from common problems.</p>
</section>
<div class="quick-paths" aria-label="Common help paths">
<a href="getting-started.html#a-first-drawing">Create a first drawing</a>
<a href="files-drawings.html#recovery-and-backups">Recover a drawing</a>
<a href="troubleshooting-recovery.html#report-a-reproducible-problem">Report a problem</a>
</div>
<h2 id="manual-chapters">Manual chapters</h2>
<div class="chapter-grid"><a class="chapter-card" href="getting-started.html"><strong>Getting Started</strong><span>Begin a drawing safely and learn how to use this manual.</span></a><a class="chapter-card" href="files-drawings.html"><strong>Files and Drawings</strong><span>Open, save, recover, and move drawings with their dependencies.</span></a><a class="chapter-card" href="workspace-navigation.html"><strong>Workspace and Navigation</strong><span>Work with spaces, views, selection, and object snaps.</span></a><a class="chapter-card" href="create-edit-geometry.html"><strong>Create and Edit Geometry</strong><span>Draw, modify, grip-edit, erase, and restore geometry.</span></a><a class="chapter-card" href="layers-properties.html"><strong>Layers and Properties</strong><span>Organize objects and control their inherited appearance.</span></a><a class="chapter-card" href="blocks-references.html"><strong>Blocks and References</strong><span>Create reusable content, arrays, attributes, and file references.</span></a><a class="chapter-card" href="annotation-dimensions.html"><strong>Annotation and Dimensions</strong><span>Add readable text, dimensions, leaders, and scaled annotation.</span></a><a class="chapter-card" href="layouts-plotting.html"><strong>Layouts and Plotting</strong><span>Prepare paper-space sheets and verify plotted output.</span></a><a class="chapter-card" href="3d-modeling.html"><strong>3D Modeling and Visualization</strong><span>Create and inspect solids, surfaces, materials, and visual styles.</span></a><a class="chapter-card" href="parametric-constraints.html"><strong>Parametric Constraints</strong><span>Capture geometric intent and diagnose solve or history issues.</span></a><a class="chapter-card" href="commands-shortcuts.html"><strong>Commands and Shortcuts</strong><span>Use prompts, autocomplete, aliases, and keyboard conventions.</span></a><a class="chapter-card" href="automation-plugins.html"><strong>Automation and Plugins</strong><span>Control drawings programmatically and extend the native app.</span></a><a class="chapter-card" href="troubleshooting-recovery.html"><strong>Troubleshooting and Recovery</strong><span>Diagnose file, geometry, rendering, and history problems.</span></a></div>
<nav class="page-navigation" aria-label="Previous and next chapter"><a rel="next" href="getting-started.html">Getting Started →</a></nav>
<p class="date-footer">OpenCAD Studio Help · Generated from <code>help/manual.md</code></p>
</div>
</main>
</body>
</html>
+55
View File
@@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="OpenCAD Studio user manual — Layers and Properties">
<title>Layers and Properties — OpenCAD Studio Help</title>
<link rel="stylesheet" href="assets/css/core.css">
<link rel="stylesheet" href="assets/css/opencad.css">
<script src="search-index.js" defer></script>
<script src="assets/js/help.js" defer></script>
</head>
<body>
<header class="topbar">
<button class="nav-toggle" type="button" aria-controls="help-sidebar" aria-expanded="true" title="Toggle chapter navigation"><span aria-hidden="true">☰</span><span class="sr-only">Toggle chapter navigation</span></button>
<a class="brand" href="index.html">OpenCAD Studio Help</a>
<div class="search-shell">
<label class="sr-only" for="help-search">Search help</label>
<input id="help-search" class="help-search" type="search" role="combobox" placeholder="Search commands and topics" autocomplete="off" aria-autocomplete="list" aria-controls="search-results" aria-expanded="false">
<span class="search-key" aria-hidden="true">⌘K</span>
<ul id="search-results" class="search-results" role="listbox" hidden></ul>
</div>
</header>
<nav id="help-sidebar" class="sidebar" aria-label="Help chapters">
<div><a class="chapter-link" href="index.html">Help overview</a></div>
<details><summary><a href="getting-started.html">Getting Started</a></summary><ul><li><a href="getting-started.html#what-opencad-studio-does">What OpenCAD Studio does</a></li><li><a href="getting-started.html#a-first-drawing">A first drawing</a></li><li><a href="getting-started.html#how-to-use-this-manual">How to use this manual</a></li></ul></details>
<details><summary><a href="files-drawings.html">Files and Drawings</a></summary><ul><li><a href="files-drawings.html#create-and-open-drawings">Create and open drawings</a></li><li><a href="files-drawings.html#save-and-save-as">Save and Save As</a></li><li><a href="files-drawings.html#recovery-and-backups">Recovery and backups</a></li><li><a href="files-drawings.html#external-resources">External resources</a></li></ul></details>
<details><summary><a href="workspace-navigation.html">Workspace and Navigation</a></summary><ul><li><a href="workspace-navigation.html#model-space-and-paper-space">Model space and paper space</a></li><li><a href="workspace-navigation.html#pan-zoom-and-orbit">Pan, zoom, and orbit</a></li><li><a href="workspace-navigation.html#multiple-model-viewports">Multiple model viewports</a></li><li><a href="workspace-navigation.html#selection-and-object-snaps">Selection and object snaps</a></li></ul></details>
<details><summary><a href="create-edit-geometry.html">Create and Edit Geometry</a></summary><ul><li><a href="create-edit-geometry.html#basic-drawing-commands">Basic drawing commands</a></li><li><a href="create-edit-geometry.html#modify-geometry">Modify geometry</a></li><li><a href="create-edit-geometry.html#grips-and-direct-manipulation">Grips and direct manipulation</a></li><li><a href="create-edit-geometry.html#undo-redo-and-oops">Undo, redo, and OOPS</a></li></ul></details>
<details class="current-topic" open><summary><a href="layers-properties.html">Layers and Properties</a></summary><ul><li><a href="layers-properties.html#layers">Layers</a></li><li><a href="layers-properties.html#object-properties">Object properties</a></li><li><a href="layers-properties.html#styles">Styles</a></li></ul></details>
<details><summary><a href="blocks-references.html">Blocks and References</a></summary><ul><li><a href="blocks-references.html#create-and-insert-blocks">Create and insert blocks</a></li><li><a href="blocks-references.html#array-inserts">Array inserts</a></li><li><a href="blocks-references.html#attributes-and-external-references">Attributes and external references</a></li></ul></details>
<details><summary><a href="annotation-dimensions.html">Annotation and Dimensions</a></summary><ul><li><a href="annotation-dimensions.html#text-and-annotation">Text and annotation</a></li><li><a href="annotation-dimensions.html#dimensions">Dimensions</a></li><li><a href="annotation-dimensions.html#annotation-scale">Annotation scale</a></li></ul></details>
<details><summary><a href="layouts-plotting.html">Layouts and Plotting</a></summary><ul><li><a href="layouts-plotting.html#layouts-and-viewports">Layouts and viewports</a></li><li><a href="layouts-plotting.html#page-setup-and-plot-preview">Page setup and plot preview</a></li><li><a href="layouts-plotting.html#export-checks">Export checks</a></li></ul></details>
<details><summary><a href="3d-modeling.html">3D Modeling and Visualization</a></summary><ul><li><a href="3d-modeling.html#solids-and-surfaces">Solids and surfaces</a></li><li><a href="3d-modeling.html#visual-styles-and-lighting">Visual styles and lighting</a></li><li><a href="3d-modeling.html#tessellation-quality">Tessellation quality</a></li></ul></details>
<details><summary><a href="parametric-constraints.html">Parametric Constraints</a></summary><ul><li><a href="parametric-constraints.html#geometric-constraints">Geometric constraints</a></li><li><a href="parametric-constraints.html#editing-constrained-geometry">Editing constrained geometry</a></li><li><a href="parametric-constraints.html#persistence-and-history-limitations">Persistence and history limitations</a></li></ul></details>
<details><summary><a href="commands-shortcuts.html">Commands and Shortcuts</a></summary><ul><li><a href="commands-shortcuts.html#command-line">Command line</a></li><li><a href="commands-shortcuts.html#discover-commands">Discover commands</a></li><li><a href="commands-shortcuts.html#shortcut-conventions">Shortcut conventions</a></li></ul></details>
<details><summary><a href="automation-plugins.html">Automation and Plugins</a></summary><ul><li><a href="automation-plugins.html#automation-interface">Automation interface</a></li><li><a href="automation-plugins.html#plugins">Plugins</a></li><li><a href="automation-plugins.html#native-and-web-differences">Native and web differences</a></li></ul></details>
<details><summary><a href="troubleshooting-recovery.html">Troubleshooting and Recovery</a></summary><ul><li><a href="troubleshooting-recovery.html#a-drawing-opens-incorrectly">A drawing opens incorrectly</a></li><li><a href="troubleshooting-recovery.html#geometry-is-missing-or-distorted">Geometry is missing or distorted</a></li><li><a href="troubleshooting-recovery.html#rendering-is-incomplete">Rendering is incomplete</a></li><li><a href="troubleshooting-recovery.html#undo-did-not-restore-the-expected-state">Undo did not restore the expected state</a></li><li><a href="troubleshooting-recovery.html#report-a-reproducible-problem">Report a reproducible problem</a></li></ul></details>
</nav>
<main id="main-content">
<div class="content-wrap">
<p class="page-kicker">OpenCAD Studio User Manual</p>
<h1 class="content-title">Layers and Properties</h1>
<h3 id="layers">Layers</h3>
<p>Layers organize geometry and control visibility, locking, color, line type, line weight, and plot behavior. Set the intended active layer before creating objects. Avoid editing objects on locked layers.</p>
<h3 id="object-properties">Object properties</h3>
<p>Properties can be assigned explicitly or inherited <strong>ByLayer</strong> or <strong>ByBlock</strong>. Use the Properties surface or commands such as <code>CHPROP</code> to inspect and change selected objects.</p>
<h3 id="styles">Styles</h3>
<p>Text, dimension, multiline, table, and visual styles centralize presentation. Changing a shared style can update many objects, so inspect affected layouts before saving.</p>
<nav class="page-navigation" aria-label="Previous and next chapter"><a rel="prev" href="create-edit-geometry.html">← Create and Edit Geometry</a><a rel="next" href="blocks-references.html">Blocks and References →</a></nav>
<p class="date-footer">OpenCAD Studio Help · Generated from <code>help/manual.md</code></p>
</div>
</main>
</body>
</html>
+55
View File
@@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="OpenCAD Studio user manual — Layouts and Plotting">
<title>Layouts and Plotting — OpenCAD Studio Help</title>
<link rel="stylesheet" href="assets/css/core.css">
<link rel="stylesheet" href="assets/css/opencad.css">
<script src="search-index.js" defer></script>
<script src="assets/js/help.js" defer></script>
</head>
<body>
<header class="topbar">
<button class="nav-toggle" type="button" aria-controls="help-sidebar" aria-expanded="true" title="Toggle chapter navigation"><span aria-hidden="true">☰</span><span class="sr-only">Toggle chapter navigation</span></button>
<a class="brand" href="index.html">OpenCAD Studio Help</a>
<div class="search-shell">
<label class="sr-only" for="help-search">Search help</label>
<input id="help-search" class="help-search" type="search" role="combobox" placeholder="Search commands and topics" autocomplete="off" aria-autocomplete="list" aria-controls="search-results" aria-expanded="false">
<span class="search-key" aria-hidden="true">⌘K</span>
<ul id="search-results" class="search-results" role="listbox" hidden></ul>
</div>
</header>
<nav id="help-sidebar" class="sidebar" aria-label="Help chapters">
<div><a class="chapter-link" href="index.html">Help overview</a></div>
<details><summary><a href="getting-started.html">Getting Started</a></summary><ul><li><a href="getting-started.html#what-opencad-studio-does">What OpenCAD Studio does</a></li><li><a href="getting-started.html#a-first-drawing">A first drawing</a></li><li><a href="getting-started.html#how-to-use-this-manual">How to use this manual</a></li></ul></details>
<details><summary><a href="files-drawings.html">Files and Drawings</a></summary><ul><li><a href="files-drawings.html#create-and-open-drawings">Create and open drawings</a></li><li><a href="files-drawings.html#save-and-save-as">Save and Save As</a></li><li><a href="files-drawings.html#recovery-and-backups">Recovery and backups</a></li><li><a href="files-drawings.html#external-resources">External resources</a></li></ul></details>
<details><summary><a href="workspace-navigation.html">Workspace and Navigation</a></summary><ul><li><a href="workspace-navigation.html#model-space-and-paper-space">Model space and paper space</a></li><li><a href="workspace-navigation.html#pan-zoom-and-orbit">Pan, zoom, and orbit</a></li><li><a href="workspace-navigation.html#multiple-model-viewports">Multiple model viewports</a></li><li><a href="workspace-navigation.html#selection-and-object-snaps">Selection and object snaps</a></li></ul></details>
<details><summary><a href="create-edit-geometry.html">Create and Edit Geometry</a></summary><ul><li><a href="create-edit-geometry.html#basic-drawing-commands">Basic drawing commands</a></li><li><a href="create-edit-geometry.html#modify-geometry">Modify geometry</a></li><li><a href="create-edit-geometry.html#grips-and-direct-manipulation">Grips and direct manipulation</a></li><li><a href="create-edit-geometry.html#undo-redo-and-oops">Undo, redo, and OOPS</a></li></ul></details>
<details><summary><a href="layers-properties.html">Layers and Properties</a></summary><ul><li><a href="layers-properties.html#layers">Layers</a></li><li><a href="layers-properties.html#object-properties">Object properties</a></li><li><a href="layers-properties.html#styles">Styles</a></li></ul></details>
<details><summary><a href="blocks-references.html">Blocks and References</a></summary><ul><li><a href="blocks-references.html#create-and-insert-blocks">Create and insert blocks</a></li><li><a href="blocks-references.html#array-inserts">Array inserts</a></li><li><a href="blocks-references.html#attributes-and-external-references">Attributes and external references</a></li></ul></details>
<details><summary><a href="annotation-dimensions.html">Annotation and Dimensions</a></summary><ul><li><a href="annotation-dimensions.html#text-and-annotation">Text and annotation</a></li><li><a href="annotation-dimensions.html#dimensions">Dimensions</a></li><li><a href="annotation-dimensions.html#annotation-scale">Annotation scale</a></li></ul></details>
<details class="current-topic" open><summary><a href="layouts-plotting.html">Layouts and Plotting</a></summary><ul><li><a href="layouts-plotting.html#layouts-and-viewports">Layouts and viewports</a></li><li><a href="layouts-plotting.html#page-setup-and-plot-preview">Page setup and plot preview</a></li><li><a href="layouts-plotting.html#export-checks">Export checks</a></li></ul></details>
<details><summary><a href="3d-modeling.html">3D Modeling and Visualization</a></summary><ul><li><a href="3d-modeling.html#solids-and-surfaces">Solids and surfaces</a></li><li><a href="3d-modeling.html#visual-styles-and-lighting">Visual styles and lighting</a></li><li><a href="3d-modeling.html#tessellation-quality">Tessellation quality</a></li></ul></details>
<details><summary><a href="parametric-constraints.html">Parametric Constraints</a></summary><ul><li><a href="parametric-constraints.html#geometric-constraints">Geometric constraints</a></li><li><a href="parametric-constraints.html#editing-constrained-geometry">Editing constrained geometry</a></li><li><a href="parametric-constraints.html#persistence-and-history-limitations">Persistence and history limitations</a></li></ul></details>
<details><summary><a href="commands-shortcuts.html">Commands and Shortcuts</a></summary><ul><li><a href="commands-shortcuts.html#command-line">Command line</a></li><li><a href="commands-shortcuts.html#discover-commands">Discover commands</a></li><li><a href="commands-shortcuts.html#shortcut-conventions">Shortcut conventions</a></li></ul></details>
<details><summary><a href="automation-plugins.html">Automation and Plugins</a></summary><ul><li><a href="automation-plugins.html#automation-interface">Automation interface</a></li><li><a href="automation-plugins.html#plugins">Plugins</a></li><li><a href="automation-plugins.html#native-and-web-differences">Native and web differences</a></li></ul></details>
<details><summary><a href="troubleshooting-recovery.html">Troubleshooting and Recovery</a></summary><ul><li><a href="troubleshooting-recovery.html#a-drawing-opens-incorrectly">A drawing opens incorrectly</a></li><li><a href="troubleshooting-recovery.html#geometry-is-missing-or-distorted">Geometry is missing or distorted</a></li><li><a href="troubleshooting-recovery.html#rendering-is-incomplete">Rendering is incomplete</a></li><li><a href="troubleshooting-recovery.html#undo-did-not-restore-the-expected-state">Undo did not restore the expected state</a></li><li><a href="troubleshooting-recovery.html#report-a-reproducible-problem">Report a reproducible problem</a></li></ul></details>
</nav>
<main id="main-content">
<div class="content-wrap">
<p class="page-kicker">OpenCAD Studio User Manual</p>
<h1 class="content-title">Layouts and Plotting</h1>
<h3 id="layouts-and-viewports">Layouts and viewports</h3>
<p>Layouts represent sheets. Paper-space viewports expose model-space views at controlled scales. Lock finished viewports to avoid accidental view changes.</p>
<h3 id="page-setup-and-plot-preview">Page setup and plot preview</h3>
<p>Choose the target device or file format, paper size, orientation, plot area, scale, style behavior, and output quality. Use preview to catch clipping, incorrect line weights, hidden layers, or an unintended plot area.</p>
<h3 id="export-checks">Export checks</h3>
<p>Before distributing a PDF or plotted file, compare it with the drawing at the intended sheet size and verify text, dimensions, raster content, transparency, line types, and viewport scales.</p>
<nav class="page-navigation" aria-label="Previous and next chapter"><a rel="prev" href="annotation-dimensions.html">← Annotation and Dimensions</a><a rel="next" href="3d-modeling.html">3D Modeling and Visualization →</a></nav>
<p class="date-footer">OpenCAD Studio Help · Generated from <code>help/manual.md</code></p>
</div>
</main>
</body>
</html>
+305
View File
@@ -0,0 +1,305 @@
# OpenCAD Studio User Manual
This manual describes the user-facing workflows of OpenCAD Studio. The initial
version establishes the help structure and high-level guidance; individual
commands should be expanded and verified against released behavior before the
manual is published as complete.
## Getting Started
### What OpenCAD Studio does
OpenCAD Studio is a desktop and web CAD application for opening, creating,
editing, visualizing, and saving two- and three-dimensional drawings. It works
with DWG and DXF drawings and provides command-line, ribbon, automation, and
plugin-oriented workflows.
### A first drawing
1. Create a new drawing or open an existing DWG or DXF file.
2. Confirm the active workspace, units, layer, and object-snap settings.
3. Create geometry with a drawing command such as **Line**, **Circle**, or
**Polyline**.
4. Edit the result with grips or a modification command.
5. Save the drawing under a new name until its compatibility has been verified.
> **Data safety:** Keep an untouched copy of important third-party drawings.
> Confirm geometry, layouts, external references, and plotted output before
> replacing the original file.
### How to use this manual
Use the chapter navigation for broad workflows, the search box for a command or
concept, and the previous/next links for sequential reading. Command names,
system variables, keys, and file extensions appear in `monospaced text`.
## Files and Drawings
### Create and open drawings
Use **New** for a blank document and **Open** for an existing DWG, DXF, backup,
or autosave drawing. After opening a file from another CAD system, inspect its
units, layers, blocks, fonts, raster references, layouts, and model extents.
### Save and Save As
**Save** updates the current drawing. **Save As** changes its path, format, or
version. Prefer Save As when validating interoperability or recovering an older
drawing. A successful write does not replace visual inspection of a reopened
copy.
### Recovery and backups
OpenCAD Studio recognizes drawing backups and autosave-style files where the
underlying data is DWG or DXF. If strict loading rejects malformed entities, use
the recovery workflow and review what was discarded before continuing work.
### External resources
Raster images, underlays, fonts, materials, and external references may depend
on paths outside the drawing. Keep referenced files together when moving a
project and verify that relative paths still resolve.
## Workspace and Navigation
### Model space and paper space
Model space is the primary drawing environment. Paper-space layouts arrange
views for plotting through layout viewports. Always confirm the active space
before drawing or editing.
### Pan, zoom, and orbit
Use pan and zoom to navigate without changing drawing geometry. Use orbit and
view controls for three-dimensional inspection. **Zoom Extents** is useful when
the drawing appears empty or geometry is far from the expected location.
### Multiple model viewports
Model viewports can show different views of the same document. Grid, snap,
camera, and render mode may vary by viewport; confirm which viewport is active
before entering coordinates.
### Selection and object snaps
Selection identifies the objects a command will modify. Object snaps target
precise geometric locations such as endpoints, midpoints, centers, and
intersections. Zoom in and verify the snap marker when precision matters.
## Create and Edit Geometry
### Basic drawing commands
Create lines, arcs, circles, ellipses, polylines, splines, points, text, hatches,
and other supported entities from the ribbon or command line. Follow the active
prompt: multi-step commands remain active until they complete or are cancelled.
### Modify geometry
Common modification workflows include move, copy, rotate, scale, mirror,
offset, trim, extend, fillet, chamfer, stretch, join, explode, and erase. Locked
layers can prevent modification.
### Grips and direct manipulation
Select an entity to expose its grips. Dragging a grip previews and then commits
a geometric change. Constrained neighboring geometry may update with it.
### Undo, redo, and OOPS
**Undo** reverses recorded document operations and **Redo** reapplies them.
**OOPS** restores the most recently erased entities without reversing later
commands. Save before a risky sequence and verify that associated dimensions,
hatches, groups, and constraints were restored with their geometry.
## Layers and Properties
### Layers
Layers organize geometry and control visibility, locking, color, line type,
line weight, and plot behavior. Set the intended active layer before creating
objects. Avoid editing objects on locked layers.
### Object properties
Properties can be assigned explicitly or inherited **ByLayer** or **ByBlock**.
Use the Properties surface or commands such as `CHPROP` to inspect and change
selected objects.
### Styles
Text, dimension, multiline, table, and visual styles centralize presentation.
Changing a shared style can update many objects, so inspect affected layouts
before saving.
## Blocks and References
### Create and insert blocks
A block definition groups reusable drawing content; an INSERT places an
instance with its own position, rotation, scale, attributes, and optional array
settings. Editing a definition affects every reference to it.
### Array inserts
Array inserts place multiple block instances with row and column counts and
spacing. Large counts can generate substantial geometry. Validate scaled and
rotated arrays when exchanging drawings with another CAD system.
### Attributes and external references
Attributes attach editable values to block references. External references and
underlays retain links to other files; preserve their paths when sharing or
archiving a project.
## Annotation and Dimensions
### Text and annotation
Single-line text, multiline text, leaders, multileaders, tables, tolerances,
center marks, and centerlines communicate design intent. Missing fonts can
change layout or substitute glyphs, especially in the web build.
### Dimensions
Dimensions combine measured geometry with a dimension style. Associative
dimensions update when their source geometry changes; non-associative or
partially associated dimensions require manual verification.
### Annotation scale
Annotative objects can display differently at different viewport scales.
Confirm the active annotation scale before creating annotations and inspect all
paper-space viewports before plotting.
## Layouts and Plotting
### Layouts and viewports
Layouts represent sheets. Paper-space viewports expose model-space views at
controlled scales. Lock finished viewports to avoid accidental view changes.
### Page setup and plot preview
Choose the target device or file format, paper size, orientation, plot area,
scale, style behavior, and output quality. Use preview to catch clipping,
incorrect line weights, hidden layers, or an unintended plot area.
### Export checks
Before distributing a PDF or plotted file, compare it with the drawing at the
intended sheet size and verify text, dimensions, raster content, transparency,
line types, and viewport scales.
## 3D Modeling and Visualization
### Solids and surfaces
OpenCAD Studio can create and display solid primitives and modeled features such
as extrusions and revolutions. Imported ACIS-backed bodies are tessellated for
display while exact body data is retained where supported.
### Visual styles and lighting
Wireframe, shaded, hidden-line, materials, lights, and shadows affect display,
not the underlying object geometry. Switch to wireframe when diagnosing missing
faces or material problems.
### Tessellation quality
Curves and analytic surfaces are converted into display geometry according to
view and tolerance settings. A coarse display does not necessarily mean the
stored curve or solid is coarse.
## Parametric Constraints
### Geometric constraints
Constraints capture relationships such as coincident, horizontal, vertical,
parallel, perpendicular, equal, tangent, distance, angle, and radius. Use the
degree-of-freedom and conflict indicators to understand the sketch state.
### Editing constrained geometry
Moving or grip-editing constrained geometry can move neighboring objects. If a
solve fails or becomes redundant, inspect the constraint glyphs and conflict
status before deleting geometry.
### Persistence and history limitations
Constraint data is stored as OpenCAD Studio extension data inside DWG and DXF.
Other applications may preserve it without interpreting it. Constraint edits
and geometry changes may currently occupy adjacent history entries; verify the
result after undo, redo, erase, copy, and reopen operations.
## Commands and Shortcuts
### Command line
Enter a command name or alias, then respond to its prompts. Press `Escape` to
cancel the active command and `Return` to accept an available default. Exact
prompt options vary by command and current selection.
### Discover commands
Use command autocomplete and the ribbon to discover available operations. Some
commands are one-shot actions; others maintain state across several point,
number, keyword, or object-selection inputs.
### Shortcut conventions
Application and operating-system shortcuts can differ between native and web
builds. Avoid assigning browser-reserved shortcuts to web-only workflows.
## Automation and Plugins
### Automation interface
The automation interface can inspect documents, run commands, query geometry,
capture the viewport, and perform batches. Callers should use request IDs and
document revisions to avoid repeating or applying work to stale state.
### Plugins
Native plugins can contribute commands and ribbon surfaces through the plugin
host. Install only trusted packages that match the host API, compiler, and CAD
model compatibility requirements.
### Native and web differences
The browser build uses in-memory file workflows and cannot load native plugin
libraries. Some rendering, font, windowing, and parallel-processing behavior
also differs from the desktop build.
## Troubleshooting and Recovery
### A drawing opens incorrectly
Check units, extents, layers, layouts, block placement, missing references, and
fonts. Reopen a copy after saving to detect serialization problems early. Keep
the original file available for comparison.
### Geometry is missing or distorted
Try Zoom Extents, enable relevant layers, switch to wireframe, and inspect block
scale, array settings, clipping boundaries, object normals, and coordinates far
from the origin.
### Rendering is incomplete
Reduce unusually large images or material textures, simplify extreme hatch or
array inputs, and compare another visual style. Record the graphics backend and
the smallest drawing that reproduces the issue.
### Undo did not restore the expected state
Stop editing and save a diagnostic copy. Try the next adjacent undo entry only
when you understand what it represents. Compare the result with autosave or
backup data before overwriting the original drawing.
### Report a reproducible problem
Include the OpenCAD Studio version, platform, native or web build, exact steps,
expected and observed results, and a minimal sanitized drawing when possible.
Do not publish confidential drawings or external-reference paths.
+55
View File
@@ -0,0 +1,55 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="OpenCAD Studio user manual — Parametric Constraints">
<title>Parametric Constraints — OpenCAD Studio Help</title>
<link rel="stylesheet" href="assets/css/core.css">
<link rel="stylesheet" href="assets/css/opencad.css">
<script src="search-index.js" defer></script>
<script src="assets/js/help.js" defer></script>
</head>
<body>
<header class="topbar">
<button class="nav-toggle" type="button" aria-controls="help-sidebar" aria-expanded="true" title="Toggle chapter navigation"><span aria-hidden="true">☰</span><span class="sr-only">Toggle chapter navigation</span></button>
<a class="brand" href="index.html">OpenCAD Studio Help</a>
<div class="search-shell">
<label class="sr-only" for="help-search">Search help</label>
<input id="help-search" class="help-search" type="search" role="combobox" placeholder="Search commands and topics" autocomplete="off" aria-autocomplete="list" aria-controls="search-results" aria-expanded="false">
<span class="search-key" aria-hidden="true">⌘K</span>
<ul id="search-results" class="search-results" role="listbox" hidden></ul>
</div>
</header>
<nav id="help-sidebar" class="sidebar" aria-label="Help chapters">
<div><a class="chapter-link" href="index.html">Help overview</a></div>
<details><summary><a href="getting-started.html">Getting Started</a></summary><ul><li><a href="getting-started.html#what-opencad-studio-does">What OpenCAD Studio does</a></li><li><a href="getting-started.html#a-first-drawing">A first drawing</a></li><li><a href="getting-started.html#how-to-use-this-manual">How to use this manual</a></li></ul></details>
<details><summary><a href="files-drawings.html">Files and Drawings</a></summary><ul><li><a href="files-drawings.html#create-and-open-drawings">Create and open drawings</a></li><li><a href="files-drawings.html#save-and-save-as">Save and Save As</a></li><li><a href="files-drawings.html#recovery-and-backups">Recovery and backups</a></li><li><a href="files-drawings.html#external-resources">External resources</a></li></ul></details>
<details><summary><a href="workspace-navigation.html">Workspace and Navigation</a></summary><ul><li><a href="workspace-navigation.html#model-space-and-paper-space">Model space and paper space</a></li><li><a href="workspace-navigation.html#pan-zoom-and-orbit">Pan, zoom, and orbit</a></li><li><a href="workspace-navigation.html#multiple-model-viewports">Multiple model viewports</a></li><li><a href="workspace-navigation.html#selection-and-object-snaps">Selection and object snaps</a></li></ul></details>
<details><summary><a href="create-edit-geometry.html">Create and Edit Geometry</a></summary><ul><li><a href="create-edit-geometry.html#basic-drawing-commands">Basic drawing commands</a></li><li><a href="create-edit-geometry.html#modify-geometry">Modify geometry</a></li><li><a href="create-edit-geometry.html#grips-and-direct-manipulation">Grips and direct manipulation</a></li><li><a href="create-edit-geometry.html#undo-redo-and-oops">Undo, redo, and OOPS</a></li></ul></details>
<details><summary><a href="layers-properties.html">Layers and Properties</a></summary><ul><li><a href="layers-properties.html#layers">Layers</a></li><li><a href="layers-properties.html#object-properties">Object properties</a></li><li><a href="layers-properties.html#styles">Styles</a></li></ul></details>
<details><summary><a href="blocks-references.html">Blocks and References</a></summary><ul><li><a href="blocks-references.html#create-and-insert-blocks">Create and insert blocks</a></li><li><a href="blocks-references.html#array-inserts">Array inserts</a></li><li><a href="blocks-references.html#attributes-and-external-references">Attributes and external references</a></li></ul></details>
<details><summary><a href="annotation-dimensions.html">Annotation and Dimensions</a></summary><ul><li><a href="annotation-dimensions.html#text-and-annotation">Text and annotation</a></li><li><a href="annotation-dimensions.html#dimensions">Dimensions</a></li><li><a href="annotation-dimensions.html#annotation-scale">Annotation scale</a></li></ul></details>
<details><summary><a href="layouts-plotting.html">Layouts and Plotting</a></summary><ul><li><a href="layouts-plotting.html#layouts-and-viewports">Layouts and viewports</a></li><li><a href="layouts-plotting.html#page-setup-and-plot-preview">Page setup and plot preview</a></li><li><a href="layouts-plotting.html#export-checks">Export checks</a></li></ul></details>
<details><summary><a href="3d-modeling.html">3D Modeling and Visualization</a></summary><ul><li><a href="3d-modeling.html#solids-and-surfaces">Solids and surfaces</a></li><li><a href="3d-modeling.html#visual-styles-and-lighting">Visual styles and lighting</a></li><li><a href="3d-modeling.html#tessellation-quality">Tessellation quality</a></li></ul></details>
<details class="current-topic" open><summary><a href="parametric-constraints.html">Parametric Constraints</a></summary><ul><li><a href="parametric-constraints.html#geometric-constraints">Geometric constraints</a></li><li><a href="parametric-constraints.html#editing-constrained-geometry">Editing constrained geometry</a></li><li><a href="parametric-constraints.html#persistence-and-history-limitations">Persistence and history limitations</a></li></ul></details>
<details><summary><a href="commands-shortcuts.html">Commands and Shortcuts</a></summary><ul><li><a href="commands-shortcuts.html#command-line">Command line</a></li><li><a href="commands-shortcuts.html#discover-commands">Discover commands</a></li><li><a href="commands-shortcuts.html#shortcut-conventions">Shortcut conventions</a></li></ul></details>
<details><summary><a href="automation-plugins.html">Automation and Plugins</a></summary><ul><li><a href="automation-plugins.html#automation-interface">Automation interface</a></li><li><a href="automation-plugins.html#plugins">Plugins</a></li><li><a href="automation-plugins.html#native-and-web-differences">Native and web differences</a></li></ul></details>
<details><summary><a href="troubleshooting-recovery.html">Troubleshooting and Recovery</a></summary><ul><li><a href="troubleshooting-recovery.html#a-drawing-opens-incorrectly">A drawing opens incorrectly</a></li><li><a href="troubleshooting-recovery.html#geometry-is-missing-or-distorted">Geometry is missing or distorted</a></li><li><a href="troubleshooting-recovery.html#rendering-is-incomplete">Rendering is incomplete</a></li><li><a href="troubleshooting-recovery.html#undo-did-not-restore-the-expected-state">Undo did not restore the expected state</a></li><li><a href="troubleshooting-recovery.html#report-a-reproducible-problem">Report a reproducible problem</a></li></ul></details>
</nav>
<main id="main-content">
<div class="content-wrap">
<p class="page-kicker">OpenCAD Studio User Manual</p>
<h1 class="content-title">Parametric Constraints</h1>
<h3 id="geometric-constraints">Geometric constraints</h3>
<p>Constraints capture relationships such as coincident, horizontal, vertical, parallel, perpendicular, equal, tangent, distance, angle, and radius. Use the degree-of-freedom and conflict indicators to understand the sketch state.</p>
<h3 id="editing-constrained-geometry">Editing constrained geometry</h3>
<p>Moving or grip-editing constrained geometry can move neighboring objects. If a solve fails or becomes redundant, inspect the constraint glyphs and conflict status before deleting geometry.</p>
<h3 id="persistence-and-history-limitations">Persistence and history limitations</h3>
<p>Constraint data is stored as OpenCAD Studio extension data inside DWG and DXF. Other applications may preserve it without interpreting it. Constraint edits and geometry changes may currently occupy adjacent history entries; verify the result after undo, redo, erase, copy, and reopen operations.</p>
<nav class="page-navigation" aria-label="Previous and next chapter"><a rel="prev" href="3d-modeling.html">← 3D Modeling and Visualization</a><a rel="next" href="commands-shortcuts.html">Commands and Shortcuts →</a></nav>
<p class="date-footer">OpenCAD Studio Help · Generated from <code>help/manual.md</code></p>
</div>
</main>
</body>
</html>
+1
View File
@@ -0,0 +1 @@
window.OCS_HELP_INDEX = [{"title":"What OpenCAD Studio does","chapter":"Getting Started","url":"getting-started.html#what-opencad-studio-does","text":"What OpenCAD Studio does OpenCAD Studio is a desktop and web CAD application for opening, creating, editing, visualizing, and saving two- and three-dimensional drawings. It works with DWG and DXF drawings and provides command-line, ribbon, automation, and plugin-oriented workflows."},{"title":"A first drawing","chapter":"Getting Started","url":"getting-started.html#a-first-drawing","text":"A first drawing Create a new drawing or open an existing DWG or DXF file. Confirm the active workspace, units, layer, and object-snap settings. Create geometry with a drawing command such as Line , Circle , or Polyline . Edit the result with grips or a modification command. Save the drawing under a new name until its compatibility has been verified. Data safety: Keep an untouched copy of important third-party drawings. Confirm geometry, layouts, external references, and plotted output before replacing the original file."},{"title":"How to use this manual","chapter":"Getting Started","url":"getting-started.html#how-to-use-this-manual","text":"How to use this manual Use the chapter navigation for broad workflows, the search box for a command or concept, and the previous/next links for sequential reading. Command names, system variables, keys, and file extensions appear in monospaced text ."},{"title":"Create and open drawings","chapter":"Files and Drawings","url":"files-drawings.html#create-and-open-drawings","text":"Create and open drawings Use New for a blank document and Open for an existing DWG, DXF, backup, or autosave drawing. After opening a file from another CAD system, inspect its units, layers, blocks, fonts, raster references, layouts, and model extents."},{"title":"Save and Save As","chapter":"Files and Drawings","url":"files-drawings.html#save-and-save-as","text":"Save and Save As Save updates the current drawing. Save As changes its path, format, or version. Prefer Save As when validating interoperability or recovering an older drawing. A successful write does not replace visual inspection of a reopened copy."},{"title":"Recovery and backups","chapter":"Files and Drawings","url":"files-drawings.html#recovery-and-backups","text":"Recovery and backups OpenCAD Studio recognizes drawing backups and autosave-style files where the underlying data is DWG or DXF. If strict loading rejects malformed entities, use the recovery workflow and review what was discarded before continuing work."},{"title":"External resources","chapter":"Files and Drawings","url":"files-drawings.html#external-resources","text":"External resources Raster images, underlays, fonts, materials, and external references may depend on paths outside the drawing. Keep referenced files together when moving a project and verify that relative paths still resolve."},{"title":"Model space and paper space","chapter":"Workspace and Navigation","url":"workspace-navigation.html#model-space-and-paper-space","text":"Model space and paper space Model space is the primary drawing environment. Paper-space layouts arrange views for plotting through layout viewports. Always confirm the active space before drawing or editing."},{"title":"Pan, zoom, and orbit","chapter":"Workspace and Navigation","url":"workspace-navigation.html#pan-zoom-and-orbit","text":"Pan, zoom, and orbit Use pan and zoom to navigate without changing drawing geometry. Use orbit and view controls for three-dimensional inspection. Zoom Extents is useful when the drawing appears empty or geometry is far from the expected location."},{"title":"Multiple model viewports","chapter":"Workspace and Navigation","url":"workspace-navigation.html#multiple-model-viewports","text":"Multiple model viewports Model viewports can show different views of the same document. Grid, snap, camera, and render mode may vary by viewport; confirm which viewport is active before entering coordinates."},{"title":"Selection and object snaps","chapter":"Workspace and Navigation","url":"workspace-navigation.html#selection-and-object-snaps","text":"Selection and object snaps Selection identifies the objects a command will modify. Object snaps target precise geometric locations such as endpoints, midpoints, centers, and intersections. Zoom in and verify the snap marker when precision matters."},{"title":"Basic drawing commands","chapter":"Create and Edit Geometry","url":"create-edit-geometry.html#basic-drawing-commands","text":"Basic drawing commands Create lines, arcs, circles, ellipses, polylines, splines, points, text, hatches, and other supported entities from the ribbon or command line. Follow the active prompt: multi-step commands remain active until they complete or are cancelled."},{"title":"Modify geometry","chapter":"Create and Edit Geometry","url":"create-edit-geometry.html#modify-geometry","text":"Modify geometry Common modification workflows include move, copy, rotate, scaLine truncated
+256
View File
@@ -0,0 +1,256 @@
#!/usr/bin/env python3
"""Build the static OpenCAD Studio HTML help system from help/manual.md."""
from __future__ import annotations
import argparse
import html
import json
import re
import subprocess
import sys
from dataclasses import dataclass
from html.parser import HTMLParser
from pathlib import Path
HELP = Path(__file__).resolve().parents[1]
SOURCE = HELP / "manual.md"
@dataclass(frozen=True)
class Page:
filename: str
title: str
summary: str
PAGES = (
Page("getting-started.html", "Getting Started", "Begin a drawing safely and learn how to use this manual."),
Page("files-drawings.html", "Files and Drawings", "Open, save, recover, and move drawings with their dependencies."),
Page("workspace-navigation.html", "Workspace and Navigation", "Work with spaces, views, selection, and object snaps."),
Page("create-edit-geometry.html", "Create and Edit Geometry", "Draw, modify, grip-edit, erase, and restore geometry."),
Page("layers-properties.html", "Layers and Properties", "Organize objects and control their inherited appearance."),
Page("blocks-references.html", "Blocks and References", "Create reusable content, arrays, attributes, and file references."),
Page("annotation-dimensions.html", "Annotation and Dimensions", "Add readable text, dimensions, leaders, and scaled annotation."),
Page("layouts-plotting.html", "Layouts and Plotting", "Prepare paper-space sheets and verify plotted output."),
Page("3d-modeling.html", "3D Modeling and Visualization", "Create and inspect solids, surfaces, materials, and visual styles."),
Page("parametric-constraints.html", "Parametric Constraints", "Capture geometric intent and diagnose solve or history issues."),
Page("commands-shortcuts.html", "Commands and Shortcuts", "Use prompts, autocomplete, aliases, and keyboard conventions."),
Page("automation-plugins.html", "Automation and Plugins", "Control drawings programmatically and extend the native app."),
Page("troubleshooting-recovery.html", "Troubleshooting and Recovery", "Diagnose file, geometry, rendering, and history problems."),
)
def slug(text: str) -> str:
value = re.sub(r"[^\w\s-]", "", text.lower(), flags=re.UNICODE)
value = re.sub(r"[\s_]+", "-", value)
return value.strip("-")
def split_chapters(markdown: str) -> dict[str, str]:
chapters: dict[str, list[str]] = {}
current: list[str] | None = None
for line in markdown.splitlines():
match = re.match(r"^## (.+)$", line)
if match:
title = match.group(1).strip()
if title in chapters:
raise RuntimeError(f"Duplicate chapter: {title}")
current = [line]
chapters[title] = current
elif current is not None:
current.append(line)
return {title: "\n".join(lines) for title, lines in chapters.items()}
def pandoc(markdown: str) -> str:
process = subprocess.run(
["pandoc", "--from=gfm", "--to=html5", "--wrap=none"],
input=markdown,
text=True,
capture_output=True,
check=True,
)
return process.stdout.strip()
def headings(markdown: str) -> list[tuple[str, str]]:
output: list[tuple[str, str]] = []
for line in markdown.splitlines():
match = re.match(r"^### (.+)$", line)
if match:
title = match.group(1).strip()
output.append((slug(title), title))
return output
def sidebar(current: Page | None, chapters: dict[str, str]) -> str:
parts = ['<nav id="help-sidebar" class="sidebar" aria-label="Help chapters">']
index_class = ' class="current-topic"' if current is None else ""
parts.append(f'<div{index_class}><a class="chapter-link" href="index.html">Help overview</a></div>')
for page in PAGES:
classes = ' class="current-topic"' if page == current else ""
opened = " open" if page == current else ""
links = "".join(
f'<li><a href="{page.filename}#{anchor}">{html.escape(title)}</a></li>'
for anchor, title in headings(chapters[page.title])
)
parts.append(
f'<details{classes}{opened}><summary><a href="{page.filename}">{html.escape(page.title)}</a></summary>'
f'<ul>{links}</ul></details>'
)
parts.append("</nav>")
return "\n".join(parts)
def overview() -> str:
cards = "".join(
f'<a class="chapter-card" href="{page.filename}"><strong>{html.escape(page.title)}</strong>'
f'<span>{html.escape(page.summary)}</span></a>'
for page in PAGES
)
return f"""
<section class="hero">
<p class="eyebrow">OpenCAD Studio User Manual</p>
<h2>Find the workflow, command, or concept you need</h2>
<p>Learn how to create and edit drawings, exchange DWG and DXF files, prepare layouts, model in 3D, use constraints, automate work, and recover from common problems.</p>
</section>
<div class="quick-paths" aria-label="Common help paths">
<a href="getting-started.html#a-first-drawing">Create a first drawing</a>
<a href="files-drawings.html#recovery-and-backups">Recover a drawing</a>
<a href="troubleshooting-recovery.html#report-a-reproducible-problem">Report a problem</a>
</div>
<h2 id="manual-chapters">Manual chapters</h2>
<div class="chapter-grid">{cards}</div>
""".strip()
def shell(page: Page | None, title: str, body: str, chapters: dict[str, str]) -> str:
previous_link = ""
next_link = ""
if page is not None:
index = PAGES.index(page)
previous = PAGES[index - 1] if index else None
following = PAGES[index + 1] if index + 1 < len(PAGES) else None
previous_link = (
f'<a rel="prev" href="{previous.filename}">← {html.escape(previous.title)}</a>'
if previous else '<a rel="prev" href="index.html">← Help overview</a>'
)
next_link = (
f'<a rel="next" href="{following.filename}">{html.escape(following.title)} →</a>'
if following else ""
)
elif PAGES:
next_link = f'<a rel="next" href="{PAGES[0].filename}">{html.escape(PAGES[0].title)} →</a>'
return f"""<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="OpenCAD Studio user manual — {html.escape(title)}">
<title>{html.escape(title)} — OpenCAD Studio Help</title>
<link rel="stylesheet" href="assets/css/core.css">
<link rel="stylesheet" href="assets/css/opencad.css">
<script src="search-index.js" defer></script>
<script src="assets/js/help.js" defer></script>
</head>
<body>
<header class="topbar">
<button class="nav-toggle" type="button" aria-controls="help-sidebar" aria-expanded="true" title="Toggle chapter navigation"><span aria-hidden="true">☰</span><span class="sr-only">Toggle chapter navigation</span></button>
<a class="brand" href="index.html">OpenCAD Studio Help</a>
<div class="search-shell">
<label class="sr-only" for="help-search">Search help</label>
<input id="help-search" class="help-search" type="search" role="combobox" placeholder="Search commands and topics" autocomplete="off" aria-autocomplete="list" aria-controls="search-results" aria-expanded="false">
<span class="search-key" aria-hidden="true">⌘K</span>
<ul id="search-results" class="search-results" role="listbox" hidden></ul>
</div>
</header>
{sidebar(page, chapters)}
<main id="main-content">
<div class="content-wrap">
<p class="page-kicker">OpenCAD Studio User Manual</p>
<h1 class="content-title">{html.escape(title)}</h1>
{body}
<nav class="page-navigation" aria-label="Previous and next chapter">{previous_link}{next_link}</nav>
<p class="date-footer">OpenCAD Studio Help · Generated from <code>help/manual.md</code></p>
</div>
</main>
</body>
</html>
"""
class TextExtractor(HTMLParser):
def __init__(self) -> None:
super().__init__()
self.parts: list[str] = []
def handle_data(self, data: str) -> None:
if data.strip():
self.parts.append(data.strip())
def search_entries(chapters: dict[str, str]) -> list[dict[str, str]]:
entries: list[dict[str, str]] = []
for page in PAGES:
chapter = chapters[page.title]
sections = re.split(r"(?=^### )", chapter, flags=re.MULTILINE)
for section in sections:
match = re.match(r"^### (.+)$", section.splitlines()[0] if section.splitlines() else "")
if not match:
continue
title = match.group(1).strip()
extractor = TextExtractor()
extractor.feed(pandoc(section))
entries.append({
"title": title,
"chapter": page.title,
"url": f"{page.filename}#{slug(title)}",
"text": " ".join(extractor.parts),
})
return entries
def generated_outputs() -> dict[str, str]:
markdown = SOURCE.read_text(encoding="utf-8")
chapters = split_chapters(markdown)
expected = {page.title for page in PAGES}
if set(chapters) != expected:
raise RuntimeError(
f"Manual chapter mapping mismatch. Missing: {sorted(expected - set(chapters))}; "
f"extra: {sorted(set(chapters) - expected)}"
)
output = {"index.html": shell(None, "Help overview", overview(), chapters)}
for page in PAGES:
chapter_body = "\n".join(chapters[page.title].splitlines()[1:]).lstrip()
output[page.filename] = shell(page, page.title, pandoc(chapter_body), chapters)
index_json = json.dumps(search_entries(chapters), ensure_ascii=False, separators=(",", ":"))
output["search-index.js"] = f"window.OCS_HELP_INDEX = {index_json};\n"
return output
def main() -> int:
parser = argparse.ArgumentParser(description=__doc__)
parser.add_argument("--check", action="store_true", help="Fail if generated output is stale.")
args = parser.parse_args()
output = generated_outputs()
if args.check:
stale = [name for name, content in output.items() if not (HELP / name).is_file() or (HELP / name).read_text(encoding="utf-8") != content]
if stale:
print("Stale generated help: " + ", ".join(stale), file=sys.stderr)
return 1
print(f"Generated help is current ({len(output) - 1} pages plus search index).")
return 0
for name, content in output.items():
(HELP / name).write_text(content, encoding="utf-8")
print(f"Generated {len(output) - 1} pages and search-index.js in {HELP}")
return 0
if __name__ == "__main__":
raise SystemExit(main())
+100
View File
@@ -0,0 +1,100 @@
#!/usr/bin/env python3
"""Validate local links, anchors, assets, context targets, and basic HTML structure."""
from __future__ import annotations
import json
import sys
from html.parser import HTMLParser
from pathlib import Path
from urllib.parse import unquote
HELP = Path(__file__).resolve().parents[1]
class Document(HTMLParser):
def __init__(self) -> None:
super().__init__()
self.ids: set[str] = set()
self.links: list[str] = []
self.assets: list[str] = []
self.has_main = False
self.has_title = False
self.images_without_alt = 0
def handle_starttag(self, tag: str, attrs: list[tuple[str, str | None]]) -> None:
values = dict(attrs)
if values.get("id"):
self.ids.add(values["id"] or "")
if tag == "a" and values.get("href"):
self.links.append(values["href"] or "")
if tag in {"img", "script", "link"}:
target = values.get("src") or values.get("href")
if target:
self.assets.append(target)
if tag == "img" and "alt" not in values:
self.images_without_alt += 1
self.has_main |= tag == "main"
self.has_title |= tag == "title"
def load_documents() -> dict[str, Document]:
documents: dict[str, Document] = {}
for path in sorted(HELP.glob("*.html")):
document = Document()
document.feed(path.read_text(encoding="utf-8"))
documents[path.name] = document
return documents
def validate_target(source: str, target: str, documents: dict[str, Document], errors: list[str]) -> None:
if target.startswith(("http:", "https:", "mailto:", "javascript:")):
return
filename, _, fragment = target.partition("#")
filename = unquote(filename) or source
destination = HELP / filename
if not destination.is_file():
errors.append(f"{source}: missing target {target}")
return
if fragment and destination.suffix == ".html":
document = documents.get(destination.name)
if document is None or fragment not in document.ids:
errors.append(f"{source}: missing anchor {target}")
def main() -> int:
documents = load_documents()
errors: list[str] = []
if not documents:
errors.append("No generated HTML pages found.")
for name, document in documents.items():
if not document.has_main:
errors.append(f"{name}: missing <main>")
if not document.has_title:
errors.append(f"{name}: missing <title>")
if document.images_without_alt:
errors.append(f"{name}: {document.images_without_alt} image(s) missing alt")
for target in document.links + document.assets:
validate_target(name, target, documents, errors)
context = json.loads((HELP / "context-map.json").read_text(encoding="utf-8"))
for group in ("commands", "surfaces"):
for key, target in context.get(group, {}).items():
validate_target(f"context-map.json:{group}.{key}", target, documents, errors)
if errors:
print("Help validation failed:", file=sys.stderr)
for error in errors:
print(f"- {error}", file=sys.stderr)
return 1
links = sum(len(document.links) for document in documents.values())
print(f"Validated {len(documents)} pages, {links} links, and {sum(len(context.get(group, {})) for group in ('commands', 'surfaces'))} context targets.")
return 0
if __name__ == "__main__":
raise SystemExit(main())
+59
View File
@@ -0,0 +1,59 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="OpenCAD Studio user manual — Troubleshooting and Recovery">
<title>Troubleshooting and Recovery — OpenCAD Studio Help</title>
<link rel="stylesheet" href="assets/css/core.css">
<link rel="stylesheet" href="assets/css/opencad.css">
<script src="search-index.js" defer></script>
<script src="assets/js/help.js" defer></script>
</head>
<body>
<header class="topbar">
<button class="nav-toggle" type="button" aria-controls="help-sidebar" aria-expanded="true" title="Toggle chapter navigation"><span aria-hidden="true">☰</span><span class="sr-only">Toggle chapter navigation</span></button>
<a class="brand" href="index.html">OpenCAD Studio Help</a>
<div class="search-shell">
<label class="sr-only" for="help-search">Search help</label>
<input id="help-search" class="help-search" type="search" role="combobox" placeholder="Search commands and topics" autocomplete="off" aria-autocomplete="list" aria-controls="search-results" aria-expanded="false">
<span class="search-key" aria-hidden="true">⌘K</span>
<ul id="search-results" class="search-results" role="listbox" hidden></ul>
</div>
</header>
<nav id="help-sidebar" class="sidebar" aria-label="Help chapters">
<div><a class="chapter-link" href="index.html">Help overview</a></div>
<details><summary><a href="getting-started.html">Getting Started</a></summary><ul><li><a href="getting-started.html#what-opencad-studio-does">What OpenCAD Studio does</a></li><li><a href="getting-started.html#a-first-drawing">A first drawing</a></li><li><a href="getting-started.html#how-to-use-this-manual">How to use this manual</a></li></ul></details>
<details><summary><a href="files-drawings.html">Files and Drawings</a></summary><ul><li><a href="files-drawings.html#create-and-open-drawings">Create and open drawings</a></li><li><a href="files-drawings.html#save-and-save-as">Save and Save As</a></li><li><a href="files-drawings.html#recovery-and-backups">Recovery and backups</a></li><li><a href="files-drawings.html#external-resources">External resources</a></li></ul></details>
<details><summary><a href="workspace-navigation.html">Workspace and Navigation</a></summary><ul><li><a href="workspace-navigation.html#model-space-and-paper-space">Model space and paper space</a></li><li><a href="workspace-navigation.html#pan-zoom-and-orbit">Pan, zoom, and orbit</a></li><li><a href="workspace-navigation.html#multiple-model-viewports">Multiple model viewports</a></li><li><a href="workspace-navigation.html#selection-and-object-snaps">Selection and object snaps</a></li></ul></details>
<details><summary><a href="create-edit-geometry.html">Create and Edit Geometry</a></summary><ul><li><a href="create-edit-geometry.html#basic-drawing-commands">Basic drawing commands</a></li><li><a href="create-edit-geometry.html#modify-geometry">Modify geometry</a></li><li><a href="create-edit-geometry.html#grips-and-direct-manipulation">Grips and direct manipulation</a></li><li><a href="create-edit-geometry.html#undo-redo-and-oops">Undo, redo, and OOPS</a></li></ul></details>
<details><summary><a href="layers-properties.html">Layers and Properties</a></summary><ul><li><a href="layers-properties.html#layers">Layers</a></li><li><a href="layers-properties.html#object-properties">Object properties</a></li><li><a href="layers-properties.html#styles">Styles</a></li></ul></details>
<details><summary><a href="blocks-references.html">Blocks and References</a></summary><ul><li><a href="blocks-references.html#create-and-insert-blocks">Create and insert blocks</a></li><li><a href="blocks-references.html#array-inserts">Array inserts</a></li><li><a href="blocks-references.html#attributes-and-external-references">Attributes and external references</a></li></ul></details>
<details><summary><a href="annotation-dimensions.html">Annotation and Dimensions</a></summary><ul><li><a href="annotation-dimensions.html#text-and-annotation">Text and annotation</a></li><li><a href="annotation-dimensions.html#dimensions">Dimensions</a></li><li><a href="annotation-dimensions.html#annotation-scale">Annotation scale</a></li></ul></details>
<details><summary><a href="layouts-plotting.html">Layouts and Plotting</a></summary><ul><li><a href="layouts-plotting.html#layouts-and-viewports">Layouts and viewports</a></li><li><a href="layouts-plotting.html#page-setup-and-plot-preview">Page setup and plot preview</a></li><li><a href="layouts-plotting.html#export-checks">Export checks</a></li></ul></details>
<details><summary><a href="3d-modeling.html">3D Modeling and Visualization</a></summary><ul><li><a href="3d-modeling.html#solids-and-surfaces">Solids and surfaces</a></li><li><a href="3d-modeling.html#visual-styles-and-lighting">Visual styles and lighting</a></li><li><a href="3d-modeling.html#tessellation-quality">Tessellation quality</a></li></ul></details>
<details><summary><a href="parametric-constraints.html">Parametric Constraints</a></summary><ul><li><a href="parametric-constraints.html#geometric-constraints">Geometric constraints</a></li><li><a href="parametric-constraints.html#editing-constrained-geometry">Editing constrained geometry</a></li><li><a href="parametric-constraints.html#persistence-and-history-limitations">Persistence and history limitations</a></li></ul></details>
<details><summary><a href="commands-shortcuts.html">Commands and Shortcuts</a></summary><ul><li><a href="commands-shortcuts.html#command-line">Command line</a></li><li><a href="commands-shortcuts.html#discover-commands">Discover commands</a></li><li><a href="commands-shortcuts.html#shortcut-conventions">Shortcut conventions</a></li></ul></details>
<details><summary><a href="automation-plugins.html">Automation and Plugins</a></summary><ul><li><a href="automation-plugins.html#automation-interface">Automation interface</a></li><li><a href="automation-plugins.html#plugins">Plugins</a></li><li><a href="automation-plugins.html#native-and-web-differences">Native and web differences</a></li></ul></details>
<details class="current-topic" open><summary><a href="troubleshooting-recovery.html">Troubleshooting and Recovery</a></summary><ul><li><a href="troubleshooting-recovery.html#a-drawing-opens-incorrectly">A drawing opens incorrectly</a></li><li><a href="troubleshooting-recovery.html#geometry-is-missing-or-distorted">Geometry is missing or distorted</a></li><li><a href="troubleshooting-recovery.html#rendering-is-incomplete">Rendering is incomplete</a></li><li><a href="troubleshooting-recovery.html#undo-did-not-restore-the-expected-state">Undo did not restore the expected state</a></li><li><a href="troubleshooting-recovery.html#report-a-reproducible-problem">Report a reproducible problem</a></li></ul></details>
</nav>
<main id="main-content">
<div class="content-wrap">
<p class="page-kicker">OpenCAD Studio User Manual</p>
<h1 class="content-title">Troubleshooting and Recovery</h1>
<h3 id="a-drawing-opens-incorrectly">A drawing opens incorrectly</h3>
<p>Check units, extents, layers, layouts, block placement, missing references, and fonts. Reopen a copy after saving to detect serialization problems early. Keep the original file available for comparison.</p>
<h3 id="geometry-is-missing-or-distorted">Geometry is missing or distorted</h3>
<p>Try Zoom Extents, enable relevant layers, switch to wireframe, and inspect block scale, array settings, clipping boundaries, object normals, and coordinates far from the origin.</p>
<h3 id="rendering-is-incomplete">Rendering is incomplete</h3>
<p>Reduce unusually large images or material textures, simplify extreme hatch or array inputs, and compare another visual style. Record the graphics backend and the smallest drawing that reproduces the issue.</p>
<h3 id="undo-did-not-restore-the-expected-state">Undo did not restore the expected state</h3>
<p>Stop editing and save a diagnostic copy. Try the next adjacent undo entry only when you understand what it represents. Compare the result with autosave or backup data before overwriting the original drawing.</p>
<h3 id="report-a-reproducible-problem">Report a reproducible problem</h3>
<p>Include the OpenCAD Studio version, platform, native or web build, exact steps, expected and observed results, and a minimal sanitized drawing when possible. Do not publish confidential drawings or external-reference paths.</p>
<nav class="page-navigation" aria-label="Previous and next chapter"><a rel="prev" href="automation-plugins.html">← Automation and Plugins</a></nav>
<p class="date-footer">OpenCAD Studio Help · Generated from <code>help/manual.md</code></p>
</div>
</main>
</body>
</html>
+57
View File
@@ -0,0 +1,57 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<meta name="description" content="OpenCAD Studio user manual — Workspace and Navigation">
<title>Workspace and Navigation — OpenCAD Studio Help</title>
<link rel="stylesheet" href="assets/css/core.css">
<link rel="stylesheet" href="assets/css/opencad.css">
<script src="search-index.js" defer></script>
<script src="assets/js/help.js" defer></script>
</head>
<body>
<header class="topbar">
<button class="nav-toggle" type="button" aria-controls="help-sidebar" aria-expanded="true" title="Toggle chapter navigation"><span aria-hidden="true">☰</span><span class="sr-only">Toggle chapter navigation</span></button>
<a class="brand" href="index.html">OpenCAD Studio Help</a>
<div class="search-shell">
<label class="sr-only" for="help-search">Search help</label>
<input id="help-search" class="help-search" type="search" role="combobox" placeholder="Search commands and topics" autocomplete="off" aria-autocomplete="list" aria-controls="search-results" aria-expanded="false">
<span class="search-key" aria-hidden="true">⌘K</span>
<ul id="search-results" class="search-results" role="listbox" hidden></ul>
</div>
</header>
<nav id="help-sidebar" class="sidebar" aria-label="Help chapters">
<div><a class="chapter-link" href="index.html">Help overview</a></div>
<details><summary><a href="getting-started.html">Getting Started</a></summary><ul><li><a href="getting-started.html#what-opencad-studio-does">What OpenCAD Studio does</a></li><li><a href="getting-started.html#a-first-drawing">A first drawing</a></li><li><a href="getting-started.html#how-to-use-this-manual">How to use this manual</a></li></ul></details>
<details><summary><a href="files-drawings.html">Files and Drawings</a></summary><ul><li><a href="files-drawings.html#create-and-open-drawings">Create and open drawings</a></li><li><a href="files-drawings.html#save-and-save-as">Save and Save As</a></li><li><a href="files-drawings.html#recovery-and-backups">Recovery and backups</a></li><li><a href="files-drawings.html#external-resources">External resources</a></li></ul></details>
<details class="current-topic" open><summary><a href="workspace-navigation.html">Workspace and Navigation</a></summary><ul><li><a href="workspace-navigation.html#model-space-and-paper-space">Model space and paper space</a></li><li><a href="workspace-navigation.html#pan-zoom-and-orbit">Pan, zoom, and orbit</a></li><li><a href="workspace-navigation.html#multiple-model-viewports">Multiple model viewports</a></li><li><a href="workspace-navigation.html#selection-and-object-snaps">Selection and object snaps</a></li></ul></details>
<details><summary><a href="create-edit-geometry.html">Create and Edit Geometry</a></summary><ul><li><a href="create-edit-geometry.html#basic-drawing-commands">Basic drawing commands</a></li><li><a href="create-edit-geometry.html#modify-geometry">Modify geometry</a></li><li><a href="create-edit-geometry.html#grips-and-direct-manipulation">Grips and direct manipulation</a></li><li><a href="create-edit-geometry.html#undo-redo-and-oops">Undo, redo, and OOPS</a></li></ul></details>
<details><summary><a href="layers-properties.html">Layers and Properties</a></summary><ul><li><a href="layers-properties.html#layers">Layers</a></li><li><a href="layers-properties.html#object-properties">Object properties</a></li><li><a href="layers-properties.html#styles">Styles</a></li></ul></details>
<details><summary><a href="blocks-references.html">Blocks and References</a></summary><ul><li><a href="blocks-references.html#create-and-insert-blocks">Create and insert blocks</a></li><li><a href="blocks-references.html#array-inserts">Array inserts</a></li><li><a href="blocks-references.html#attributes-and-external-references">Attributes and external references</a></li></ul></details>
<details><summary><a href="annotation-dimensions.html">Annotation and Dimensions</a></summary><ul><li><a href="annotation-dimensions.html#text-and-annotation">Text and annotation</a></li><li><a href="annotation-dimensions.html#dimensions">Dimensions</a></li><li><a href="annotation-dimensions.html#annotation-scale">Annotation scale</a></li></ul></details>
<details><summary><a href="layouts-plotting.html">Layouts and Plotting</a></summary><ul><li><a href="layouts-plotting.html#layouts-and-viewports">Layouts and viewports</a></li><li><a href="layouts-plotting.html#page-setup-and-plot-preview">Page setup and plot preview</a></li><li><a href="layouts-plotting.html#export-checks">Export checks</a></li></ul></details>
<details><summary><a href="3d-modeling.html">3D Modeling and Visualization</a></summary><ul><li><a href="3d-modeling.html#solids-and-surfaces">Solids and surfaces</a></li><li><a href="3d-modeling.html#visual-styles-and-lighting">Visual styles and lighting</a></li><li><a href="3d-modeling.html#tessellation-quality">Tessellation quality</a></li></ul></details>
<details><summary><a href="parametric-constraints.html">Parametric Constraints</a></summary><ul><li><a href="parametric-constraints.html#geometric-constraints">Geometric constraints</a></li><li><a href="parametric-constraints.html#editing-constrained-geometry">Editing constrained geometry</a></li><li><a href="parametric-constraints.html#persistence-and-history-limitations">Persistence and history limitations</a></li></ul></details>
<details><summary><a href="commands-shortcuts.html">Commands and Shortcuts</a></summary><ul><li><a href="commands-shortcuts.html#command-line">Command line</a></li><li><a href="commands-shortcuts.html#discover-commands">Discover commands</a></li><li><a href="commands-shortcuts.html#shortcut-conventions">Shortcut conventions</a></li></ul></details>
<details><summary><a href="automation-plugins.html">Automation and Plugins</a></summary><ul><li><a href="automation-plugins.html#automation-interface">Automation interface</a></li><li><a href="automation-plugins.html#plugins">Plugins</a></li><li><a href="automation-plugins.html#native-and-web-differences">Native and web differences</a></li></ul></details>
<details><summary><a href="troubleshooting-recovery.html">Troubleshooting and Recovery</a></summary><ul><li><a href="troubleshooting-recovery.html#a-drawing-opens-incorrectly">A drawing opens incorrectly</a></li><li><a href="troubleshooting-recovery.html#geometry-is-missing-or-distorted">Geometry is missing or distorted</a></li><li><a href="troubleshooting-recovery.html#rendering-is-incomplete">Rendering is incomplete</a></li><li><a href="troubleshooting-recovery.html#undo-did-not-restore-the-expected-state">Undo did not restore the expected state</a></li><li><a href="troubleshooting-recovery.html#report-a-reproducible-problem">Report a reproducible problem</a></li></ul></details>
</nav>
<main id="main-content">
<div class="content-wrap">
<p class="page-kicker">OpenCAD Studio User Manual</p>
<h1 class="content-title">Workspace and Navigation</h1>
<h3 id="model-space-and-paper-space">Model space and paper space</h3>
<p>Model space is the primary drawing environment. Paper-space layouts arrange views for plotting through layout viewports. Always confirm the active space before drawing or editing.</p>
<h3 id="pan-zoom-and-orbit">Pan, zoom, and orbit</h3>
<p>Use pan and zoom to navigate without changing drawing geometry. Use orbit and view controls for three-dimensional inspection. <strong>Zoom Extents</strong> is useful when the drawing appears empty or geometry is far from the expected location.</p>
<h3 id="multiple-model-viewports">Multiple model viewports</h3>
<p>Model viewports can show different views of the same document. Grid, snap, camera, and render mode may vary by viewport; confirm which viewport is active before entering coordinates.</p>
<h3 id="selection-and-object-snaps">Selection and object snaps</h3>
<p>Selection identifies the objects a command will modify. Object snaps target precise geometric locations such as endpoints, midpoints, centers, and intersections. Zoom in and verify the snap marker when precision matters.</p>
<nav class="page-navigation" aria-label="Previous and next chapter"><a rel="prev" href="files-drawings.html">← Files and Drawings</a><a rel="next" href="create-edit-geometry.html">Create and Edit Geometry →</a></nav>
<p class="date-footer">OpenCAD Studio Help · Generated from <code>help/manual.md</code></p>
</div>
</main>
</body>
</html>