Plano de taller (drawing workbench)

Tutorial paso a paso del módulo de dibujo técnico de Despiece: el workbench multi-hoja que arma los planos para llevar al taller (TechDraw-inspired), con vistas ortogonales, cotas, anotaciones, leader/flecha, rótulo por hoja, multi-sheet y export PDF/SVG. El atajo es Shift+D.

El módulo es un DrawingDocument con sheets (DrawingSheet[], soft parts.drawing v:1), cada hoja con su paper (A4/A3), templateId, views (PartView | SectionView | DetailView), dimensions, annotations, leaders, cosmetics y un title block con overrides por hoja (title | date | notes | drawnBy).

01 Cargar el modelo y abrir el Plano

Vista general con el botón de Plano en la topbar
01 Botón del Plano en la topbar. Grupo 6 (Documentos): cuarto icono desde la izquierda, Shift+D. Queda habilitado ni bien se carga un modelo (no depende de ningún flag de módulo).

Al importar el STEP/IGES/BREP/glTF/GLB, la sidebar izquierda muestra el árbol jerárquico. Para entrar al workbench de Plano el atajo es Shift+D, que abre el modal full-screen dwb-root.

Si nunca abriste el Plano en este proyecto, la primera vez crea automáticamente un DrawingDocument vacío con una hoja default (a4-landscape-plain, A4 landscape sin cajetín). Las hojas subsiguientes se crean con + Hoja nueva o derivan de un módulo.

La cámara vuelve a vista isométrica con Home; el zoom encaja con F.

02 Hoja nueva desde un módulo

Workbench abierto en hoja vacía
02 Workbench abierto en hoja vacía. Topbar con herramientas; tab strip Planos | Piezas | Herrajes | Proyecto | Rótulo debajo; rail izquierdo (template + source + views); canvas central; rail derecho (propiedades + meta).

Antes de crear vistas, elegí la fuente en el rail izquierdo (Source):

Una vez elegido el módulo, el botón + Hoja del módulo crea automáticamente una DrawingSheet nueva con 3 vistas (front / top / right) pre-calculadas en escala ajustada y los templateFields iniciales (cliente, orden, fecha) levantados del módulo Cliente.

Detrás del botón: seedModuleSheet(doc, ...) en src/drawing/document-seed.ts. Crea la hoja, setea activeSheetId y dispara la captura de las 3 vistas (captureViewImages) — sin re-capturar lo que ya estaba en otras hojas.

03 Anatomía del workbench

Anatomía del workbench: topbar, tabs, rails, canvas
03 Anatomía. (1) topbar con herramientas + acciones, (2) tab strip Planos | Piezas | Herrajes | Proyecto | Rótulo, (3) bar de hojas con + Hoja / ×, (4) rail izquierdo (template, source, lista de vistas), (5) canvas central con la hoja renderizada, (6) rail derecho (propiedades + título block shortcuts).

El workbench tiene 6 zonas con responsabilidades claras:

#ZonaSelectorFunción
1Topbar.dwb-topbarBrand + herramientas (select / text / line / arrow) + acciones (Nueva vista / PDF / SVG / cerrar).
2Tab strip.dwb-doc-tabsModo del documento: Planos (default) / Piezas / Herrajes / Proyecto / Rótulo.
3Hojas.dwb-sheet-tabsTabs multi-hoja: activar / cerrar / rename / drag-reorder.
4Rail izq.dwb-leftTemplate SVG + source (model / módulo) + lista de vistas de la hoja activa.
5Canvas#dwb-canvasSVG 2D con template + vistas + cotas + overlays; data-tool cambia el comportamiento del click.
6Rail der.dwb-rightPropiedades de la vista seleccionada (scale, rotation, hidden lines), atajos a título block.

Las herramientas select · text · line · arrow mutan WorkbenchTool (en workbench-tool-state.ts) y cambian el modo del canvas (data-tool="select" es drag; "text" crea anotación; etc.).

04 Tabs: Planos · Piezas · Herrajes · Proyecto · Rótulo

Tab strip con los 5 modos
04 Tab strip. Los 5 modos del documento. Planos es default; clickear el activo lo cierra (vuelve a Planos). Los otros 4 abren un overlay sobre la hoja (no reflow de layout) con un scrim detrás.

El tab strip vive justo debajo del topbar:

Cada tab abre un overlay que no rompe el layout del workbench:

TabQué muestraScope
PlanosHoja activa (default).doc.activeSheetId
PiezasLista de piezas del scope (módulo / modelo), con cantidad y material.Hoja viva (scopeHint)
HerrajesAplicación de reglas de herraje (similar a H panel).Hoja viva
ProyectoMetadatos del documento: sheets count, export options, etc.Documento
RótuloEditor del SheetTitleBlock de la hoja activa (enable / orientation / field visibility / overrides).Hoja activa
Click en el tab activo lo cierra y vuelve a Planos. El scrim bloquea clicks sobre las herramientas subyacentes y cierra el overlay con el mismo botón.

05 Crear una vista (scope + escala)

Diálogo Nueva vista
05 Diálogo Nueva vista. El botón primario del topbar abre un formulario inline: scope (model / módulo / piezas), perspectiva (ortho o perspective), rotación en grados, escala 2:1 / 1:1 / … / 1:100 + input numérico, vista oculta y líneas ocultas.

El botón Nueva vista del topbar dispara runNewView(...) en src/main/drawing-workbench-new-view.ts. Antes de abrir el diálogo, captura un preview del viewport actual; al confirmar, vuelca el preview a sessionImages[viewId] y agrega la vista a la hoja activa.

El diálogo te pide cinco cosas:

CampoOpcionesDefault
ScopeModelo / Módulo / Piezas (3-radio)lo que esté elegido en el rail izquierdo
Perspectivaortogonal / perspectivaortogonal
Rotación0° / 90° / 180° / 270°
Escalapreset (2:1 / 1:1 / 1:2 / 1:5 / 1:10 / 1:20 / 1:25 / 1:50 / 1:100) o input 1:Nfit-scale ajusta a la bounding box del scope en el área 0.9 × paper
Líneas ocultasshow / hidehide

El preset fit-scale llama a fitScaleToArea({model}, area) en src/drawing/scale-presets.ts: deja la cara del módulo ocupando 90 % del área de dibujo de la hoja (con margen 5 % alrededor). Para una cocina 2400 × 600 mm en A4 landscape (297 × 210 mm) da 1:10 como escala.

Una vez creada, la vista se puede arrastrar y re-escalar con Wheel + Shift. Shift+G (snap-to-grid 5 mm) enciende/apaga el snap a múltiplos de GRID_MM = 5 para drags más prolijos.

06 Anotaciones: texto, leader, flecha

Anotaciones y leader sobre una vista
06 Anotaciones sobre el canvas. Tres herramientas: Texto (cuadro de texto libre), Línea (segmento con estilo sólido / short / long / dot y grosor), Flecha (igual que línea con endStyle = arrow). Seleccioná un overlay en el canvas → el rail derecho cambia a propiedades del overlay (texto, tamaño mm, fuente, color).

Con la herramienta Texto activada, click en el canvas crea una DrawingAnnotation con un editor inline (workbench-inline-text.ts). Mientras editás, el SVG paint omite esa anotación (getEditingAnnotationId()) para no tapar el campo. Enter confirma, Esc cancela.

Con Línea o Flecha activadas, click-drag crea un DrawingLeader con endStyle = 'arrow' o 'none'. Los dos estilos de dash (solid | short | long | dot) y los grosores (0.15 / 0.30 / 0.50 / 0.85 mm) se eligen en el rail derecho cuando el overlay está seleccionado.

HerramientaToolbar buttonGenera
Selectdata-dwb-tool="select"— (drag y selección de vistas)
Textodata-dwb-tool="text"DrawingAnnotation
Líneadata-dwb-tool="line"DrawingLeader con endStyle='none'
Flechadata-dwb-tool="arrow"DrawingLeader con endStyle='arrow'

07 Rótulo: habilitar y overrides

Tab Rótulo con field visibility y overrides
07 Tab Rótulo (titleblock). Por hoja: enabled (toggle), orientation (horizontal / vertical), visibilidad por campo (title / client / order / date / scale / sheet / notes / drawnBy / workshop), y overrides de texto plano para los 4 campos editables: title | date | notes | drawnBy.

El tab Rótulo abre el editor del SheetTitleBlock de la hoja activa (soft field en parts.drawing v:1, sin bump del schema). El componente vive en workbench-titleblock-ui.ts.

Estructura:

// src/drawing/types.ts
interface SheetTitleBlock {
  enabled:  boolean;                              // muestra/oculta el cajetín
  orientation: 'horizontal' | 'vertical';     // horizontal: abajo, vertical: lateral
  visible: Partial<Record<FieldKey, boolean>>; // qué campos imprime
  overrides: Partial<Record<OverrideKey, string>>; // texto editable
}

Overrides disponibles por hoja:

Field keyOverride¿Aparece por default?
titletitlesí (calcado de project.activeName)
client— (sync desde Cliente)
order— (sync desde Cliente)
datedatesí (YYYY-MM-DD)
scale— (derivada de las vistas)
sheet— (i / N automático)
notesnotesopcional
drawnBydrawnByopcional
workshop— (sync desde Taller)opcional
Los overrides no rompen el sync: si el campo es de sync (cliente / order / scale / sheet / workshop), el override gana hasta que lo limpies — pero la próxima captura lo puede pisar. Mejor usarlo solo para title / date / notes / drawnBy.

08 Multi-hoja: agregar · renombrar · drag

Sheet bar con 3 hojas + tabs arrastrables
08 Multi-hoja. Tabs de hojas (sheet tabs) sobre el canvas principal. + Hoja agrega una hoja vacía con el template default; × cierra; doble-click sobre la tab renombra; drag-reorder funciona vía el handler en workbench-sheets-bar.ts.

El bar de hojas (.dwb-sheet-tabs) vive arriba del canvas principal. Sus operaciones vienen de src/drawing/document-sheet-ops.ts:

OperaciónAcciónEstado mutado
Activarclick en tabsetActiveSheet
Cerrarclick en × de la tabremoveSheet
Renombrardoble-click en tabinline edit → beginInlineRename
Reordenardrag de tab (intercambia 2 hojas)reorderSheets
Hoja de módulo+ Hoja del módulo en el rail izqseedModuleSheet (paso 2)

Cada hoja es un DrawingSheet independiente con su paper, template y lista de vistas. Soft flag includeInExport (false excluye de PDF/SVG). El DrawingDocument.export.scopeMode elige entre 'document' (todas las includeInExport !== false) o 'selectedSheets'.

El sheet tab bar usa el sistema de drag-reorder hand-rolled (mousedown/mousemove/mouseup), no HTML5 DnD, así que touchscreens lo soportan gratis.

09 Exportar PDF · SVG

Botones PDF / SVG en el topbar del workbench
09 Toolbar de exports. PDF arma un PDF multi-página (una por hoja exportable) con el template activo, las vistas capturadas, las cotas y el cajetín. SVG exporta solo la hoja activa — útil para CAM / láser / agua-chorro.

Dos botones en el topbar:

BotónSalidaMódulo
PDF{modelo}-plano.pdf — un PDF por cada hoja includeInExport !== false, con template SVG + vistas + cotas + cajetín.src/main/drawing-export-bundle.ts:makePdfBlob + jspdf
SVG{modelo}-plano-hoja-{N}.svg — solo la hoja activa, vista por vista en su propio <g>.makeSvgBlob, capas template / view-{idx} / overlay

Ambos re-capturan las vistas antes de exportar (la fuente de verdad son los sessionImages cacheados, no el mesh en vivo) — por lo que un export siempre refleja lo que viste en pantalla.

Fallback: si en el proyecto no hay DrawingDocument todavía, los botones están deshabilitados. El atajo Shift+D sigue abriendo el workbench con una hoja nueva automática.

10 Atajos de teclado

Hoja de atajos
10 Hoja de atajos. Help (botón de la topbar o ?) abre la hoja completa.

Los más usados en el flujo del Plano:

AtajoAcción
Shift+DAbrir / cerrar el Drawing workbench (toggle).
EscCerrar el workbench (overlay / panel).
Click + dragMover la vista seleccionada (snap-to-grid si está activo).
Rueda + ShiftZoom / reescalar la vista bajo el cursor.
Doble-click en tab de hojaRenombrar inline.
Drag de tab de hojaReordenar (handler hand-rolled).
? / F1Abrir la hoja de atajos completa.
F / HomeFit / Fit + iso del viewport 3D.

En Mac el modificador de sistema es ; en otros sistemas Ctrl.


Ver también