is a useful tool to consolidate triangles into quads and to
keep file size down, but doing so make further improvements
to the file more difficult. Unrectifier
does the opposite, it expands Rect primitives into quads + lines,
and split quads into triangle pairs. By default Unrectifier
operates on the whole file, but it can also limit itself to
key-colored elements. With some limitations, it is also able
to update condlines around modified areas.
It is a simple console application, source code
is provided below to anyone willing to integrate it in a more
palatable interface. You may also use Michael Heidemann LETGUI front-end (highly recommended!).
package, including program for Windows, documentation,
source files (Visual C++ 6.0), example files.
Prepare the input LDraw file. Nothing
special to do if you want to apply Unrectifier
to the whole file, otherwise color the primitives that you
want to inline and the quads that you want to split using
Launch a command prompt.
Type the command line: unrectifier[-k
<val>] [-r] [-q][-c][-u][-l <Ldraw path>] LdrawFileIn
will create LdrawFileOut, containing the original file with
selected Rect primitive inlined and quads split into triangles.
Here is a screen shot of a sample run:
- Input file is read and parsed, stored in an array.
- Array is scanned to find quads or Rect primitives. If
no key color is specified, all Rects are inlined and quads
get split into 2 triangles. The split chosen is the one
that gives the smaller angle between the two triangles.
- If key color is specified, only elements that match
key color are processed. Note that actually ALL key-colored
primitives or subfiles are inlined. This allows you to "unboxify"
a box primitive, or more generally deep-inline any primitive/subpart.
- If -c option is not
specified, condlines bordering split quads are deleted,
and new ones are generated around each triangles. Only simple
generation is done (condline created for any angle >
0.1°, no condline created between the triangles and
touching primitives/subpart). For more fancy condlines management,
- If -u option is specified,
the whole file is returned to uncolored state (edge lines
and condlines to color 24, all other to main color 16).
- Output file is written.
The input file contains a Rect primitive (top
left) and a warped quad. Using default options,
the Rect is inlined, then the quads are split into
Command line: Unrectifier -l l:\ldraw ur1.dat ur2.dat
-r option prevents
inlining of Rect primitives. Note that if you don't
specify the path of your LDraw folder, Unrectifier
is unable to inline primitives, and the result is
Command line: Unrectifier -r -l l:\ldraw ur1.dat ur3.dat
Command line: Unrectifier ur1.dat ur3.dat
-q option prevents
splitting of quads into triangles. Notice the very
uninspired thumbnail nearby ;)
Command line: Unrectifier -q -l l:\ldraw ur1.dat ur4.dat
If no key color is specified, Unrectifier
does its job on all quads and Rect primitives. Note
that Box primitives are unaffected.
Command line: Unrectifier -l l:\ldraw ur5.dat ur6.dat
With -k <color>
option, only elements that have the proper color
are processed. This time, ALL key-colored primitives
are inlined. This allows you to "unboxify"
a box primitive, or more generally deep-inline any
Command line: Unrectifier -k 5 -l l:\ldraw ur5.dat ur7.dat
-u option returns
the whole file to uncolored state.
Command line: Unrectifier -k 5 -u -l l:\ldraw ur5.dat ur8.dat
-c option prevents
conditional lines management: the condlines existing
in original file are left as-is. But as you can
see on nearby thumnail, they probably won't match
properly the triangles, and no conditional line
is added when a warped quad is split. If you use
this option you should at some time regenerate condlines
Command line: Unrectifier -c -l l:\ldraw ur9.dat ur10.dat
Default operation (without -c
option) deletes existing condlines around split
quads, and regenerates them. Note that this process,
applied one triangle at a time, is very inefficient
and may take some time on big files.
Command line: Unrectifier -l l:\ldraw ur9.dat ur11.dat
Regeneration of condlines is basic, a condline
is created for any angle > 0.1°, and no condline
created between the triangles and touching primitives/subpart.
Here for example no condline was created along remaining
quad (-r option).
For more fancy condlines management, use Edger2!.
Command line: Unrectifier -r -l l:\ldraw ur9.dat ur12.dat