feat(help): open a generated command reference instead of Discussions (#1049)

HELP now opens docs/command-reference.md on GitHub — a 600-command
reference grouped by category with default shortcuts and selection
behavior, generated from the in-repo command registry. A staleness
test fails when the registry and the page drift apart; regenerate
with UPDATE_COMMAND_REFERENCE=1 cargo test command_reference. The
command-line notice is localized in all 21 languages.
This commit is contained in:
Afonsop committed 2026-09-17 13:14:06 +01:00
1 parent 334960fcf3
commit ebee7e5489
25 files changed
+742 -2

No files matched your search

+642
View File
@@ -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._
+1
View File
@@ -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 = يجري فتح ملاحظات الإصدار...
+1
View File
@@ -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 = Отваряне на бележките по версията...
+1
View File
@@ -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í...
+1
View File
@@ -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...
+1
View File
@@ -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 = Άνοιγμα των σημειώσεων έκδοσης...
+1
View File
@@ -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...
+1
View File
@@ -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...
+1
View File
@@ -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...
+1
View File
@@ -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...
+1
View File
@@ -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 = रिलीज नोट्स खोलना ...
+1
View File
@@ -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...
+1
View File
@@ -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...
+1
View File
@@ -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 = リリースノートを開いています...
+1
View File
@@ -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 = 출시 노트를 여는 중...
+1
View File
@@ -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...
+1
View File
@@ -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...
+1
View File
@@ -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...
+1
View File
@@ -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 = Открытие выпускных заметок...
+1
View File
@@ -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...
+1
View File
@@ -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 = 打开发行笔记...
+1
View File
@@ -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 = 開啟發行筆記...
+4 -2
View File
@@ -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,
));
}
+74
View File
@@ -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<String, String> = 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::<String>();
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);
+1
View File
@@ -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")),