Hatch

The hatch command fills the region enclosing a picked point with a pattern. The boundary isn’t drawn first — it comes from whatever is already on the canvas, so four separate Lines meeting end to end enclose a region exactly as a closed Polyline does, and any closed shape sitting inside becomes an island the fill leaves alone.

Filling an area

  1. Type hatch in the terminal or click the Hatch toolbar button (the swatch icon).
  2. Click a point inside the region you want filled.
  3. The command stays active, so keep clicking to fill more areas — each pick creates its own Hatch entity.
  4. Press Enter, Space, or Escape when you’re done.
  ┌─────────────┐        ┌─────────────┐
  │             │        │▓▓▓▓▓▓▓▓▓▓▓▓▓│
  │   ○         │  --->  │▓▓▓( )▓▓▓▓▓▓▓│   click inside the outer
  │             │        │▓▓▓▓▓▓▓▓▓▓▓▓▓│   boundary; the circle
  └─────────────┘        └─────────────┘   is left as an island

Keyboard reference

KeyAction
Enter / SpaceFinish the Hatch command
EscapeFinish the Hatch command (same as Enter/Space)

What can bound a region

Any mix of these entity types can form a boundary, in any combination, as long as they connect end to end with no gap:

Text, Multileader, and Dimension entities are never treated as boundaries.

Islands

Anything fully closed sitting inside the region you picked — a circle, a closed polyline, another hatch’s boundary — becomes an island: the fill stops at its edge and the island itself is left empty. Nest a closed shape inside another closed shape and the fill alternates, hole inside a fill inside a hole, following the same inside/outside rule at every level.

When a pick fails

If the point you clicked isn’t enclosed, or the boundary has a gap, the terminal explains why instead of silently doing nothing:

MessageMeaning
”no boundary found”Nothing was hit in any direction from the picked point — there’s no boundary nearby at all
”point is not enclosed”A boundary exists nearby, but the shape it forms doesn’t contain the point you clicked
”boundary is open”The nearest boundary has a gap somewhere — trace it and check every join is exact
”boundary too complex”The boundary loop couldn’t be closed within the traversal limit — usually a tangle of overlapping entities

The command stays active after a failed pick — read the message, fix the drawing or click somewhere else, and try again.

Choosing a pattern

Every new hatch starts out filled with ANSI31 (or whichever pattern the last hatch you edited used) — there’s no pattern picker before you draw. To use a different pattern:

  1. Select an existing hatch and open its Pattern field in the properties panel — this opens the pattern picker, a grid of named swatches grouped by where each pattern came from.
  2. Click a pattern to apply it — the fill updates immediately.

That selection also becomes the default for the next hatch you create with the hatch command, the same way picking a layer or color carries forward. So to hatch several new areas with a particular pattern: fill one area, set its pattern once, then keep hatching — every fill after that starts with that pattern already applied.

See Hatch Manager for uploading your own .pat pattern files and browsing the full library.

SOLID is a plain entry in the pattern list, not a separate checkbox or mode — pick it the same way you’d pick ANSI31 or any named pattern.

Properties

PropertyMeaning
PatternThe pattern name, from the shared pattern vocabulary (see Hatch Manager)
Pattern ScaleScales the pattern’s line spacing — larger values space the pattern lines further apart
Pattern AngleRotates the pattern independently of the boundary
Origin X / Origin YWhere the pattern’s own repeat is anchored, in drawing coordinates

Moving, rotating, mirroring, or scaling a hatch carries its pattern placement along, so the fill stays aligned with the boundary — you don’t need to re-set the scale or angle after a transform.

Grip editing the boundary

A selected hatch grips its boundary the way a Polyline grips its vertices — one grip at every corner where two edges meet, and one at the middle of every edge (a closed loop like a hatched circle or ellipse grips at its four axis points instead).

GripWhat it does
CornerMoves that corner. A straight edge follows exactly; an arc refits itself to keep passing through both its neighbors; an ellipse or spline edge can only land on its own curve, so the corner snaps to the nearest point on it
Edge middle — line, ellipse, or spline edgeSlides the whole edge; the edges on either side are trimmed or extended to stay joined to it
Edge middle — arc edgeBows the arc through the cursor instead of sliding it — both ends stay exactly where they were, and nothing else in the boundary moves
Center (whole hatch)Activates Move for the entire hatch

A drag preview shows the boundary as a dashed outline rather than a solid fill while you’re dragging — the original fill stays visible underneath until you release, since a preview can only paint on top of what’s there, never remove from it.

DXF — HATCH entity

Hatches import from HATCH entities: KulmanLab reads the boundary geometry along with the pattern name, scale, and angle (DXF group codes 70/41/52) — it does not read the pattern’s own line definitions written inline into the file. Instead, the pattern name is looked up in KulmanLab’s own pattern library (built-in defaults plus anything you’ve uploaded in Hatch Manager). A name that isn’t in your library falls back to ANSI31 so the drawing still reads as hatched, and a note is logged once.

Spline-bounded loops written by other applications (DXF boundary edge type 4) are not yet read.

Hatches do not currently export to DXF — use Export Manager’s .json format to keep a hatch when saving a drawing that includes one; the .dxf format leaves it out.

  • Hatch Manager — browse the pattern library and upload .pat files
  • Move, Copy, Rotate, Mirror, Scale — all carry the hatch’s pattern placement along with it
  • Delete — removes the hatch without affecting the entities that bounded it