Thursday, May 10, 2007

Revit, Random, and different platforms...

One thing i always "ASSumed" about 3D modeling and Consultant Coordination, was that in some way shape or form, everyone would "see" your model, and could derive object locations based on it. So when i heard that (for some reason), we had to provide actual coordinates for a floor opening that is (somewhat) random in design, i was curious. "Aren't they working with our model overlayed?" "Well yes, but..."

I digress. Its not the point anyway. A couple of people in the office began wondering how an object in Revit would report coordinates relative to a structural grid. Granted, the Spot Dim. tool reports coordinates, but our structural grid was not aligned with the coordinate system (and we couldn't adjust, there was another coord. system, etc...) So anyway...

My solution was a simple one, its been done many times. We use Parameters to Drive geometry, so i thought id just reverse engineer a family, so the geometry could drive the Parameters, giving a dimension. Its NOT a 100% intelligent tool, and its certainly not "user-proof," but i don't believe we'll ever be "User proof" :-)

All the family entailed, was two Crosshairs, which i just made from Specialty Equipment Families to be consistent. (The whole assembly is a Spec. Equip. family so it can be scheduled...) In any event, the Distance Parameters have to be shared, obviously... That way they can be reported in a schedule.
Where its UNintelligent, is in the smaller crosshair. Ideally, we could intelligently have it report where it lies, but i dont know of a way to accomplish this. So the accuracy of this tool rests in someone aligning the smaller crosshair to a common "origin" from which to report. With Revit's Multiple Alignment tool, this takes about two seconds. :) The DIMS go to the reference planes, which the Crosshair is locked to. In the project, this gives us pull tabs, which are great for this application.
For ease of use, i prefer to insert them and copy them around so they're already on the "random" points i need coordinates for. You can put them on the "origin" first, and stretch/align them, but then you have a number of points in different locations to deal with. Since they're all connected to the same Critical Origin, i like to get the random points out of the way when i drop them in. Then i can multiple align to the "origin". (I'm using the term in quotes because its not an origin, its just a base point... Just wanted to clarify). the little "legs" hanging out in space are what need to be aligned to a common point. Because of the pull tabs, you can literally just "align" with the Crosshair.

There are the pull tabs, if you choose to go that route... I prefer the align tool for this application, but i can see why it may not be ideal. The align tool is tough if your object isn't parallel with the Crosshair, so i was using a Component that was just an empty crosshair, that i placed on all the Floor Edges ahead of time. Again, not a perfect solution, as it requires of you to accurately pick the points to be located and scheduled.

I think a better solution could be had of those Spot Coordinates... I don't believe we can schedule them, but if we could... Wow, that could go places. Calculated values accounting for the grid orientation shift and/or the "origin" in use... And it would all stay live... BUT, you'd still have to clock the points. So I'm not sure its possible to eliminate us from the game. I guess we all get to keep our jobs today. :) So anyway, i put a bunch of them in, and did the multiple align to the two grids I'm using as my Benchmark.

I have to admit... After a few years at UB doing Ink on Mylar of obscure objects, part of me wanted to print this... for no practical use. But alas, save a tree, hit Print Screen, lol.

Those are all the markers after having the crosshair aligned to the "origin." About ten minutes of work, then i tagged them. That took a while, because we cant specify in the family, WHERE the tag goes in, so it defaults to the center of the family... Which makes me cry in this instance. I had to move the tags, which also is a liability in the fidelity of the model... But, since the coordinates and the schedule will always be right, its a visual mis-cue, if anything.

In the family, i put in a Visibility Parameter for the Connecting Line, so i could shut them off in the end. Here are the markers, with the lines disabled. Pretty simple, really.

Here's the schedule with the values reported. Some of them are horrible numbers (Rays rule for precision...), but that's what it actually is, right? Id like to play around with something similar in principle, but much bigger in design. Maybe take something like one of the Morphosis Buildings, and try breaking it down.
Gehry Tech.'s Digital Project is great at documenting complex relationships, where structure is based on form, which is based on some mathematical algorithm... But one has to wonder: What happens in a case like this, where someone ELSE'S software, that DOESN'T read the formulas, needs values for location off something like that? I liked this exercise for that reason alone... Its easy to say CAD standards are heading by the way side, and Schedules are live, and information now has to be displayed and conveyed in a fashion that doesn't compromise the integrity of our models... But with ArchiCAD, Revit, DP, RISA3D, Solidworks, and on and on and on... There is obviously a communication breakdown, save for things like IFC (which i know little about at this point). So what do we have to look forward to, in terms of breaking down information in to values everyone can appreciate? Because at the end of the day, I'm betting that a gorgeous 3D model isn't turning in to a building unless the Structural guy knows where to put the Steel. :-)


Steve said...

Nice Aaron, this example would probably be an interesting demo at AU...

DBaldacchino said...

I need to catch up on my reading....very nice Aaron :) I think it would be a really cool exercise to play around with that family and add a rotation parameter so the distances X and Y could be reported relative to rotated X and Y axes (by rotating the ref planes inside the family or using ref. lines?). Just a thought anyway; could extend the usability of this little gem.

Malleristic-Revitation said...

Steve- Definetely! Im hoping to be there again this year. :)


We considered something similar when i was putting it together, because the trouble is it only reports positive distance values. So i was going to parameterize it to read in any direction... So the "origin" could be somewhere more centralized.

The issue (in my opinion) was one of multiple user operability. Because its not a fully baked automated family, it depends heavily on you using it properly to report good data. As such, i wanted it simple, becuase i was worried if it was confusing, its integrity would be compromised.

As it is, i worry about someone using a mirror command on it, and not realizing the values will be compromised.

Id love to try your suggestion though, with reference lines and a few parameters.

I must say though, i wish we could place a "spot coordinate" OBJECT, and then place spot coordinates relative to it. That would be another interesting approach...

lbegnaud said...

We could really use this at our company. We are using Revit Structure. I went to the web library to look for the specialty equipment crosshair family(I understood it to be a family in the specialty equipment category)without success. Could you let me know where to find this, or would you be willing to share your family?


Lynda Begnaud
SCA Consulting Engineers

Malleristic-Revitation said...


Im afraid my description wasnt very accurate. It is a Specialty Equipment family, but it is one that i made. That is simply the Family Catagory that i assigned to it when i created the family, for filtering purposes.

I will shoot you an email...

Taans said...

Very nice Aaron. It's very usefull.
Thank you. Do you have a solution for z coord.?

Cees Kruit said...

I finally found something about coordinates in a schedule!'I'am wandering if this family is public available?

Malleristic-Revitation said...


Thanks for the kind words. Its not something publicly available, since it belongs to the office i worked at when i made it. But its VERY simple to reproduce, and i think ive even outlined the steps in the Blog.

All it consists of is the following:

1. Start a Generic Model Family
2. Load in Nested families for whatever symbols you want at each end.
3. Make SHARED PARAMETERS (instance, not type) for the X length and Y length (addressing the other question, you could certainly inser a third parameter here for the Z coordinate... Just like a HEIGHT parameter in a lightign fixture...)

4. Place them all with one end at a common origin.
5. Adjust them all so that they are touching the points you wish to query.

Just remember to use SHARED parameters BEFORE you schedule them. Otherwise, when you edit the family and make the parameters shared after the fact, it will reset all the values, hahaha. Ask me how i know. ;0