Arrange
Groups
- Edit › Group (or right-click) puts the selection into a group: it no longer sticks to anything.
- One click selects the whole group; Move and Rotate move it without distorting it.
- Double-click to edit it; everything outside fades (how much is set in Model Info › Components).
- Esc, a click in empty space, Edit › Close Group or the path in the bar exit the group.
- Right-click the selection: Group, Explode (leaves its pieces loose), Edit, Make Component or Make Unique, Reset Scale, Flip Along (red, green or blue), Erase.
Edit opens the selected group, like double-clicking it.
Doors and Windows in a Wall
- In the Make Component dialog (or on the card in the Components panel): Glue To (Any, Horizontal, Vertical or Sloped), Cut Opening, Always Face Camera and Shadows Face Sun.
- A gluing component, when you insert or paste it onto a face it accepts, rests on that face: its blue along the face normal and its red as horizontal as possible. It stays glued: Move slides it only across the face’s plane; rotating it unglues it, and right-click › Unglue releases it.
- If it also cuts an opening, it cuts one in the face it is glued to, and only in that one (the other side of a wall is not cut), along the outer boundary of its faces on its red-green plane: a window’s frame and glass, together. When you move it across the face, the opening is remade in the new spot; when you erase it, the opening closes. If it does not fit inside the face without touching its edge (a door that reaches the floor, for example), it is placed glued without cutting, and you are told.
- Always Face Camera: it turns about its blue axis so its −green side faces the viewer, like a flat tree. Shadows Face Sun: with View › Shadows, its shadow is that of the instance turned about its blue axis with its −green side toward the sun, like a flat tree; what you see is not turned, and it receives no shadows.
Components
- G (or Edit › Make Component…) opens a dialog: name, description, price, size, URL and “Replace Selection”. Create turns the selection into the first instance (without the checkbox, it only adds it to “In Model”).
- Its origin goes at the bottom corner of the selection, with the drawing axes; right-click › Change Axes changes them with three clicks, without moving anything.
- Each instance can have its own name, owner and status (Entity Info). Edit › Group with nothing selected creates an empty group to draw inside.
- Its instances (⌥ + Move) are linked: change one and they all change.
- “Make Unique” separates an instance. “Scale Definition” passes an instance's scale on to all of them.
- Window › Components: the components “In Model”, including those that no longer have instances (they stay until Purge Unused).
- “Save to My Components” (or to the custom collection you chose) saves them in this browser for any project; in its collection, clicking one inserts it, attached to the cursor (if it was already brought into the model, that one is used). Create Collection…, Favorite, Move To and Delete Collection…, as in Materials.
- Choose one to see its card (name, description, price, size, URL) and: Insert (it follows the cursor, held by its origin; a click places it), Select Instances, Replace Selected (the selected instances become instances of this one), Save… (a project with the component), Reload… (replaces it with one from a project, in all its instances) and Delete.
- Select a component instance and choose Window › Component Attributes. Add attributes: the predefined ones (size LenX, LenY, LenZ; position X, Y, Z; rotation RotX, RotY, RotZ; Hidden; Material…) or one of your own.
- A value that starts with = is a formula: =width*2, =Parent!LenX-10, =IF(height>200,2,1). Numbers use a decimal point. Lengths are in the component’s units (centimeters or inches).
- When you change an attribute, or move, rotate or scale the instance, it is redrawn: a size with a formula goes back to its value, and =NEAREST(CURRENT("LenX"),60,90,120) snaps to the nearest size.
- Dynamic parts inside read the component’s size with Parent! (=Parent!LenX-10) in true measurements, even when the component is stretched. Show Formulas shows what is written; a red # is an error (hover over it to see why).
- Copies = 3 makes three more instances in the same place; Copy is each one’s number (0 for the original), and =Copy*60 in X spreads them out. They are remade when the original is redrawn; erasing the original leaves them where they are.
- ScaleTool says which handles Scale offers: in its details (▸), one checkbox per handle (along red, along green, along blue, on two axes and uniform).
- Right-click › Swap Component…: choose a project or a .skp and its model becomes a new component, named after the file; the instance becomes an instance of it, in the same place and with the choices made in Component Options. A component saved with Save… (Components panel) takes its attributes with it.
- Right-click an instance › Save As… and Reload…: the same as Save… and Reload… in the Components panel. On a placed image › Export the Image (downloads it as it is) and Use as Material (its material, for the Paint Bucket).
- In Component Attributes, ▸ next to an attribute opens its details: who sees it in Options (Nobody, Can See, Can Edit in a Text Box or Can Choose From a List), its label, how it is displayed (millimeters, percentage, yes or no, euros…) and, for a list, its options with what is shown and their value.
- Window › Component Options shows, for the selected instance, its name (Name), its summary (Summary), its description (Description) and whatever the author made visible or editable, in alphabetical order.
- What you change here applies only to that instance and redraws it: a text box is confirmed with Enter or when you leave it (Esc cancels), and a list when you choose. In an instance made by Copies, it changes its original, and the others follow.
- In a formula, OPTIONINDEX("width") gives the position of the chosen option in its list (from 1; 0 if it is not in it) and OPTIONLABEL("width"), what is shown.
- Tools › Interact: with the hand, clicking a dynamic component runs the actions in its onClick attribute. If the outer one has none, the inner part that has one runs them.
- SET("RotZ",0,-90) moves to the next value in the list on each click (after the last, back to the first); ANIMATE does the same gradually over half a second (ANIMATESLOW, 1 s; ANIMATEFAST, 0.25 s; ANIMATECUSTOM, with its own duration and easing). The attribute can belong to another part: "Door!RotZ".
- ALERT("text") opens a message, GOTOSCENE("Floor Plan") goes to a scene (by name or number) and REDRAW() redraws. Several, separated by “;”, run together.
- What a click changes applies only to that instance (the component is made unique if there are others) and undoes in one step.
- A snap is a disc inside a group or component that joins it to others: its white side is the front, the side that joins; the dot in the center, its position; and the line to the handle, its alignment. All instances of a component share its snaps.
- Tools › Snaps (or right-click a group or component › “Make or Edit Snaps”, which opens it): click where it goes, on a face or a point (→ ← ↑ put its front side along an axis), and click again to turn its alignment with the cursor (→ ← ↑, along an axis).
- ⌥ switches to Modify (clicking the disc moves it, clicking its handle turns its alignment, and ⌘-click flips it over) and then to Erase (a click erases it).
- They show with Select, Lasso and Snaps inside the open group or component. Once selected, they can be erased, moved, rotated, scaled, flipped and hidden like guides.
- With Move, clicking a disc of a group or component picks it up by that snap. Brought within 14 px of another object's snap, it jumps and joins it face to face, with its alignment; with ⌘, it goes to the nearest snap, wherever it is (the tractor beam). Over a face, it sticks to it by its front side; elsewhere, it moves without rotating. ⌥ leaves a copy.
- Two objects are joined when one snap of each is at the same point, face to face and with the same alignment: Select › Connected by Snaps selects everything joined to the selection.
A component stays in the model even when all its instances are erased, until Purge Unused removes it. Make Unique gives the instance a new component (“Table 2”) and keeps the old one.
Extensions
- An extension adds commands to Smustard: it is a .smx file with its name, its author and its code. Extensions › Extension Manager… › Install Extension… installs it; install only extensions from people you trust, because they can change your model.
- Its commands appear in the Extensions menu and in Search for an Action, such as “Counter › Count Faces”. Whatever a command does is undone in one step.
- In the manager, “Active” turns it off or on, and Uninstall removes it. Installing a newer version of the same extension updates it.
- Each extension runs on its own, in an isolated frame: it cannot see the page or your session, or connect to anything. If it fails, you are told and Smustard carries on; if it makes too many calls or asks too much, it is stopped and disabled. Even so, it can use up time and memory: that is why trust is needed.
- For extension authors: the code has no eval or new Function, and the interface is smustard (menu, herramienta, importador, panel, vista.previa, vista.estado, vista.superponer, modelo.proyecto, modelo.seleccion, modelo.operacion with its steps, avisar, preguntar, alerta, alCambiar, alElegir and alAbrir). There are examples in docs/ejemplos: contador.smx, regla.smx, nubes.smx and escalera.smx.
- An extension can store its data in a group, an instance, a component or the model (it is saved with the project and travels with copy and paste), and read new formats: File › Import… accepts its file extensions, and what it reads is drawn in one operation, “Import nube.xyz”. An operation has at most 5000 steps, and the data of one item, 1 MB.
- An extension can open its own panel in the tray, with checkboxes, lists and buttons. Extensions › Console runs code as a test extension and shows what it writes with console.log. “Test” also runs its tests (prueba, afirmar and afirmarIgual): one line per test and a summary; each one works on a copy of the model that is thrown away when it ends, so your model and your undo history do not change. “Download Types” downloads smustard.d.ts, so a code editor can complete and check the interface. To debug, in the browser’s developer tools the code shows up as “smustard-consola.js” (or “extension-<id>.js”) and stops at debugger;. Export Extensions… and Import Extensions… move them to another computer. In the manager, “When Smustard Opens” chooses whether to load the active ones, ask first or load none (to get out of one that gets in the way).
- An extension can bring its own tools: they appear in the Extensions menu and, when chosen, the mouse (with its snaps) and the Measurements box talk to the extension, which draws the preview and writes in the status bar. It can also draw lines over the view that stay until it removes them.
Outliner
- Window › Outliner: the tree of groups and components, with what they contain (a component's contents appear under each instance).
- Clicking a row selects that object: if it is inside another, the outer one opens for editing to select it. ⌘ or ⇧ add or remove within the same context; the “Model” row exits everything. Hidden objects can be selected from here too; objects inside something locked cannot.
- Each row's eye hides or shows it; double-click the name to rename it; the padlock means it is locked.
- Drag a row onto another to put it inside (without moving it in space); onto “Model”, to take it out. If the row is selected, all selected rows go. Inside a component, it appears in all its instances.
- At the top, the name filter and “Sort by Name”.
In gray, what isn't visible (hidden, with its tag hidden, or inside something hidden); in bold, what you're editing. You can't put an object inside itself, nor anything locked or inside something locked. Section planes are listed too, inside whatever holds them and after the objects: a click selects them, their eye hides them and double-clicking the name renames them; they can't be dragged.
Tags
- Tags name groups and components so you can show or hide them together. Loose items (edges, faces, guides, dimensions and text) are always “Untagged”.
- Window › Tags opens the panel: + Tag, + Folder (with tags selected, puts them inside), Delete, Purge and the filter. Double-click a name to rename it; drag a row onto a folder to put it inside.
- The eye hides everything on that tag or folder (with several rows selected, all of them). The round button marks the active tag: the one new groups and components get.
- Each tag has its own color and line type. View › Color by Tag (or the panel's checkbox) paints each object in its tag's color.
- Window › Styles › Edges › Dashes: unchecked, all edges are drawn solid. Line types also appear in Export 2D Drawing (PDF, EPS and DXF), and when you import a DXF each layer gets the line type closest to its linetype.
- Deleting a tag in use asks whether to move its objects to another tag or delete them. Purge Tags (Edit or the panel) removes the tags nothing uses.
- In Entity Info, the Tag drop-down; right-click › Select All With the Tag.
- Choose a tag in the panel and click a group or component to give it that tag. With objects already selected, picking the tool tags them all.
- ⌘: the object's tag becomes the selected one. ⇧: changes all objects that had its tag. ⌥: all instances of that component.
A hidden tag hides its objects completely: they aren't drawn, selected or exported, and View › Hidden Objects doesn't show them. Tags travel with what you copy: pasted into another project, the tag with that name is used, or created.
Paint Bucket (B)
- B, or click a material in the Materials panel. Paints the side of a face you see (front or back) with the active material, its whole surface if it has soft edges, an edge, or a closed group or component instance.
- Clicking something selected paints the whole selection: the front of the faces, the edges and the objects.
- ⌥: fills the face and the faces connected to it that have the same material. ⇧: replaces that material across the whole model, also inside groups and components. ⌥⇧: only in what you are editing.
- Holding ⌘: clicking samples the material of what is underneath, including one inherited from its group.
- A painted group or instance gives its material to its faces set to Default, and to those inside. Painting with “Default” removes the material. Locked objects are not painted.
Materials
- Window › Materials: at the top, the active material; Create Material…, Duplicate and Purge Unused.
- The “In Model” collection (the project's materials, with Default first) or “Colors” (24 Smustard colors, added to the model when you paint with them). Clicking a swatch makes it active and picks the Paint Bucket.
- For a material in the model: its name, its color (with the picker or in HEX), its opacity (from 0, transparent, to 100), and its Metal and Roughness (from 0 to 100; they show with View › Realistic and are exported to glTF and USDZ). Select selects whatever uses it; Delete asks if it is in use and leaves those on Default.
- With an image, the material can have a Relief map (a normal map, OpenGL or DirectX, with its scale) and an Occlusion map (with its intensity), with the same tile: they show with View › Realistic and are exported to glTF and USDZ.
- Image… gives it an image (PNG or JPEG) that tiles across the faces it paints; Remove Image removes it. Width and Height are the size of each tile, in model units; with the padlock closed they keep the image's proportions.
- In the desktop app, “Edit in Another Program” opens the image in the program your system uses for PNG and JPEG files (Preferences › Applications explains how to change it); each time you save it there with the same name and format (PNG or JPEG), the material picks it up, in one undoable step. “Remove Image” or “Change Image…” stop picking it up.
- The image lays itself out on each face, from the origin: on the ground, along red and green; on a wall, upright, as seen facing it. Inside a group, it goes with the group when you move or rotate it.
- With an image, changing the material's color tints it, always starting from the original: it shifts the hue of each pixel; with “Colorize”, they all take the color's hue. “Reset Color” restores the original image.
- File › Import… with a PNG or JPEG asks how to use it: as a material, it creates one with that image (1 m wide) and leaves it ready in the Paint Bucket; as an image, you place it with two clicks (see Place Image); as a photo to match, it starts Match Photo with it, like Camera › Match New Photo….
- Entity Info shows a face's front and back material, and that of an edge or object; clicking its swatch makes it active. Edit › Select All With the Same Material selects whatever has the selection's material.
- Color by Tag overrides materials while it is on. Anything copied to another project brings its materials by name.
In Window › Materials, the “My Materials” collection keeps materials in this browser so you can use them in any project: on the card of a model material, “Save to My Materials”; afterwards, a click on it brings it into the open project and selects the Paint Bucket. “Create Collection…” makes more collections of your own: “Save to …” saves to the selected one, “Move To” moves a material to another, “Favorite” puts it first in the drop-down (with ★) and “Delete Collection…” deletes it along with its materials. “Save as File…” downloads the material (with its image) as a .material.json file to pass on to someone else, and “Import…” brings it into the model. If an identical one is already in the model, that one is used.
Hide and Show
- Edit › Hide (or right-click) hides the selection without erasing it: edges, faces, guides, dimensions, text, groups and components. Hidden items are not shown or selected, and the cursor does not snap to them.
- Edit › Show Selected, Show Last (what was hidden last) and Show All (everything in what you are editing; it does not go into closed groups).
- View › Hidden Geometry shows hidden faces faded (and hidden edges dashed) and lets you select them; View › Hidden Objects does the same for groups and components. That way you can select them for Show Selected.
- In Entity Info, the Hidden checkbox (for a group, a component or faces).
Lock
- Right-click a group or component › Lock: it can still be selected (with the red box), copied and hidden, but not moved, erased, exploded or opened for editing.
- Unlock, on the right-click menu or in Edit; Edit › Unlock All unlocks the whole model, including what is inside groups. In Entity Info, the Locked checkbox.
Edit Groups and Components
- While you edit a group or component, the rest of the model looks faded; while you edit a component, its other instances (similar components) do too, and they change together.
- Window › Model Info › Components: how much the rest of the model and similar components fade (from 0 to 1), or whether they are hidden. It is saved with the model.
- View › Hide Rest of Model and View › Hide Similar Components turn the same thing on and off. What is hidden this way is neither drawn nor snapped to, and it shows again when you leave.
Entity Info
- Window › Entity Info shows what is selected and its measurements.
- An edge: you can type its length; its end point moves along it, with whatever is attached, as with Move.
- An arc or a circle: you can type its radius and its segments (from 3 to 999); with a different number of segments it is redrawn, as with Divide.
- A face, a surface or several faces: the area (in total).
- A group or a component instance: its name, its tag, and whether it is hidden or locked; an instance also shows its instance name, owner, status and its component's type.
The right-click menu always opens it (“Entity Info”, at the top). On a face, “Area ›” shows in the status bar the area of the selected faces (as here, in the measurements of what you're editing), or that of all the faces with the tag of what you're editing (faces carry the tag of their group or component) or with that face's material, across the whole model, with each instance's scale.
Purge and Report
- Edit › Purge Unused (or the button in Model Info › Statistics) removes in one go the components with no instances in the model, the tags nothing uses, unused materials and the styles that are neither the active one nor used by any scene, and says how many.
- Model Info › Statistics counts what is in the model: faces, edges, groups, components, instances, guides, dimensions, texts and tags.
- Each component can have a type (Wall, Door, Window, Slab, Column, Beam, Stair, Roof, Furniture or Other Element): these are the most used IFC types. You choose it in the Make Component dialog, in the Components panel or in Entity Info.
- With a type, Entity Info shows its IFC attributes: Description, ObjectType, Tag and those of its class (for a door, its height, width, type and operation). All its instances share them; they go out when you export to IFC and come in when you import one.
- File › Generate Report… downloads informe.csv, which opens in a spreadsheet: one row per component instance in the model (component, instance name, type, tag, owner, status, price, size and URL) and the total instances and price of each component.
Select
- Space activates Select. One click selects one thing: a face (or its surface), an edge (or its whole curve) or an object.
- Double-click: the face with its edges, or the edge with its faces; on a group, opens it for editing. Triple-click: everything connected.
- Drag from left to right to select what is fully inside; from right to left, what it touches.
- ⌥ adds, ⇧ toggles, ⇧⌥ removes. Esc clears the selection. Delete erases the selection. Right-click › Select: bounding edges, connected faces, all connected, all instances, connected by snaps, deselect edges or faces.
| 1 clic | A face (or its surface), an edge (or its curve) or an object |
| 2 clics | The face with its edges, or the edge with its faces; on an object, enters it |
| 3 clics | All connected |
| ⌥ · ⇧ · ⇧⌥ | Add · toggle · remove |
In Edit and in the right-click menu: Select Bounding Edges, Select Connected Faces, Select All Connected, Select All Instances, Deselect Edges and Deselect Faces.
Lasso (⇧Space)
- ⇧Space. Drag around what you want to select: clockwise picks what it touches; counterclockwise, only what is fully inside.
- Or click point by point and double-click to close. ⌥ adds, ⇧ toggles, ⇧⌥ removes.
Select, Copy and Paste
- ⌘C copies the selection and ⌘X cuts it; ⌘V pastes it attached to the cursor: a click places it, Esc discards it.
- Edit › Paste in Place puts it exactly where it was. What you copy also works in another Smustard tab.
- ⌘A selects everything, ⇧⌘A selects nothing and ⇧⌘I inverts the selection.
In the Edit menu: Cut, Copy, Paste, Paste in Place, Erase, Select All, Select None, Invert Selection, Group, Make Component, Edit Group, Close Group, Explode and Make Unique. Undo says what it will undo.
Right-Click
On the selection, it opens a menu with Group, Explode, Edit, Make Component or Make Unique, and Erase. Explode leaves the parts loose in place; on a component instance, it explodes only that instance. Dragging with the right button pans the view.
Search for Any Action
⌘K opens the search: type part of an action's name (no need to worry about accents) and press Enter. “Shortcut…”, on the chosen action, gives it a shortcut.
Keyboard Shortcuts
Window › Keyboard Shortcuts… gives any command the shortcut you want: select it, click Assign and press the key combination (Esc cancels). Your own shortcut overrides the default one; if it already belonged to another command, it's taken from that command and you're told. Remove and Reset All go back to the defaults; Export… and Import… take them to another computer. They're saved in this browser. ⌥Z zooms to the selection.
Preferences
Window › Preferences… saves in this browser what belongs to you, not to the model: the color of each axis and of the inference mark, outside and inside groups and components (Accessibility), inverting the mouse wheel (Compatibility), the click style (auto-detect; click, move, click, where releasing after a drag doesn't count; or click, drag, release, where each line is one drag), continuing the line, rotate handles in Move, the lasso direction and an axes crosshair at the cursor (Draw), anti-aliasing and the maximum texture size (Graphics), large toolbar buttons and resetting the tray and panels, including their order (Workspace), and the template File › New starts with (Template). Tray panels are reordered by dragging their title onto another's (or with ⌥↑ and ⌥↓); the order is saved too. Export… and Import… take them to another computer.
Templates
File › Save as Template… saves the current model (Model Info, style, shadows, scenes and what's drawn) with a name and a description, in this browser. File › New starts with the default template, which you choose when saving it or in Preferences › Template; that's also where you delete yours. The built-in ones (Meters, Centimeters, Millimeters, Feet and Inches) only change the units. Download Project also saves a thumbnail of the view.
Welcome and Recent Files
When the page opens, the welcome screen appears (Help › Welcome to Smustard opens it again; “Show on Startup” or Preferences › General turn it off). A template starts a new model; a recent project opens it again. Recent lists the last 10 projects you left in this browser: when you start another, the previous one stays there, with its thumbnail. Recovered lists the ones that couldn't be opened on reload: you can download them to check them, or delete them. Open… opens a file, and “Continue With the Current Model” closes the welcome screen.
Problems and Purge
When you open a project, whatever can be fixed is fixed automatically: edges, faces, curves, guides, groups, components and instances that point to something that doesn't exist, and duplicate ID numbers. With Preferences › General › “Warn When Fixing Problems”, it tells you. Model Info › Statistics › Fix Problems checks the current model. Before Download Project or Save As .skp…, if there are unused components, materials or tags, it asks whether to purge them (“Ask to Purge on Download”).