When materials with surface patterns are used, there is a good chance that you need to tweak its position, and perhaps even rotate it to some degree.
With system and in-place families, this is very easy to achieve, the latter being a little more tricky. So let’s take a wall with a surface pattern for example. You can tab and pick one of the lines and nudge/move/rotate as desired. Even the align tool works like a charm in cases like this. In fact, we use it all the time for tile-work in interior elevations (filled regions are a bad idea for this purpose as you cannot control the fill position/orientation, so painting the wall with a material and fine-tuning the joint locations represented by the surface pattern, is a much better solution). You might be mostly familiar with doing this on ACT ceilings, where you control the position and orientation of the grid by fine-tuning the surface pattern positioning.
When it comes to in-place families, Revit doesn’t allow you to directly control surface pattern positioning. To achieve this, you have to be in in-place edit mode. This is a very subtle, but important fact as you’ll see shortly.
Unfortunately with component families, there seems to be no way to adjust material positioning in the project environment. But recall my point above about the subtle fact…you can adjust the surface pattern in the in-place family editing environment, so why not add some parameters to expose this functionality in the project environment while editing a component family?
As it turns out, you can only adjust the pattern rotation, which is better than nothing. It is really finicky to get it to work and you have to do it a certain way or it won’t work properly. I could not find a way to modify the position of the the fill in the x-y directions, no matter what I tried: ref. planes, ref. lines, constraining to the geometry etc. None seem to work. However rotation works well and I was very surprised to find that even when you change material or the surface pattern (from orthogonal to slanted etc.) in the project environment, the functionality kept working and did not cause the notorious “can’t create type” error.
It is very peculiar to note that you cannot actually flex the rotation parameter in the family editor more than once, or the family will break. Here are the main rules you have to follow:
- The angular parameter has to go from a reference plane to one of the pattern’s lines. I found it easier to use an orthogonal crosshatch while building my test;
- Make sure to set the angle to zero before applying the label to the angular dimension or it’ll somehow try to rotate the pattern (this is definitely a bug) and cause a “constraints not satisfied” error;
- When loading the family into the project environment, the angular parameter has to be zero, otherwise the surface pattern comes in skewed. I noticed that if you load a family with a pattern rotation of say, 10 degrees, the pattern in the project will actually be rotated at twice that amount (20 degrees in this example) and the family doesn’t react when changing the angle between 0 and double the original angle (20 degrees in this example). So make sure the angle is zero when you load it! Just don’t try flexing it in the family editor either or it’ll break.
This technique works for all material application methods on geometry in the family editor:
- Painting a material directly on the geometry face
- Painting a material parameter on the geometry face
- Assigning a material directly to the geometry
- Assigning a material parameter to the geometry
I’m not sure how useful this workaround will be to anyone, but there you have it! Hopefully the Factory will resolve this issue and we’ll be able to fine-tune surface pattern positioning directly like we can on system families.