forked from 1b-agent/opencadstudio-upstream
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:
1 parent
e2d39b049d
commit
7cddf31bcb
47 files changed
+4136
-52
No files matched your search
@@ -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>
|
||||
@@ -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.
|
||||
|
||||
@@ -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>
|
||||
@@ -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; }
|
||||
}
|
||||
|
||||
@@ -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; }
|
||||
}
|
||||
|
||||
@@ -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.
|
||||
|
||||
@@ -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();
|
||||
}());
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
@@ -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
@@ -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.
|
||||
|
||||
@@ -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>
|
||||
@@ -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
|
||||
@@ -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())
|
||||
@@ -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())
|
||||
|
||||
@@ -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>
|
||||
@@ -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>
|
||||
Reference in new issue
Block a user