@Anonymous wrote:
I finally came up with a method to create a panel that can be tilted in any orientation and can be placed anywhere (not just on a wall or roof).
Not exactly. It can be tilted, but it cannot be placed anywhere. Placing is one thing and associating is another thing. You could place an object by moving it, but does the object adapt with the wall or roof where it was 'placed'? Does it change its slope if the roof where it was placed changes its slope? To do that, it needs to be associated with a host, not just placed.
@Anonymous wrote:
. Lots of trial and error was necessary, as it appears that there is little in the way of rigorous documentation on the finer points of family creation when it comes to complex items.
There is abundant and outstanding documentation out there, splattered all over the place. Blogs, forums, videos, Wikihelp, etc. If you want all that information in an organized and logical sequence, you need to look for a book or for training.
@Anonymous wrote:
The main points I learned in the process (apart from more basic documentation readily available elsewhere). I may have some of the technicalities slightly wrong in my explanation ...
1. If you do not want the object to be constrained to a wall, roof, or other architectural feature, start with the "generic family" template, which will allow you to associate to a reference plane instead of an object.
Not true. It's not the category what determines where the object can be associated. It's the placement type of the template and the settings of the family.
@Anonymous wrote:
2. When working with object composed of numerous parts, group them before trying to tilt (or otherwise manipulate) the object parametrically. This will minimize the inevitable "constraint battles". In this case, be sure to include the tilt plane in the group, but NOT the base plane (described next).
Not recommended. Groups don't work well with parameters in the family editor. And, instead of reference planes, rotations are created with reference lines, which do have a defined start point. Reference planes don't have start points, therefore your rotation will break. Try to assign a rotation value of 0, and then try any other angle again, such as 45, or 20, and see what happens. Now your panel will rotate from its own center, not from the 'origin point' because reference planes don't have endpoints. Therefore, it seems to work for certain angles, but if a user sets the angle to 0 and then to something else, the panel will be rotated in the wrong way.
@Anonymous wrote:
3. Do not try and tilt with respect to the "reference level". Create another reference plane parallel to the reference level for that purpose (I called it the base plane). Also, create a "tilt plane" on the object. The create your tilt instance parameter between these two planes.
Same as above. Reference planes are not used to rotate objects because they don't have endpoints.
@Anonymous wrote:
4. Work constantly to minimize the number of contraints needed, as they often interfere with assigning instance parameters.
The number of constraints needed is minimized by using nested families, because now you don't have to deal with the constraints of the object that you want to rotate. That will be taken care of in the objects' own file.
@Anonymous wrote:
Feel free to point out any additional thoughts, or errors, in my above analysis.
Well, there you go. 🙂
Alfredo Medina _________________________________________________________________ ______
Licensed Architect (Florida) | Freelance Instructor | Profile on Linkedin