FENCE(1)

πŸ“¦ version 7.44.0, in nixpkgs unstable

πŸ’… FENCE(1) β€” the BRL-CAD manual page, bestie edition πŸŽ€

okay so you opened the fence page from BRL-CAD and I'm gonna walk you through it like we're texting at 1am. stay with me, it's actually so good.


✨ NAME ✨

fence β€” generate a chain-link fence in a BRL-CAD geometry database 🌈


πŸ¦‹ SYNOPSIS πŸ¦‹

fence [options] -o output.g

πŸ’– DESCRIPTION πŸ’–

bestie. fence literally builds you a chain-link fence model and writes it straight into a BRL-CAD .g geometry database. no cap. 🫢

the fence is built from RCC poles spaced along its length, joined by a zig-zagging wire mesh. and the way that every single parameter is adjustable on the command line?? iconic. overall dimensions, pole radius and spacing, wire radius and twist angle, object names, and per-component material and color β€” all of it, yours to tweak. πŸ‘‘

heads up: there are no positional arguments. the output destination is set with -o (defaulting to fence.g). with no dimensional options the program uses its built-in defaults, and those defaults are:

  • a 3000mm long, 2000mm tall fence 🌸
  • 3000mm pole spacing
  • 30mm poles
  • 2mm wire at a 45 degree twist
  • units: millimeters

all dimensional values are interpreted in the units set with -u. πŸ’…

now here's the fun structural bit β€” most options come in a lowercase/uppercase pair. the lowercase letter sets a value directly. the uppercase letter either toggles a mode relative to its default, or applies the value to all fence components at once (poles, mesh, and wire) rather than to the fence combination alone. iykyk. ✨

the resulting database can be visualized or further edited with mged(1) and rendered with rt(1). slay.


πŸ’… OPTIONS πŸ’…

  • -i, -I β€” enable (-i) or toggle (-I) interactive mode, prompting for parameters on standard input. πŸ™ˆ
  • -v, -V β€” enable (-v) or toggle (-V) verbose mode. it's giving chatty.
  • -d, -D β€” enable (-d) or toggle (-D) debug mode. πŸ”₯
  • -o, -O filename β€” output geometry database file name (default fence.g). ⭐
  • -k, -K string β€” title/identification string stored in the database header. πŸŽ€
  • -u, -U units β€” units for the database and all dimensional values (e.g. mm, in); default mm. 🌸
  • -n 'x y z', -N val β€” fence height. -n takes a vector; -N takes a single scalar applied along +Z. may not be zero. 🚨
  • -l 'x y z', -L val β€” fence length (width). -l takes a vector; -L takes a single scalar applied along +X. may not be zero. 🚨
  • -r radius β€” radius of the mesh wires. may not be zero. πŸ’€
  • -R radius β€” radius of the fence poles. may not be zero. πŸ’€
  • -a, -A angle β€” primary angle, in degrees, of the wire zig-zag. may not be zero. πŸ“
  • -j, -J distance β€” maximum spacing between poles. may not be zero. πŸ“
  • -t material, -T material β€” shader/material name for the fence region (-t) or for every generated region (-T). 🎨
  • -b parameters, -B parameters β€” shader parameter string for the fence region (-b) or for every generated region (-B).
  • -c 'r g b', -C 'r g b' β€” RGB color (each value 0-255) for the fence region (-c) or for every generated region (-C). 🌈
  • -f, -F fencename β€” base name of the fence object(s) in the database.
  • -p, -P polename β€” base name of the pole object(s).
  • -m, -M meshname β€” base name of the mesh object(s).
  • -w, -W wirename β€” base name of the wire object(s).
  • -s, -S segmentname β€” base name of the wire segment object(s).
  • -e, -E fpmw β€” select which components (fence, *p*ole, *m*esh*, *w*ire) are prompted for in interactive mode. -esets the listed components;-E` toggles them relative to their defaults. πŸ™ˆ
  • -g, -G fpm β€” select which components (fence, *p*ole*, mesh*) to generate. -g generates exactly the listed components; -G toggles them relative to their defaults. πŸ› οΈ
  • -x, -X β€” print command-line usage examples and exit. πŸ“–
  • -z, -Z β€” print the default settings and exit. βš™οΈ
  • -h, -? β€” print a usage message and exit. πŸ†˜
quick vibe check: those "may not be zero" warnings are fr fr real β€” don't pass zero to height, length, wire radius, pole radius, angle, or pole spacing. the program is not gonna be chill about it. πŸ™…β€β™€οΈ

πŸŽ€ EXAMPLES πŸŽ€

Example 1. Generate a custom fence and render it ✨

fence -o yard.g -N 1800 -L 6000 -j 2000 -R 25 -r 2 -a 60 -C '90 90 90'
rt -o yard.png yard.g fence.r

writes a 1.8m tall, 6m long fence to yard.g with poles spaced every 2m (25mm radius), 2mm mesh wire twisted at 60 degrees, and a gray color applied to all components. the second command renders the resulting fence.r region to an image with rt(1). ate and left no crumbs. πŸ”₯

Example 2. Generate only the poles into a database πŸ¦‹

fence -o posts.g -g p -L 9000 -j 3000 -R 40

generates just the line of poles (no mesh) for a 9m run with 3m spacing and 40mm radius β€” useful when the mesh is modeled separately or omitted. sometimes less is more, bestie. πŸ’œ


🌸 SEE ALSO 🌸

brlcad(1), mged(1), rt(1), picket_fence(1)


πŸ‘‘ AUTHOR πŸ‘‘

BRL-CAD Team πŸ’–


this software is Copyright (c) 1989-2026 by the United States Government as represented by U.S. Army Research Laboratory.


πŸ“ BUG REPORTS πŸ“

reports of bugs or problems should be submitted via electronic mail to devs@brlcad.org πŸ“¬


okay that's the whole page!! this one's from BRL-CAD, and it's page FENCE(1) β€” mwah, go build a fence, you've got this πŸ’…βœ¨πŸ«Ά

πŸ“¦ where this page comes from