diff --git a/docs/command-reference.md b/docs/command-reference.md new file mode 100644 index 000000000..a6bc97964 --- /dev/null +++ b/docs/command-reference.md @@ -0,0 +1,642 @@ +# Open CAD Studio — Command Reference + +Generated from the in-repo command registry; manual edits are overwritten. Regenerate with `UPDATE_COMMAND_REFERENCE=1 cargo test command_reference`. + +## Annotate (25) + +| Command | Default shortcut | Selection | +|---|---|---| +| `DIMALIGNED` | | command-driven | +| `DIMANGULAR` | | command-driven | +| `DIMARC` | | command-driven | +| `DIMASO` | | command-driven | +| `DIMASSOC` | | command-driven | +| `DIMBASELINE` | | command-driven | +| `DIMBREAK` | | command-driven | +| `DIMCENTER` | | command-driven | +| `DIMCONTINUE` | | command-driven | +| `DIMDIAMETER` | | command-driven | +| `DIMEDIT` | | command-driven | +| `DIMJOG` | | command-driven | +| `DIMJOGGED` | | command-driven | +| `DIMJOGLINE` | | command-driven | +| `DIMLINEAR` | | command-driven | +| `DIMORDINATE` | | command-driven | +| `DIMRADIUS` | | command-driven | +| `DIMSHO` | | command-driven | +| `DIMSPACE` | | command-driven | +| `DIMSTYLE` | | command-driven | +| `DIMTED` | | command-driven | +| `DIMTEDIT` | | command-driven | +| `LEADER` | | command-driven | +| `MLEADER` | | command-driven | +| `TOLERANCE` | | command-driven | + +## Create (18) + +| Command | Default shortcut | Selection | +|---|---|---| +| `3DPOLY` | | command-driven | +| `ARC` | | command-driven | +| `CIRCLE` | | command-driven | +| `ELLIPSE` | | command-driven | +| `HATCH` | | command-driven | +| `LINE` | | command-driven | +| `MLINE` | | command-driven | +| `MTEXT` | | command-driven | +| `PLINE` | | command-driven | +| `POINT` | | command-driven | +| `POLYGON` | | command-driven | +| `RAY` | | command-driven | +| `RECT` | | command-driven | +| `RECTANG` | | command-driven | +| `SPLINE` | | command-driven | +| `TABLE` | | command-driven | +| `TEXT` | | command-driven | +| `XLINE` | | command-driven | + +## Inspect (5) + +| Command | Default shortcut | Selection | +|---|---|---| +| `AREA` | | command-driven | +| `DIST` | | command-driven | +| `ID` | | command-driven | +| `MEASURE` | | command-driven | +| `MEASUREGEOM` | | command-driven | + +## Model (14) + +| Command | Default shortcut | Selection | +|---|---|---| +| `BOX` | | command-driven | +| `CONE` | | command-driven | +| `CYLINDER` | | command-driven | +| `EXTRUDE` | | command-driven | +| `INTERSECT` | | command-driven | +| `LOFT` | | command-driven | +| `PRESSPULL` | | command-driven | +| `REVOLVE` | | command-driven | +| `SPHERE` | | command-driven | +| `SUBTRACT` | | command-driven | +| `SWEEP` | | command-driven | +| `TORUS` | | command-driven | +| `UNION` | | command-driven | +| `WEDGE` | | command-driven | + +## Modify (20) + +| Command | Default shortcut | Selection | +|---|---|---| +| `ALIGN` | | command-driven | +| `ARRAY` | | current selection or prompt | +| `BREAK` | | command-driven | +| `CHAMFER` | | command-driven | +| `COPY` | | current selection or prompt | +| `ERASE` | | current selection or prompt | +| `EXPLODE` | | current selection or prompt | +| `EXTEND` | | command-driven | +| `FILLET` | | command-driven | +| `JOIN` | | command-driven | +| `MIRROR` | | current selection or prompt | +| `MOVE` | | current selection or prompt | +| `OFFSET` | | command-driven | +| `PEDIT` | | command-driven | +| `REVERSE` | | command-driven | +| `ROTATE` | | current selection or prompt | +| `SCALE` | | current selection or prompt | +| `SPLINEDIT` | | command-driven | +| `STRETCH` | | current selection or prompt | +| `TRIM` | | command-driven | + +## Other (514) + +| Command | Default shortcut | Selection | +|---|---|---| +| `-SETBYLAYER` | | command-driven | +| `3DALIGN` | | command-driven | +| `3DARRAY` | | command-driven | +| `3DFACE` | | command-driven | +| `3DMESH` | | command-driven | +| `3DMIRROR` | | command-driven | +| `3DMOVE` | | command-driven | +| `3DROTATE` | | command-driven | +| `3O` | | command-driven | +| `ABOUT` | | command-driven | +| `ACONSTRAINT` | | command-driven | +| `ADC` | | command-driven | +| `ADCENTER` | | command-driven | +| `ADDSELECTED` | | command-driven | +| `ADJUST` | | command-driven | +| `ALIASEDIT` | | command-driven | +| `ALIGN3D` | | command-driven | +| `ALIGNBOTTOM` | | command-driven | +| `ALIGNHCENTER` | | command-driven | +| `ALIGNLEFT` | | command-driven | +| `ALIGNRIGHT` | | command-driven | +| `ALIGNTOP` | | command-driven | +| `ALIGNVCENTER` | | command-driven | +| `ANGBASE` | | command-driven | +| `ANGDIR` | | command-driven | +| `ANNOALLVISIBLE` | | command-driven | +| `ANNOAUTOSCALE` | | command-driven | +| `ANNORESET` | | command-driven | +| `ANNOSCALE` | | command-driven | +| `ANNOUPDATE` | | command-driven | +| `ARCHIVE` | | command-driven | +| `ARCTEXT` | | command-driven | +| `ARC_3P` | | command-driven | +| `ARC_CONT` | | command-driven | +| `ARC_CSA` | | command-driven | +| `ARC_CSE` | | command-driven | +| `ARC_CSL` | | command-driven | +| `ARC_SCA` | | command-driven | +| `ARC_SCE` | | command-driven | +| `ARC_SCL` | | command-driven | +| `ARC_SEA` | | command-driven | +| `ARC_SED` | | command-driven | +| `ARC_SER` | | command-driven | +| `ARRAY3D` | | command-driven | +| `ARRAYPATH` | | current selection or prompt | +| `ARRAYPOLAR` | | current selection or prompt | +| `ARRAYRECT` | | current selection or prompt | +| `ATTDEF` | | command-driven | +| `ATTDIA` | | command-driven | +| `ATTDISP` | | command-driven | +| `ATTEDIT` | | command-driven | +| `ATTEXT` | | command-driven | +| `ATTMAN` | | command-driven | +| `ATTMODE` | | command-driven | +| `ATTREQ` | | command-driven | +| `ATTSYNC` | | command-driven | +| `AUDIT` | | command-driven | +| `AUNITS` | | command-driven | +| `AUPREC` | | command-driven | +| `AUTOCONSTRAIN` | | command-driven | +| `BACKGROUND` | | command-driven | +| `BASE` | | command-driven | +| `BATTMAN` | | command-driven | +| `BEDIT` | | command-driven | +| `BEDIT_DISCARD` | | command-driven | +| `BEDIT_SAVE` | | command-driven | +| `BLE` | | command-driven | +| `BLEND` | | command-driven | +| `BLIPMODE` | | command-driven | +| `BLOCK` | | current selection or prompt | +| `BLOCKPALETTE` | | command-driven | +| `BLOCKSPALETTE` | | command-driven | +| `BMAKE` | | command-driven | +| `BOUNDARY` | | command-driven | +| `BREAKATPOINT` | | command-driven | +| `BYLAYER` | | command-driven | +| `CAL` | | command-driven | +| `CANNOSCALE` | | command-driven | +| `CASCADE` | | command-driven | +| `CCONSTRAINT` | | command-driven | +| `CDIMSTY` | | command-driven | +| `CECOLOR` | | command-driven | +| `CELTSCALE` | | command-driven | +| `CENTERDISASSOCIATE` | | command-driven | +| `CENTERLINE` | | command-driven | +| `CENTERMARK` | | command-driven | +| `CENTERREASSOCIATE` | | command-driven | +| `CENTERRESET` | | command-driven | +| `CETRANSPARENCY` | | command-driven | +| `CHAMFEREDGE` | | command-driven | +| `CHANGELOG` | | command-driven | +| `CHPROP` | | command-driven | +| `CIRCLE_2P` | | command-driven | +| `CIRCLE_3P` | | command-driven | +| `CIRCLE_CD` | | command-driven | +| `CIRCLE_TTR` | | command-driven | +| `CIRCLE_TTT` | | command-driven | +| `CLAYER` | | command-driven | +| `CLEANSCREEN` | Ctrl+0 | command-driven | +| `CLEAR` | | command-driven | +| `CLIPROMPTLINES` | | command-driven | +| `CLOSE` | | command-driven | +| `CLR` | | command-driven | +| `CMLJUST` | | command-driven | +| `CMLSCALE` | | command-driven | +| `CMLSTYLE` | | command-driven | +| `COLOR` | | command-driven | +| `COLORSCHEME` | | command-driven | +| `COLORTHEME` | | command-driven | +| `COLOUR` | | command-driven | +| `COMMANDLINEFADETIME` | | command-driven | +| `CONSTRAINTSETTINGS` | | command-driven | +| `CONSTRUCTIONLINE` | | command-driven | +| `CONTENTBROWSER` | | command-driven | +| `CONVTOSURFACE` | | command-driven | +| `COORDS` | | command-driven | +| `COPYBASE` | Ctrl+SHIFT+C | command-driven | +| `COPYCLIP` | Ctrl+C | current selection or prompt | +| `COUNT` | | command-driven | +| `CPCONSTRAINT` | | command-driven | +| `CROSSINGAREACOLOR` | | command-driven | +| `CUI` | | command-driven | +| `CUIEXPORT` | | command-driven | +| `CUIIMPORT` | | command-driven | +| `CUILOAD` | | command-driven | +| `CURSORSIZE` | | command-driven | +| `CURSORTYPE` | | command-driven | +| `CUTCLIP` | Ctrl+X | current selection or prompt | +| `DATAEXTRACTION` | | command-driven | +| `DATALINK` | | command-driven | +| `DATALINKUPDATE` | | command-driven | +| `DBLIST` | | command-driven | +| `DCALIGNED` | | command-driven | +| `DCANGULAR` | | command-driven | +| `DCCONVERT` | | command-driven | +| `DCDIAMETER` | | command-driven | +| `DCE` | | command-driven | +| `DCHIDE` | | command-driven | +| `DCHIDEALL` | | command-driven | +| `DCHORIZONTAL` | | command-driven | +| `DCLINEAR` | | command-driven | +| `DCONSTRAINT` | | command-driven | +| `DCRADIUS` | | command-driven | +| `DCSHOW` | | command-driven | +| `DCSHOWALL` | | command-driven | +| `DCVERTICAL` | | command-driven | +| `DDCOLOR` | | command-driven | +| `DDEDIT` | | command-driven | +| `DDIM` | | command-driven | +| `DDPTYPE` | | command-driven | +| `DDUNITS` | | command-driven | +| `DE` | | command-driven | +| `DELCONSTRAINT` | | command-driven | +| `DELOBJ` | | command-driven | +| `DESELALL` | | command-driven | +| `DESELECT` | | command-driven | +| `DISPSILH` | | command-driven | +| `DIVIDE` | | command-driven | +| `DJO` | | command-driven | +| `DONATE` | | command-driven | +| `DONUT` | | command-driven | +| `DRAGMODE` | | command-driven | +| `DRAWORDER` | | command-driven | +| `DRAWORDER_ABOVE` | | command-driven | +| `DRAWORDER_BACK` | | command-driven | +| `DRAWORDER_FRONT` | | command-driven | +| `DRAWORDER_UNDER` | | command-driven | +| `DSETTINGS` | | command-driven | +| `DSPACE` | | command-driven | +| `DWGPROP` | | command-driven | +| `DWGPROPS` | | command-driven | +| `DWGUNITS` | | command-driven | +| `EATTEXT` | | command-driven | +| `ECONSTRAINT` | | command-driven | +| `EDCONSTRAINT` | | command-driven | +| `EDGE` | | command-driven | +| `ELEVATION` | | command-driven | +| `ELLIPSE_ARC` | | command-driven | +| `ELLIPSE_AXIS` | | command-driven | +| `ETRANSMIT` | | command-driven | +| `EXIT` | | command-driven | +| `EXPORT` | | command-driven | +| `EXPORTPDF` | | command-driven | +| `EXPORTSTEP` | | command-driven | +| `EXPORTSTL` | | command-driven | +| `EXTRIM` | | command-driven | +| `FI` | | command-driven | +| `FILEASSOC` | | command-driven | +| `FILETAB` | | command-driven | +| `FILLETEDGE` | | command-driven | +| `FILTER` | | command-driven | +| `FIND` | Ctrl+F | command-driven | +| `FINDNONPURGEABLE` | | command-driven | +| `FITSPLINE` | | command-driven | +| `FLATSHOT` | | command-driven | +| `FLATTEN` | | command-driven | +| `FRAME` | | command-driven | +| `FRAMES0` | | command-driven | +| `FRAMES1` | | command-driven | +| `FRAMES2` | | command-driven | +| `FXCONSTRAINT` | | command-driven | +| `GCCOINCIDENT` | | command-driven | +| `GCHIDE` | | command-driven | +| `GCHIDEALL` | | command-driven | +| `GCRESET` | | command-driven | +| `GCSHOW` | | command-driven | +| `GCSHOWALL` | | command-driven | +| `GEOMCONSTRAINT` | | command-driven | +| `GRADIENT` | | command-driven | +| `GRID` | F7 | command-driven | +| `GRIPCOLOR` | | command-driven | +| `GRIPHOT` | | command-driven | +| `GRIPHOVER` | | command-driven | +| `GRIPOBJLIMIT` | | command-driven | +| `GRIPSIZE` | | command-driven | +| `GROUP` | | current selection or prompt | +| `HALOGAP` | | command-driven | +| `HATCHEDIT` | | command-driven | +| `HATCHTOBACK` | | command-driven | +| `HB` | | command-driven | +| `HCONSTRAINT` | | command-driven | +| `HELIX` | | command-driven | +| `HELP` | F1 | command-driven | +| `HI` | | command-driven | +| `HIDE` | | command-driven | +| `HIDEOBJECTS` | | command-driven | +| `HORIZONTAL` | | command-driven | +| `HYPERLINK` | | command-driven | +| `IM` | | command-driven | +| `IMAGE` | | command-driven | +| `IMAGEATTACH` | | command-driven | +| `IMAGEFRAME` | | command-driven | +| `IMPORTOBJ` | | command-driven | +| `INF` | | command-driven | +| `INSERT` | | command-driven | +| `INSUNITS` | | command-driven | +| `INTERFERE` | | command-driven | +| `ISAVEBAK` | | command-driven | +| `ISODRAFT` | | command-driven | +| `ISOLATEOBJECTS` | | command-driven | +| `ISOLINES` | | command-driven | +| `ISOPLANE` | F5 | command-driven | +| `JUSTIFYTEXT` | | command-driven | +| `LA` | | command-driven | +| `LANDXMLIMPORT` | | command-driven | +| `LAS` | | command-driven | +| `LAYDEL` | | command-driven | +| `LAYER` | | command-driven | +| `LAYERS` | | command-driven | +| `LAYERSTATE` | | command-driven | +| `LAYFRZ` | | current selection or prompt | +| `LAYISO` | | command-driven | +| `LAYLCK` | | current selection or prompt | +| `LAYMATCH` | | command-driven | +| `LAYMCH` | | command-driven | +| `LAYMCUR` | | current selection or prompt | +| `LAYMRG` | | command-driven | +| `LAYOFF` | | current selection or prompt | +| `LAYON` | | command-driven | +| `LAYOUTMANAGER` | | command-driven | +| `LAYOUTPANEL` | | command-driven | +| `LAYOUTTAB` | | command-driven | +| `LAYTHW` | | command-driven | +| `LAYTRANS` | | command-driven | +| `LAYULK` | | current selection or prompt | +| `LAYUNISO` | | command-driven | +| `LCONSTRAINT` | | command-driven | +| `LENGTHEN` | | command-driven | +| `LI` | | command-driven | +| `LIMCHECK` | | command-driven | +| `LIMITS` | | command-driven | +| `LINETYPE` | | command-driven | +| `LIST` | | command-driven | +| `LMAN` | | command-driven | +| `LTSCALE` | | command-driven | +| `LUNITS` | | command-driven | +| `LUPREC` | | command-driven | +| `LWDISPLAY` | | command-driven | +| `M2P` | | command-driven | +| `MASSPROP` | | command-driven | +| `MATCHPROP` | | command-driven | +| `MAXACTVP` | | command-driven | +| `MEA` | | command-driven | +| `MINSERT` | | command-driven | +| `MIRROR3D` | | command-driven | +| `MIRRTEXT` | | command-driven | +| `MLEADERADD` | | command-driven | +| `MLEADERALIGN` | | command-driven | +| `MLEADERCOLLECT` | | command-driven | +| `MLEADERREMOVE` | | command-driven | +| `MLEADERSTYLE` | | command-driven | +| `MLEDIT` | | command-driven | +| `MLSTYLE` | | command-driven | +| `MPCONSTRAINT` | | command-driven | +| `MS` | | command-driven | +| `MSPACE` | | command-driven | +| `MTP` | | command-driven | +| `MULTIPOINT` | | command-driven | +| `MVIEW` | | command-driven | +| `NAVVCUBE` | | command-driven | +| `NCONSTRAINT` | | command-driven | +| `NCOPY` | | command-driven | +| `NCOPYALL` | | command-driven | +| `NEW` | Ctrl+N | command-driven | +| `NRCONSTRAINT` | | command-driven | +| `OBJECTSCALE` | | command-driven | +| `OBJIMPORT` | | command-driven | +| `OCCONSTRAINT` | | command-driven | +| `OOPS` | | command-driven | +| `OP` | | command-driven | +| `OPEN` | Ctrl+O | command-driven | +| `OPTIONS` | | command-driven | +| `ORTHO` | F8 | command-driven | +| `OSMODE` | | command-driven | +| `OSNAP` | | command-driven | +| `OVERKILL` | | command-driven | +| `P` | | command-driven | +| `PAGESETUP` | | command-driven | +| `PARAMETERS` | | command-driven | +| `PASTE` | | command-driven | +| `PASTEBLOCK` | Ctrl+SHIFT+V | command-driven | +| `PASTECLIP` | Ctrl+V | command-driven | +| `PASTEORIG` | | command-driven | +| `PCONSTRAINT` | | command-driven | +| `PDFATTACH` | | command-driven | +| `PDFFRAME` | | command-driven | +| `PDMODE` | | command-driven | +| `PDSIZE` | | command-driven | +| `PERF` | | command-driven | +| `PERSP` | | command-driven | +| `PICKADD` | | command-driven | +| `PICKBOX` | | command-driven | +| `PICKDRAG` | | command-driven | +| `PICKSTYLE` | | command-driven | +| `PLIMCHECK` | | command-driven | +| `PLINEGEN` | | command-driven | +| `PLOT` | Ctrl+P | command-driven | +| `PLOTSTYLE` | | command-driven | +| `PLOTSTYLEEDITOR` | | command-driven | +| `PLOTSTYLEPANEL` | | command-driven | +| `PLOTWINDOW` | | command-driven | +| `PLUGINMANAGER` | | command-driven | +| `PLUGINS` | | command-driven | +| `POINTCLOUDCLIPFRAME` | | command-driven | +| `POLAR` | F10 | command-driven | +| `POLY` | | command-driven | +| `POLYSOLID` | | command-driven | +| `POLY_C` | | command-driven | +| `POLY_E` | | command-driven | +| `PR` | | command-driven | +| `PRINT` | | command-driven | +| `PRINTALL` | | command-driven | +| `PROPERTIES` | Ctrl+1 | command-driven | +| `PROPS` | | command-driven | +| `PSLTSCALE` | | command-driven | +| `PSPACE` | | command-driven | +| `PURGE` | | command-driven | +| `PYR` | | command-driven | +| `PYRAMID` | | command-driven | +| `QC` | | command-driven | +| `QCONSTRAINT` | | command-driven | +| `QDIM` | | command-driven | +| `QL` | | command-driven | +| `QLEADER` | | command-driven | +| `QP` | | command-driven | +| `QS` | | command-driven | +| `QSAVE` | | command-driven | +| `QSELECT` | | command-driven | +| `QTEXTMODE` | | command-driven | +| `QUICKCALC` | | command-driven | +| `QUICKPRINT` | | command-driven | +| `QUICKPROPERTIES` | | command-driven | +| `QUIT` | Ctrl+Q | command-driven | +| `RECT_CEN` | | command-driven | +| `RECT_ROT` | | command-driven | +| `REDO` | Ctrl+SHIFT+Z | command-driven | +| `REDRAW` | | command-driven | +| `REDRAWALL` | | command-driven | +| `REFCLOSE` | | command-driven | +| `REFEDIT` | | command-driven | +| `REG` | | command-driven | +| `REGEN` | | command-driven | +| `REGENALL` | | command-driven | +| `REGENMODE` | | command-driven | +| `REGION` | | command-driven | +| `RENAME` | | command-driven | +| `REPORT` | | command-driven | +| `REVCLOUD` | | command-driven | +| `REVCLOUD_FREEHAND` | | command-driven | +| `REVCLOUD_POLYGONAL` | | command-driven | +| `REVCLOUD_RECTANGULAR` | | command-driven | +| `ROTATE3D` | | command-driven | +| `SA` | | command-driven | +| `SAVE` | Ctrl+S | command-driven | +| `SAVEALL` | | command-driven | +| `SAVEAS` | Ctrl+SHIFT+S | command-driven | +| `SAVETIME` | | command-driven | +| `SCALELISTEDIT` | | command-driven | +| `SCALETEXT` | | command-driven | +| `SCR` | | command-driven | +| `SCRIPT` | | command-driven | +| `SECTION` | | command-driven | +| `SECTIONPLANE` | | command-driven | +| `SELECTALL` | Ctrl+A | command-driven | +| `SELECTIONAREA` | | command-driven | +| `SELECTIONAREAOPACITY` | | command-driven | +| `SELECTIONEFFECT` | | command-driven | +| `SELECTIONEFFECTCOLOR` | | command-driven | +| `SELECTIONPREVIEW` | | command-driven | +| `SELECTSIMILAR` | | command-driven | +| `SELSIM` | | command-driven | +| `SETBYLAYER` | | command-driven | +| `SETBYLAYERMODE` | | command-driven | +| `SETVAR` | | command-driven | +| `SHADEDGE` | | command-driven | +| `SHADEMODE` | | command-driven | +| `SHEETSET` | | command-driven | +| `SHELL` | | command-driven | +| `SHORTCUTS` | | command-driven | +| `SKETCH` | | command-driven | +| `SKETCHINC` | | command-driven | +| `SKPOLY` | | command-driven | +| `SKTOLERANCE` | | command-driven | +| `SL` | | command-driven | +| `SLICE` | | command-driven | +| `SMOOTHCONSTRAINT` | | command-driven | +| `SNAP` | F9 | command-driven | +| `SNAPANG` | | command-driven | +| `SO` | | command-driven | +| `SOLID` | | command-driven | +| `SOLID2D` | | command-driven | +| `SOLIDCHAMFER` | | command-driven | +| `SOLIDEDIT` | | command-driven | +| `SOLIDFILLET` | | command-driven | +| `SORTENTS` | | command-driven | +| `SPLFRAME` | | command-driven | +| `SPLINECV` | | command-driven | +| `SPLINEFIT` | | command-driven | +| `SPLINESEGS` | | command-driven | +| `SPLINETYPE` | | command-driven | +| `SSM` | | command-driven | +| `STEPOUT` | | command-driven | +| `STLOUT` | | command-driven | +| `STPOUT` | | command-driven | +| `STYLE` | | command-driven | +| `STYLESMANAGER` | | command-driven | +| `SURFTYPE` | | command-driven | +| `SURFU` | | command-driven | +| `SURFV` | | command-driven | +| `SYCONSTRAINT` | | command-driven | +| `SYNCPVIEWPORTS` | | command-driven | +| `TABLEDIT` | | command-driven | +| `TABLESTYLE` | | command-driven | +| `TCASE` | | command-driven | +| `TCONSTRAINT` | | command-driven | +| `TCOUNT` | | command-driven | +| `TEDIT` | | command-driven | +| `TEXTEDIT` | | command-driven | +| `TEXTEDITMODE` | | command-driven | +| `TEXTFILL` | | command-driven | +| `TEXTFIT` | | command-driven | +| `TEXTMASK` | | command-driven | +| `TEXTQLTY` | | command-driven | +| `TEXTTOBACK` | | command-driven | +| `TEXTTOFRONT` | | command-driven | +| `THICKEN` | | command-driven | +| `THICKNESS` | | command-driven | +| `TOOLPALETTES` | | command-driven | +| `TORIENT` | | command-driven | +| `TP` | | command-driven | +| `TRACE` | | command-driven | +| `TRACEWID` | | command-driven | +| `TS` | | command-driven | +| `U` | | command-driven | +| `UCSICON` | | command-driven | +| `UN` | | command-driven | +| `UNDERLAY` | | command-driven | +| `UNDO` | Ctrl+Z | command-driven | +| `UNGROUP` | | command-driven | +| `UNISOLATEOBJECTS` | | command-driven | +| `UNITS` | | command-driven | +| `USERI` | | command-driven | +| `USERR` | | command-driven | +| `USRTIMER` | | command-driven | +| `VCONSTRAINT` | | command-driven | +| `VERTICAL` | | command-driven | +| `VIEW` | | command-driven | +| `VISRETAIN` | | command-driven | +| `VISUALSTYLES` | | command-driven | +| `VPJOIN` | | command-driven | +| `VPLAYER` | | command-driven | +| `VPSYNC` | | command-driven | +| `VS` | | command-driven | +| `VSCURRENT` | | command-driven | +| `VW` | | command-driven | +| `WB` | | command-driven | +| `WBLOCK` | | command-driven | +| `WEBVERSION` | | command-driven | +| `WINDOWAREACOLOR` | | command-driven | +| `WINDOWSAREACOLOR` | | command-driven | +| `WIPEOUT` | | command-driven | +| `WIPEOUTFRAME` | | command-driven | +| `WORLDVIEW` | | command-driven | +| `XA` | | command-driven | +| `XATTACH` | | command-driven | +| `XCLIPFRAME` | | command-driven | +| `XDATA` | | command-driven | +| `XOPEN` | | command-driven | +| `XR` | | command-driven | +| `XREF` | | command-driven | +| `XRELOAD` | | command-driven | +| `ZOOMFACTOR` | | command-driven | +| `ZOOMWHEEL` | | command-driven | +| `ZS` | | command-driven | + +## View (6) + +| Command | Default shortcut | Selection | +|---|---|---| +| `3DORBIT` | | command-driven | +| `PAN` | | command-driven | +| `PLAN` | | command-driven | +| `UCS` | | command-driven | +| `VPORTS` | | command-driven | +| `ZOOM` | | command-driven | + +_602 commands across 7 categories._ diff --git a/locales/ar-SA/opencadstudio.ftl b/locales/ar-SA/opencadstudio.ftl index 7641c9cb8..05ee3c074 100644 --- a/locales/ar-SA/opencadstudio.ftl +++ b/locales/ar-SA/opencadstudio.ftl @@ -3575,6 +3575,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: مقياس التعليق التوضيحي النشط غير متاح. .opening-ocs-discussions-for-help-and-questions = يجري فتح مناقشات OCS للمساعدة والأسئلة... .opening-ocs-web = يجري فتح OCS Web... + .opening-the-command-reference = فتح مرجع الأوامر... .opening-patreon-page = يجري فتح صفحة Patreon... .opening-feedback-page = يجري فتح صفحة الملاحظات... .opening-release-notes = يجري فتح ملاحظات الإصدار... diff --git a/locales/bg-BG/opencadstudio.ftl b/locales/bg-BG/opencadstudio.ftl index ce7faff6a..73a265edf 100644 --- a/locales/bg-BG/opencadstudio.ftl +++ b/locales/bg-BG/opencadstudio.ftl @@ -3562,6 +3562,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: активният анотационен мащаб не е наличен. .opening-ocs-discussions-for-help-and-questions = Отваряне на OCS дискусии за помощ и въпроси... .opening-ocs-web = Отваряне на OCS уебсайта... + .opening-the-command-reference = Отваряне на справочника за команди... .opening-patreon-page = Отваряне на страницата в Patreon... .opening-feedback-page = Отваряне на страницата за обратна връзка... .opening-release-notes = Отваряне на бележките по версията... diff --git a/locales/cs-CZ/opencadstudio.ftl b/locales/cs-CZ/opencadstudio.ftl index fc43d451c..ce6648f3b 100644 --- a/locales/cs-CZ/opencadstudio.ftl +++ b/locales/cs-CZ/opencadstudio.ftl @@ -3560,6 +3560,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: aktivní měřítko anotací není k dispozici. .opening-ocs-discussions-for-help-and-questions = Otevírání diskuzí OCS pro nápovědu a dotazy... .opening-ocs-web = Otevírání webu OCS... + .opening-the-command-reference = Otevírání referenční příručky příkazů... .opening-patreon-page = Otevírání stránky Patreon... .opening-feedback-page = Otevírá se stránka zpětné vazby... .opening-release-notes = Otevírání poznámek k vydání... diff --git a/locales/de-DE/opencadstudio.ftl b/locales/de-DE/opencadstudio.ftl index c94f83cea..64e26c431 100644 --- a/locales/de-DE/opencadstudio.ftl +++ b/locales/de-DE/opencadstudio.ftl @@ -3561,6 +3561,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: Die aktive Annotationsskala ist nicht verfügbar. .opening-ocs-discussions-for-help-and-questions = Eröffnung OCS Diskussionen für Hilfe und Fragen... .opening-ocs-web = Öffnen OCS Web... + .opening-the-command-reference = Öffnen der Befehlsreferenz... .opening-patreon-page = Eröffnungsseite Patreon... .opening-feedback-page = Feedbackseite öffnen... .opening-release-notes = Opening Release Notes... diff --git a/locales/el-GR/opencadstudio.ftl b/locales/el-GR/opencadstudio.ftl index da27a4211..052e63a6b 100644 --- a/locales/el-GR/opencadstudio.ftl +++ b/locales/el-GR/opencadstudio.ftl @@ -3557,6 +3557,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: η ενεργή κλίμακα επισημείωσης δεν είναι διαθέσιμη. .opening-ocs-discussions-for-help-and-questions = Άνοιγμα των συζητήσεων OCS για βοήθεια και ερωτήσεις... .opening-ocs-web = Άνοιγμα του OCS Web... + .opening-the-command-reference = Άνοιγμα της αναφοράς εντολών... .opening-patreon-page = Άνοιγμα της σελίδας Patreon... .opening-feedback-page = Άνοιγμα της σελίδας σχολίων... .opening-release-notes = Άνοιγμα των σημειώσεων έκδοσης... diff --git a/locales/en-US/opencadstudio.ftl b/locales/en-US/opencadstudio.ftl index 945cad9cb..528af7d8c 100644 --- a/locales/en-US/opencadstudio.ftl +++ b/locales/en-US/opencadstudio.ftl @@ -3558,6 +3558,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: the active annotation scale is unavailable. .opening-ocs-discussions-for-help-and-questions = Opening OCS Discussions for help and questions... .opening-ocs-web = Opening OCS Web... + .opening-the-command-reference = Opening the command reference... .opening-patreon-page = Opening Patreon page... .opening-feedback-page = Opening feedback page... .opening-release-notes = Opening release notes... diff --git a/locales/es-ES/opencadstudio.ftl b/locales/es-ES/opencadstudio.ftl index d47c5356f..62734070c 100644 --- a/locales/es-ES/opencadstudio.ftl +++ b/locales/es-ES/opencadstudio.ftl @@ -3563,6 +3563,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: la escala de anotación activa no está disponible. .opening-ocs-discussions-for-help-and-questions = Abriendo Debates de OCS para obtener ayuda y hacer preguntas... .opening-ocs-web = Abriendo OCS Web... + .opening-the-command-reference = Abriendo la referencia de comandos... .opening-patreon-page = Abriendo la página de Patreon... .opening-feedback-page = Abriendo la página de comentarios... .opening-release-notes = Abriendo las notas de la versión... diff --git a/locales/fi-FI/opencadstudio.ftl b/locales/fi-FI/opencadstudio.ftl index 75d8bdcd2..a96171bf5 100644 --- a/locales/fi-FI/opencadstudio.ftl +++ b/locales/fi-FI/opencadstudio.ftl @@ -3562,6 +3562,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: aktiivinen huomautusasteikko ei ole käytettävissä. .opening-ocs-discussions-for-help-and-questions = OCS-keskustelujen avaaminen apua ja kysymyksiä varten... .opening-ocs-web = Avataan OCS Web... + .opening-the-command-reference = Avataan komentoviittausta... .opening-patreon-page = Avataan Patreon-sivua... .opening-feedback-page = Palautesivua avataan... .opening-release-notes = Avataan julkaisutietoja... diff --git a/locales/fr-FR/opencadstudio.ftl b/locales/fr-FR/opencadstudio.ftl index 8bea01729..e4672aabf 100644 --- a/locales/fr-FR/opencadstudio.ftl +++ b/locales/fr-FR/opencadstudio.ftl @@ -3563,6 +3563,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE : l'échelle d'annotation active n'est pas disponible. .opening-ocs-discussions-for-help-and-questions = Ouverture OCS Discussions pour l'aide et les questions... .opening-ocs-web = Ouverture du site Web OCS... + .opening-the-command-reference = Ouverture de la référence des commandes... .opening-patreon-page = Ouverture de la page Patreon... .opening-feedback-page = Ouverture de la page de rétroaction... .opening-release-notes = Ouverture des notes de sortie... diff --git a/locales/hi-IN/opencadstudio.ftl b/locales/hi-IN/opencadstudio.ftl index c49ca0b0a..b92dc2277 100644 --- a/locales/hi-IN/opencadstudio.ftl +++ b/locales/hi-IN/opencadstudio.ftl @@ -3551,6 +3551,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: सक्रिय एनोटेशन स्केल अनुपलब्ध है। .opening-ocs-discussions-for-help-and-questions = OCS मदद और प्रश्नों के लिए चर्चा खोलना। .opening-ocs-web = OCS वेब खोलना ... + .opening-the-command-reference = कमांड संदर्भ खोला जा रहा है... .opening-patreon-page = Patreon पृष्ठ खोला जा रहा है… .opening-feedback-page = प्रतिक्रिया पृष्ठ खोलना .opening-release-notes = रिलीज नोट्स खोलना ... diff --git a/locales/hu-HU/opencadstudio.ftl b/locales/hu-HU/opencadstudio.ftl index 58bc9e4b3..b7038c5be 100644 --- a/locales/hu-HU/opencadstudio.ftl +++ b/locales/hu-HU/opencadstudio.ftl @@ -3562,6 +3562,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: az aktív annotációs skála nem érhető el. .opening-ocs-discussions-for-help-and-questions = A OCS beszélgetések megnyitása segítségért és kérdésekért... .opening-ocs-web = A OCS web megnyitása... + .opening-the-command-reference = A parancsreferencia megnyitása... .opening-patreon-page = Patreon oldal megnyitása... .opening-feedback-page = Visszajelzési oldal megnyitása... .opening-release-notes = Kiadási megjegyzések megnyitása... diff --git a/locales/it-IT/opencadstudio.ftl b/locales/it-IT/opencadstudio.ftl index 9ff22a07a..481b58fdc 100644 --- a/locales/it-IT/opencadstudio.ftl +++ b/locales/it-IT/opencadstudio.ftl @@ -3562,6 +3562,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: la scala di annotazione attiva non è disponibile. .opening-ocs-discussions-for-help-and-questions = Apertura delle discussioni OCS per assistenza e domande... .opening-ocs-web = Apertura del Web OCS... + .opening-the-command-reference = Apertura del riferimento dei comandi... .opening-patreon-page = Apertura della pagina Patreon... .opening-feedback-page = Apertura della pagina di feedback... .opening-release-notes = Note sulla versione di apertura... diff --git a/locales/ja-JP/opencadstudio.ftl b/locales/ja-JP/opencadstudio.ftl index e5ee4c8e5..a3ebf208f 100644 --- a/locales/ja-JP/opencadstudio.ftl +++ b/locales/ja-JP/opencadstudio.ftl @@ -3551,6 +3551,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: 現在の注釈尺度は利用できません。 .opening-ocs-discussions-for-help-and-questions = ヘルプと質問のため OCS ディスカッションを開いています... .opening-ocs-web = OCS Web を開いています... + .opening-the-command-reference = コマンドリファレンスを開いています... .opening-patreon-page = Patreon ページを開いています... .opening-feedback-page = フィードバックページを開いています... .opening-release-notes = リリースノートを開いています... diff --git a/locales/ko-KR/opencadstudio.ftl b/locales/ko-KR/opencadstudio.ftl index 901e39aa9..bac173a72 100644 --- a/locales/ko-KR/opencadstudio.ftl +++ b/locales/ko-KR/opencadstudio.ftl @@ -3562,6 +3562,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: 활성 주석 축척을 사용할 수 없습니다. .opening-ocs-discussions-for-help-and-questions = OCS 열기 도움말 및 질문에 대한 토론... .opening-ocs-web = OCS 웹을 여는 중... + .opening-the-command-reference = 명령 참조 열기... .opening-patreon-page = Patreon 페이지를 여는 중... .opening-feedback-page = 피드백 페이지를 여는 중... .opening-release-notes = 출시 노트를 여는 중... diff --git a/locales/nl-NL/opencadstudio.ftl b/locales/nl-NL/opencadstudio.ftl index 281ca4a0e..157d45e06 100644 --- a/locales/nl-NL/opencadstudio.ftl +++ b/locales/nl-NL/opencadstudio.ftl @@ -3561,6 +3561,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: de actieve annotatieschaal is niet beschikbaar. .opening-ocs-discussions-for-help-and-questions = Openen OCS Discussie voor hulp en vragen... .opening-ocs-web = Openen OCS Web... + .opening-the-command-reference = Commandoreferentie openen... .opening-patreon-page = Patreon pagina openen... .opening-feedback-page = Herinneringspagina openen... .opening-release-notes = Openen van de release notes... diff --git a/locales/pl-PL/opencadstudio.ftl b/locales/pl-PL/opencadstudio.ftl index e5161f29a..24df0ef21 100644 --- a/locales/pl-PL/opencadstudio.ftl +++ b/locales/pl-PL/opencadstudio.ftl @@ -3562,6 +3562,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: aktywna skala adnotacji jest niedostępna. .opening-ocs-discussions-for-help-and-questions = Otwieranie dyskusji OCS w celu uzyskania pomocy i pytań... .opening-ocs-web = Otwieranie OCS Web... + .opening-the-command-reference = Otwieranie dokumentacji poleceń... .opening-patreon-page = Otwieranie strony Patreon... .opening-feedback-page = Otwieram stronę z opiniami... .opening-release-notes = Otwieram informacje o wersji... diff --git a/locales/pt-BR/opencadstudio.ftl b/locales/pt-BR/opencadstudio.ftl index 2488e8d4b..05a2aedb6 100644 --- a/locales/pt-BR/opencadstudio.ftl +++ b/locales/pt-BR/opencadstudio.ftl @@ -3563,6 +3563,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: a escala de anotação ativa não está disponível. .opening-ocs-discussions-for-help-and-questions = Abrindo Discussões do OCS para ajuda e perguntas... .opening-ocs-web = Abrindo OCS Web... + .opening-the-command-reference = Abrindo a referência de comandos... .opening-patreon-page = Abrindo página do Patreon... .opening-feedback-page = Abrindo página de comentários... .opening-release-notes = Abrindo notas da versão... diff --git a/locales/ru-RU/opencadstudio.ftl b/locales/ru-RU/opencadstudio.ftl index 0742a0487..dd44e6ddf 100644 --- a/locales/ru-RU/opencadstudio.ftl +++ b/locales/ru-RU/opencadstudio.ftl @@ -3564,6 +3564,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: активный масштаб аннотаций недоступен. .opening-ocs-discussions-for-help-and-questions = Открытие OCS Дискуссии о помощи и вопросах .opening-ocs-web = Открытие OCS Веб-сайт + .opening-the-command-reference = Открытие справочника команд... .opening-patreon-page = Открытие страницы Patreon... .opening-feedback-page = Открываем страницу обратной связи... .opening-release-notes = Открытие выпускных заметок... diff --git a/locales/tr-TR/opencadstudio.ftl b/locales/tr-TR/opencadstudio.ftl index a85661a8e..e91e9d94d 100644 --- a/locales/tr-TR/opencadstudio.ftl +++ b/locales/tr-TR/opencadstudio.ftl @@ -3513,6 +3513,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: Etkin açıklama ölçeği kullanılamıyor. .opening-ocs-discussions-for-help-and-questions = Yardım ve sorular için OCS Tartışmaları açılıyor... .opening-ocs-web = OCS Web açılıyor... + .opening-the-command-reference = Komut başvurusu açılıyor... .opening-patreon-page = Patreon sayfası açılıyor... .opening-feedback-page = Geri bildirim sayfası açılıyor... .opening-release-notes = Sürüm notları açılıyor... diff --git a/locales/zh-CN/opencadstudio.ftl b/locales/zh-CN/opencadstudio.ftl index d5bf92dce..aecc593ad 100644 --- a/locales/zh-CN/opencadstudio.ftl +++ b/locales/zh-CN/opencadstudio.ftl @@ -3546,6 +3546,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: 活动注释表没有可用 。 .opening-ocs-discussions-for-help-and-questions = 开幕OCS 讨论帮助和问题... .opening-ocs-web = 打开OCS网络... + .opening-the-command-reference = 正在打开命令参考... .opening-patreon-page = 打开帕特伦的页面... .opening-feedback-page = 打开反馈页面... .opening-release-notes = 打开发行笔记... diff --git a/locales/zh-TW/opencadstudio.ftl b/locales/zh-TW/opencadstudio.ftl index ae4544304..aa93833cc 100644 --- a/locales/zh-TW/opencadstudio.ftl +++ b/locales/zh-TW/opencadstudio.ftl @@ -3558,6 +3558,7 @@ view = .objectscale-the-active-annotation-scale-is-una = OBJECTSCALE: 活動註解表沒有可用 。 .opening-ocs-discussions-for-help-and-questions = 開幕OCS 討論幫助和問題... .opening-ocs-web = 開啟OCS網路... + .opening-the-command-reference = 正在開啟命令參考... .opening-patreon-page = 開啟帕特倫的頁面... .opening-feedback-page = 開啟反饋頁面... .opening-release-notes = 開啟發行筆記... diff --git a/src/app/commands/view.rs b/src/app/commands/view.rs index bcc808668..2428a1e2c 100644 --- a/src/app/commands/view.rs +++ b/src/app/commands/view.rs @@ -78,9 +78,11 @@ impl OpenCADStudio { "HELP" => { self.command_line - .push_info(crate::t!("Opening OCS Discussions for help and questions...").as_ref()); + .push_info(crate::t!("Opening the command reference...").as_ref()); return Some(crate::sys::open_url( - "https://github.com/HakanSeven12/OpenCADStudio/discussions", + // Generated from the in-repo command registry; the + // staleness test in app::control keeps it current. + "https://github.com/HakanSeven12/OpenCADStudio/blob/main/docs/command-reference.md", self.main_window, )); } diff --git a/src/app/control/mod.rs b/src/app/control/mod.rs index 797f40365..c255d9faf 100644 --- a/src/app/control/mod.rs +++ b/src/app/control/mod.rs @@ -1086,6 +1086,80 @@ pub(super) fn action_names() -> &'static [&'static str] { #[cfg(test)] mod tests { use super::*; + + /// Renders `docs/command-reference.md` from the live command registry, + /// the category table, selection policies, and the default key bindings + /// (HELP opens this page). Regenerate with + /// `UPDATE_COMMAND_REFERENCE=1 cargo test command_reference`. + fn render_command_reference() -> String { + let mut names = crate::command::all_registered_command_names(); + names.sort_unstable(); + names.dedup(); + + // First sorted binding wins; Ctrl/Cmd is normalized so the + // generated file does not differ by generating platform. + let mut shortcut_for: std::collections::BTreeMap = Default::default(); + for (key, cmd) in crate::app::shortcuts::default_bindings() { + let key = key.replace("CMD+", "Ctrl+").replace("CTRL+", "Ctrl+"); + shortcut_for.entry(cmd).or_insert(key); + } + + let mut by_category: std::collections::BTreeMap<&str, Vec<&str>> = Default::default(); + for name in &names { + by_category + .entry(command_category(name)) + .or_default() + .push(name); + } + + let mut out = String::new(); + out.push_str("# Open CAD Studio \u{2014} Command Reference\n\n"); + out.push_str( + "Generated from the in-repo command registry; manual edits are overwritten. \ +Regenerate with `UPDATE_COMMAND_REFERENCE=1 cargo test command_reference`.\n\n", + ); + for (category, commands) in &by_category { + let title: String = category + .char_indices() + .map(|(i, c)| if i == 0 { c.to_ascii_uppercase() } else { c }) + .collect::(); + out.push_str(&format!("## {title} ({})\n\n", commands.len())); + out.push_str("| Command | Default shortcut | Selection |\n|---|---|---|\n"); + for cmd in commands { + let shortcut = shortcut_for.get(*cmd).map(String::as_str).unwrap_or(""); + let selection = match command_selection_policy(cmd) { + "current_selection_or_prompt" => "current selection or prompt", + "command_defined" => "command-driven", + other => other, + }; + out.push_str(&format!("| `{cmd}` | {shortcut} | {selection} |\n")); + } + out.push('\n'); + } + out.push_str(&format!( + "_{} commands across {} categories._\n", + names.len(), + by_category.len() + )); + out + } + + #[test] + fn command_reference_is_up_to_date() { + let generated = render_command_reference(); + let path = concat!(env!("CARGO_MANIFEST_DIR"), "/docs/command-reference.md"); + if std::env::var("UPDATE_COMMAND_REFERENCE").is_ok() { + std::fs::write(path, generated).expect("write command reference"); + return; + } + let committed = std::fs::read_to_string(path).unwrap_or_default(); + assert_eq!( + committed, generated, + "docs/command-reference.md is stale: run UPDATE_COMMAND_REFERENCE=1 cargo test \ + command_reference_is_up_to_date and commit the result" + ); + } + fn request(app: &mut OpenCADStudio, mut req: Value) -> Value { let state = app.control_state(); req["protocol"] = json!(1); diff --git a/src/locale_catalog.rs b/src/locale_catalog.rs index fbade38ad..29f60d08a 100644 --- a/src/locale_catalog.rs +++ b/src/locale_catalog.rs @@ -1884,6 +1884,7 @@ pub(super) fn message_attribute(source: &str) -> Option<(&'static str, &'static "Opening \"{name}\" ({size_label})…" => Some(("common", "opening-name-size-label")), "Opening OCS Discussions for help and questions..." => Some(("view", "opening-ocs-discussions-for-help-and-questions")), "Opening OCS Web..." => Some(("view", "opening-ocs-web")), + "Opening the command reference..." => Some(("view", "opening-the-command-reference")), "Opening Patreon page..." => Some(("view", "opening-patreon-page")), "Opening feedback page..." => Some(("view", "opening-feedback-page")), "Opening file" => Some(("ui", "opening-file")),