Pattern Definition Format
The pattern file is a text file, saved with a '.pat' extension.Definition of units (important for metric):
;%UNITS=MM
Each pattern definition has an * prefixed header : a title and description separated by a comma
*Stretcher 400x200, 400mm x 200mm stretcher bond
Drafting or Model definition:
;%TYPE=MODEL
Each line repeat (in the pattern) is described in one row of text, with comma delimited format. eg:
0, 1200, 1000, 0, 1000, 400, -1500
- Angle = angle of line from horizontal measured in an anti-clockwise direction
- Origin x = horizontal distance of start of line from setout point (always orthogonal)
- Origin y = vertical distance of start of line from setout point (always orthogonal)
- Shift u (x axis of line) = offset distance of start of repeat line measured parallel to start of line
(in the direction of the line, ie. to match the angle). The Shift values are measured from the start of the line, not from the setout point. - Shift v (y axis of line) = offset distance of start of repeat line measured perpendicular to start of line
- Pen down = length of solid line measured in the direction of the line (optional - it draws a continuous line if omitted)
- Pen up = length of gap in the line before the next segment of the line starts repeating (measured in the direction of the line); is always a minus value. (optional - as per pen down)
Stretcher Bond Hatching Definitions
- a series of continuous horizontal lines at regular spacing;
- Short vertical lines that run between alternate horizontal lines, at a spacing equal to the length of the brick/block/tile
- Another set of short vertical lines that run between alternate horizontal lines, at a spacing equal to the length of the brick/block/tile - but these are typically offset horizontally by half a length and vertically by one pattern height.
There are actually two ways to define this:
Option 1 - separate definitions for the two vertical lines
*Stretcher-450x150-1/2, 450 x 150 1/2 stretcher bond;%TYPE=MODEL
0, 0,0, 0,150
90, 0,0, 0,450, 150,-150
90, 225,150, 0,450, 150,-150
The first row defines the horizontal lines
0, 0,0, 0,150
- The lines are at zero degrees (horizontal)
- The first line starts at 0 offset from the origin, both x and y (0,0)
- The repeat has a shift of zero horizontally (x or u), and 150mm vertically (y or v) from the line origin (0,150),
- The next repeat is the same values (0,150) from the start of the previous repeat.
- The line is continuous, as the are no pen up/down values
The second row defines the first set of vertical lines
90, 0,0, 0,450, 150,-150
- The lines are at 90 degrees (vertical )
- The first line starts at 0 offset from the origin, both x and y (0,0)
- The repeat has a shift of zero vertically (u) , and 450mm horizontally (v) , from the line origin (0,450)
- The next repeat is the same values (0,450) from the start of the previous repeat.
- The line is segmented, 150mm solid, 150mm gap (pen up/down 150,-150)
The v shift in this instance is horizontal, perpendicular to the line, with a positive value to the left of the line origin (same as pattern setout point in this case).
- As the pattern is symmetrical, it makes no difference if the v shift value is positive or negative
- Seen below in context, the pattern repeats in both directions from the origin:
The third row defines the second set of vertical lines
90, 225,150, 0,450, 150,-150
- The lines are at 90 degrees (vertical )
- The first line starts at 225mm x offset from the origin, and 150mm y offset from the origin (225,150) - ie. half a tile along and one tile up.
- The repeat has a shift of zero vertically (u) , and 450mm horizontally (v) , from the line origin (0,450)
- The next repeat is the same values (0,450) from the start of the previous repeat.
- The line is segmented, 150mm solid, 150mm gap (pen up/down 150,-150)
Option 2 - one definition for both vertical lines
*Stretcher-450x150-1/2, 450 x 150 1/2 stretcher bond;%TYPE=MODEL
0, 0,0, 0,150
90, 0,0, 150,225, 150,-150
The first row defines the horizontal lines as per previous method
0, 0,0, 0,150
90, 0,0, 150,225, 150,-150
- The lines are at 90 degrees (vertical )
- The first line starts at 0 offset from the origin, both x and y (0,0)
- The repeat has a shift of 150mm vertically (u) , and 225mm horizontally (v) , from the line origin (150,225)
- The next repeat is the same values (150,225) from the start of the previous repeat.
- The line is segmented, 150mm solid, 150mm gap (pen up/down 150,-150)
- As the pattern is symmetrical, it makes no difference if the u and v shift values are positive or negative
- Seen below in context, the pattern repeats in both directions from the origin:
One Third Shift Patterns
The same principles can be applied when the bond is staggered by differing proportions.Option 1 - separate definitions for each vertical line
*Stretcher-450x150-1/3, 450 x 150 1/3 stretcher bond
;%TYPE=MODEL
0, 0,0, 0,150
90, 0,0, 0,450, 150,-300
90, 150,150, 0,450, 150,-300
90, 300,300, 0,450, 150,-300
90, 150,150, 0,450, 150,-300
- 90 degrees
- 150mm x line origin, 150mm y line origin
- Zero u shift repeat, 450mm v shift repeat
- 150mm Pen Down, 300mm gap (Pen Up)
- 90 degrees
- 300mm x line origin, 300mm y line origin
- Zero u shift repeat, 450mm v shift repeat
- 150mm Pen Down, 300mm gap (Pen Up)
Option 2 - one definitions for all vertical lines
*Stretcher-450x150-1/2, 450 x 150 1/2 stretcher bond;%TYPE=MODEL
0, 0,0, 0,150
90, 0,0, 150,300, 150,-300
Horizontal shift (v) repeat has to be 2/3 of a tile (300mm)
As the joint offset is not half a tile, the same result can be achieved with a negative v shift repeat of -150mm:
0, 0,0, 0,150
90, 0,0, 150,-150, 150,-300
An offset by one third to the left could be achieved by a positive 150mm v shift:
0, 0,0, 0,150
90, 0,0, 150,150, 150,-300
Two Third Shift Patterns
Some patterns cannot have their vertical lines defined by only one row, as you can't define a consistent diagonal repeat. Therefore you must have multiple rows for the vertical lines.*Staggered-450x150-2/3, 450 x 150 2/3 stretcher bond
;%TYPE=MODEL
0, 0,0, 0,150
90, 0,0, 0,450, 150,-150
90, 300,150, 0,450, 150,-150
The direction of stagger can be changed with the x origin value:
*Staggered-450x150+2/3, 450 x 150 2/3 stretcher bond
;%TYPE=MODEL
0, 0,0, 0,150
90, 0,0, 0,450, 150,-150
90, 150,150, 0,450, 150,-150
Flemish Bond
More complex brick patterns require extra rows of definition:*Flemish-240x86, 240 x 86 (Australian Brick size) Flemish stretcher bond
;%TYPE=MODEL
0, 0,0, 0,86
90, 0,0, 0,360, 86,-86
90, 240,0, 0,360, 86,-86
90, 60,86, 0,360, 86,-86
90, 180,86, 0,360, 86,-86
You could continue this theme with increasing random looking patterns, but I'll leave that for you to figure out . . . . . .
Hey Tim:
ReplyDeleteJust saw this the other day. Might help with creating these:
https://www.hatcheditor.com/
Thanks Paul. It seems like that is a useful method of previewing pattern files that you have already created. There are other tools for creating patterns - but these stretcher bond examples are just simple enough for mere humans to figure out, so you don't need an extra tool to do it for you.
ReplyDeleteThis comment has been removed by a blog administrator.
ReplyDeleteHave you seen this plug in for hatch creation?
ReplyDeletehttps://bimchapters.blogspot.com/2018/10/create-custom-fill-patterns-in-revit.html?m=1
It makes the really complex patterns pretty easy.
Hi Walter. Yes that sounds great. There are lots of pattern creators around. I was trying to document really simple pattetns that don't need an addin.
DeleteThank you very much for your help on this one!
ReplyDeleteI had no experience in Revit Pattern and was struggling to make a new tile pattern until I found this document.
PyRevit has a great tool for creating Revit patterns if you want someting more complicated than the method described here. https://github.com/eirannejad/pyRevit/releases
ReplyDeleteHi, RevitCat
ReplyDeleteI have been trying to creating a brick pattern, but some of my lines are off, could you by any chance take a look at it and tell me what I'm doing wrong?
Thanks for taking the time to create this post! Really appreciate the clear explanation and diagrams showing what each line of code defines. I was able to create the pattern I wanted after studying your post.
ReplyDelete