Skip to content

ConstructCAD v0.9.0

Choose a tag to compare

@github-actions github-actions released this 02 Nov 14:31
· 339 commits to main since this release

Added

  • Structural landings for assembled stairs (#143). The landings of a steel, timber or precast stair are no longer a solid block: they are a deck as thick as the treads on beams as wide and deep as the stringers, in line with them. With a central stringer the beams carry the flights' stringer lines across the landing, crossing (Cross) or one springing from the other (T), a new type property (landing_beams); with side stringers they frame the landing's edge. Posts down to the stair's base are placed per stair and per landing, only where wanted: at the corners of a frame or the ends of a central stringer's beams (front, back, inner side, outer side...), in the properties palette's Landing posts, in stair_create (posts) and in element_set (layout.posts); stair_check lists where each landing can take one. Their size is the type's post_width.
  • Wall tops attached to roofs, ceilings and floors (#140). Modify → Geometry → Attach Top attaches the selected walls' tops to the roof, ceiling or floor clicked: under it a wall rises or drops to its underside, following its slope (gable walls end in a triangle), and elsewhere keeps its own top. The walls follow the element when it changes; Detach Top (also in a wall's properties) and deleting the element give them back their own tops. Walls keep the reference (attach_top); the new command wall_attach sets it. Straight walls only for now.
  • Shafts (#30, first part). Architecture → Floors & Roofs → Shaft (SF) sketches a vertical opening that rises from its level to a level or height and cuts every floor, ceiling and roof it passes through, where its outline lies inside theirs and clear of their own openings. The cuts are kept in the slabs (cuts), in step with the shaft in the same undo step, so plans, schedule areas, 3D views and IFC export show them; ceilings can now have openings. Plans draw the shaft as its outline with two diagonals. New commands shaft_create and shaft_type_create; sketch_set redraws a shaft's outline. Project files move to format version 17.
  • Visual styles (#25). Every plan, elevation, section and 3D view has a visual style, also a view template property: Wireframe (every edge, no faces), Hidden line (white faces hide what is behind), Shaded, Consistent colors (material colors, unlit) and Textures (the material's appearance color with its surface pattern, drawn procedurally at real size in 3D and as hatches in 2D views). Plans in the colored styles fill the faces below the cut plane under their linework; the wireframe drops fills. Plans stay in hidden line and other views shaded unless set. view_set/template_set take visual_style, view_get shows it.
  • Railings choose their host (#97). The railing tool's On a stair or ramp option puts a railing on the stair or ramp clicked in a plan, on the side nearest the click or on both sides. A hosted railing's properties switch its side or detach it, keeping its plan path. New command railing_host_set puts an existing railing on a stair or ramp (on the side its path runs along), changes its side or inset, or detaches it; stair_railings_add takes near to pick the side nearest a point.
  • Swept profiles (#73). Architecture → Model → Sweep (SW) carries a profile along a path drawn in a plan, open or closed (around a room), at a height above the level and on either side of the path: baseboards, crown moldings, fascia boards, gutters, copings. The type holds the profile and its material; sweep_type_create makes one from points or from sketch curves (arcs included) and sweep_profile_set redraws it, refusing outlines that are open or cross themselves. Plans and ceiling plans cut and show them, legends draw the profile's section, schedules list length and volume, and IFC export writes coverings of type MOLDING. New commands sweep_create, sweep_type_create, sweep_profile_set. Project files move to format version 16.
  • Connectors in the component modeling environment (#101). A Connector tool in the Create tab places one with a click in the plan, front or side view, locked to the reference planes it lands on so it follows them; every view, 3D too, shows connectors in their system's color with the direction runs leave, and the left panel edits the name, system, position (expressions locked to planes with ⌖), direction and diameter. New commands component_connector_add, component_connector_set and component_connector_delete; component_get lists where each connector is.
  • Three-flight stairs and stairs sized by their risers (#75). A new U-shaped, three flights stair shape goes up, across and back beside its first flight, with a square landing at each corner; Risers in 1st flight and Risers in 2nd flight split the steps between the flights, and its railings run round both landings. Any stair can set its riser count (the riser height is then its height over them) and its tread depth, in the properties palette, the stair tool's options bar and stair_create (risers, tread, split2, shape three_flight); left automatic, they follow the type as before. A stair still ends with a riser: the floor above is its last step. Exported to IFC as TWO_QUARTER_TURN_STAIR.
  • Several elements edited together (#47, #69). With several elements of one category selected, the properties palette shows their type, level and shared parameters (offsets, height, sill, overhang, rotation, structural, room bounding, flips), a differing value marked ‹varies›; a change goes to all of them in one undo step. The new command elements_set merges the same params (and level) into many elements.
  • An Insert ribbon tab, between MEP and Modify, gathers what brings files in or writes them out: Import IFC, Import CAD, Import SketchUp, Import Image, Export IFC, Load Component and the Component Library. The File tab keeps the project, export, settings and help groups.
  • Views go onto sheets by dragging them from the project browser: a plan, elevation, section, 3D view, legend or schedule dropped on an open sheet is placed where it was dropped and picked there (as Place on active sheet does, centered). The paper is outlined while a view is over it; a view already on a sheet stays where it is and the status bar says why.
  • Import pictures and SVG drawings (Insert → Import Image…, or drop the file on the window; image_import). A PNG, JPEG, GIF, BMP or WebP picture or an SVG drawing goes into the active plan, ceiling plan, elevation, section or legend, under the model, as an imported drawing: pinned, moved, turned, scaled, hidden and overridden like a DWG or DXF underlay. A picture is sized by the resolution its file declares (96 dpi otherwise), or by width; the project keeps the file's bytes (as base64), and views, sheets, the PDF (as an image object), SVG and PNG exports draw it, faded when the drawing is. SVG paths become polylines (curves flattened) in their own colors, single-outline filled shapes fills, embedded pictures images; texts are not read. Project files move to format version 15.
  • SketchUp import (Insert → Import SketchUp…, skp_import): a .skp model (SketchUp 3 to the current format) is inserted into the project on the active view's level; each placed component or group becomes a component element whose type holds its faces as fixed mesh pieces, one per material. Copies that differ only by a move or a plan rotation share a type; tilted, scaled or mirrored copies get their own. Faces outside any component make one more element at the file's origin, missing materials are added with their colors, and hidden objects and layers are left out. skp_import also takes a position and rotation for the whole model.
  • Load component also opens .skp files (skp_component_load): the whole model becomes one component type, inserted at the file's origin, ready to place with the Component tool.
  • cc_skp crate: SketchUp (.skp) reader and writer without external dependencies, derived from the MIT-licensed OpenSKP toolkit (current and legacy file formats, flattened and per-definition instanced scenes, a builder that writes .skp files and reopens existing ones for editing).
  • Detail levels (#24). Plans, elevations, sections and 3D views have a detail level (coarse, medium, fine), also a view template property: coarse views cut layered walls, floors and roofs as one plain region, without layers or material patterns, and each component piece (doors and windows too) can be shown only at some levels. view_set, template_set and component_piece_set take detail.
  • DXF export (#27). File → Export DXF…, and view_export/sheet_export with dxf, write any view as DXF R12 for other CAD programs: plans, elevations and sections at full size in millimeters, sheets in paper millimeters, each element on the layer of its category, dashed lines as line types, opaque fills as solids, colors as the nearest color index. Exported files read back with Import CAD.
  • Chains step back one segment (#125). While drawing walls, beams, pipes or conduits, Backspace or Ctrl+Z takes back the last segment and the tool goes on from where it started (again and again, then the start point); Ctrl+Y puts it back. Backspace also removes a railing's last point and an arc wall's picked end.
  • Roof framing in IFC. Each purlin, rafter, batten and truss member (top chord, tie, king post, strut) is exported as an IfcMember (PURLIN, RAFTER, CHORD, POST, STRUT, battens USERDEFINED) aggregated in its IfcRoof, with an IfcMemberType per roof type and member and the framing's material. The covering and framing settings go in a ConstructCAD_Roofing property set, so importing the file restores them on the roof's type and draws the framing again instead of adding the members as objects.
  • Outlines drawn with curves. Floors, ceilings, roofs, foundation slabs and masses take curves instead of points: lines, arcs, circles, ellipses (whole or partial), rectangles and regular polygons; loops inside the outline become openings of floors and roofs, and errors say where the sketch is open, branches or crosses. The element keeps its curves, which follow moves, rotations and mirrors; the new commands sketch_get and sketch_set read them and draw the outline again.
  • Sketch mode. The floor, ceiling, roof, foundation slab and mass tools open a sketch with its own ribbon: lines, rectangles, inscribed and circumscribed polygons, circles, ellipses and arcs (by three points, by center, tangent), snapping to the sketch's ends, middles and centers, and Pick walls. Curves are picked to change them: grips stretch them (joined ends move together) and the properties palette edits their points, radii, axes and rotation; Delete, undo and redo work inside the sketch. Finish makes the element, with loops inside as openings of floors and roofs, or marks where the sketch is open or crosses itself. Modify → Edit Boundary opens the sketch of a floor, ceiling, roof or mass again.
  • Modify tools in sketches. A sketch's curves are picked with windows and double clicks (the chain of joined curves), moved, copied, rotated and mirrored; Offset copies a curve or its whole chain at a distance, corners rejoined; Trim/Extend to corner, Trim/Extend to a reference and Split work on lines, arcs and partial ellipses (arcs extend round their circle; circles and ellipses split into halves).
  • Component pieces with parts of ellipses. A point of an extrusion, revolution, sweep or blend profile can run to the next one along an ellipse (ellipse in component_piece_add's points: center, semi-axes, rotation and direction, all expressions).
  • Component pieces are sketched with the sketch tools. Extrusion, Revolution, Sweep and Blend open the same sketch as floor and roof outlines, with its drawing tools (now also polygons, ellipses and the three kinds of arcs), picked curves with grips and values, the Modify tools and undo; points still lock to reference planes. Edit Sketch opens a piece's outline, path or blend outlines again, keeping the expressions of the points that stay.

Fixed

  • Assembled stairs' stringers (#142). A central stringer was a wedge growing from nothing at the foot of a flight that starts on the floor, and the stringers of flights between landings only touched the landings' edges. Stringers are now built from their side profile: a band parallel to the pitch, as deep as the type says, cut level on the floor or at the underside of the landing a flight leaves (bearing on its face), and carried on under the landing a flight rises to, up to its underside.
  • The app redrew itself without pause while idle, keeping a CPU core and the GPU busy (noticed on older computers): it set the window title every frame, and egui answers every window command with another frame. The title is now set only when it changes.
  • The component modeling environment's side panel drew its fields and buttons against the panel's border, cut.