Showing posts with label Workarounds. Show all posts
Showing posts with label Workarounds. Show all posts

Wednesday, March 19, 2014

Creating Non-Hosted Families from Hosted Versions

I just recently discovered this gem and it seems there are a few people that know about it. Perhaps it was discussed in a forum or some other place, but since I never came across this nice little tip, I thought of sharing it here.

In this post, I talked about a “pseudo face-based family” and this week while I was not even thinking about Revit or anything work-related for that matter, I just had a thought and wondered whether the hosting extrusion could be deleted (I know, my brain is weird sometimes!). So I tested this out and then realized that the resulting family is no “pseudo-anything”, but simply built into a host-less template with the Work Plane-Based option enabled.

FamCat and Params

So the highly-intuitive process (sarcasm anyone?) of taking a family that is built in a hosted template such as face-based, wall-based, ceiling-based, etc. and produce a non-hosted copy is as follows:

  1. Place an instance of the family you want to hack in the drawing area. You can insert multiple ones at the same time;
  2. Save the file and close it;
  3. Open a new Revit file from no template. This ensures it is completely empty and Revit will thus create this hacked copy when we do step #6;
  4. Link the previously saved model into this new file;
  5. Go to the Collaborate Tab>Copy/Monitor>Select Link and pick the linked file. Once in C/M mode, click Coordination Settings and make sure that the family types you want to hack are set to “Copy Type”;
  6. Click the Copy button and pick the families you want to hack;
  7. Finish and exit from this mode when you’re done.

The copied families that Revit created are hacked versions and no longer built inside of hosted templates. Now simply edit the families, delete the extrusions, set them to not be work plane-based and save them…done!

Now I ask, if Revit is able to do all this, why not give us a stupid button instead of this frustratingly long and obtuse workaround?!


Share/Save/Bookmark

Thursday, January 10, 2013

Spiteful CAD Imports

So this week the buildingSMART managers at HOK were discussing ways to get rid of imported (BAD!!) CAD files in Revit projects. Should be something that is easy to do, right? Well, not so easy it turns out.

If you need to do this, you might simply fork out a little cash for a custom plugin. Autodesk Exchange has a good number of such things available and my cohort Brok Howard pointed me to Purge Cads. I have not tried it, but I did confirm with the developer that it does not touch linked CAD files, so for a couple of bucks, this will get the job done fast.

One way or another, you need a plugin. In my case I had Ideate Explorer at my disposal. Unfortunately it lumps CAD Imports & Links together. If you have this plug-in, here’s what you might call “an obscene work-around” to hack your way to the finish line:

  • Assuming you have worksharing enabled, have another user go to the Manage Links dialog and re-load all loaded CAD Links and load & unload all unloaded CAD Links. All we need is to have another user borrow these linked instances so we can get their name in the following step;
  • Go to the Manage Links dialog and try to load/unload the links. You will then get a list of CAD links that you don’t have permission to edit (the ones touched by the other user in the above step). Take note of the names;

clip_image001

  • In Ideate Explorer, select all CAD Imports/Links, then go to the Revit filter and de-select the instances listed above.

clip_image002

  • Now delete the selection and the links will be retained.

clip_image003

Autodesk (or Ideate), if you’re reading this, don’t you think our lives can be simplified by a smidgen? This type of functionality should just be built into the product. The amount of solutions we have to default to via plug-ins is getting way out of hand!


Share/Save/Bookmark

Friday, April 20, 2012

Fine-tuning of material surface patterns

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.


Share/Save/Bookmark