Search This Blog


Wednesday, March 18, 2015

Update to Chainlink Fence (Railing)

I've updated the Chainlink as Railing example to utilize the latest railing styles and modified the construction to allow for displaying in a site view with x's as the post.  I've also added a material that renders as chain link.  So now you get the easy creation method of the rail object, with surface patterns, render material, and you can control visibility in your site view to show as a traditional linework.  Since its a railing, it will also allow curves.

Here is a site view of the "fence" in action:

Here is an elevation view in realistic mode:

Here is an elevation "hidden line" view showing the surface pattern:

Here is a rendered view:

Here is how it is constructed.

Get it here:

Beside the Cursor is now on Wordpress

Greetings.  I've migrate the site from Blogger to Wordpress.  You can find all the old content at

I've spent alot of time fixing links and correcting image and download links.  Let me know if you find any broken links and I'll get them fixed.

Look for all new content on a regular basis.


Sunday, March 16, 2014

ACA: Automating workstation counts per squarefoot

We have been successfully using ACA rooms to meet program needs for one of our primary clients. Their requirements are based on a specific square footage formula for determining how many workstations should exist within certain room types.  Recently they added additional room types beyond "Office" that also require workstation counts.  In addition to the increase in room types, they also increased the workstation counts per square foot.  On top of the those requirements, there is always a need in this business to override an automated value based on room geometry or other constraints, so the automation had to be flexible.  The current workflow for overriding the count involved deleting the default room tag and replacing it with an alternate tag containing an attribute. Because I had to revisit the formulas, I took an opportunity to streamline the workflow while adjusting the formulas.  I reduced the workflow for overrides from 12 clicks to 5 and eliminated the alternate room tag in the process.

The original room tag had values being constructed via a formula, in a custom property set definition (psd) field called WS_Count.  It was set up to always display the rooms square foot value by reading the gross area field from the RoomObjects psd.  A relatively simple formula was used to check the space name and when "office" was in the name, the WS_Count value was concatenated to include a workstation count.  The tag looks like this in operation:

As you can see from the image above using the same tag for both spaces results in a workstation count being displayed in office types and just the square footage for other type of rooms.  This is accomplished with some simple statements inside the object based psd.  Note the Space name is standardized and controlled by pulling from a list and is style based.  To create something similar, you could introduce the following function in a psd field.

The logic within the above sequence first checks to see if the list based style name contains the word "office" if it does not, it will skip all the down to the Else statement and simply return a string containing the "GrossArea" automatic property of the room object which is concatenated with a space and the letters "SF".  If the space type contains the word "office", then the value of the "GrossArea" automatic property is checked from smallest to largest using a "less than" comparison.  
This tag was working well for this clients projects, but based on the previous mentioned changes, I introduced two new fields into the psd (WS_Override & WS_Detect) to eliminate the non coordinated overrides and to reduce the multi-view block count by 1. Because I wanted the value of the workstation count to always get calculated, I added a simple "less-than" function to calculate the count in the new property field titled: WS_Detect as shown below.

This function checks the string value from the property WS_Count to see if "WS" is found, meaning that the room type required a workstation count, and checks the new property WS_Override to see if its value is defaulted to 0 representing no override.  If both prove true, then the square footage is calculated based on the square footage program requirements set by the client using a similar "less-than" approach.  If either value is false then the manual integer based property value of WS_Override is used.
With the two new properties in place, anytime an override is needed because of space geometry, pilasters, or other obstructions that might require a deviation from the program, the designer simply places a positive value in the WS_Override property of the space. With the calculated value being tracked in a separate property, the original WS_Count property formula was modified as follows:

The original space type check was modified using the boolean "Or" to check for "Office" as well as the new space types that also get workstation counts.  If no workstation count is required, then the formula skips to the Else statement and simply presents the Square footage value as before.  If a workstation count is required, then the logic begins to check for a positive value in the WS_Override property.  When a positive value is found, the formula concatenates the square foot value with the workstation count from the WS_Override property.  If no override is in place, the original program based workstation count is used by concatenating the square foot value with the WS_Detect property.

The room tag multiview block was created using the following psd properties within an attributed block as shown below.  This block is used as a display block within the multi view block.


Note: in the above attributed block definition the middle line contains a simple text object with the letter "x" to allow the length and width size to be displayed.  I set the Length as right justified and the width to be left justified.  The first and third lines are middle center justified.

To give visual feedback to the designer as they are placing the spaces, I added a display theme to color the spaces based on workstation count.  I also added a room based schedule to display the workstation counts and provide a running total.  This schedule is set to automatically add new spaces and to search within blocks so that it is always up to date.  This setup is estimated to save approximately 10 - 15 minutes per project every time the plan is created or changed.  This is projected to save the company more than 80 man hours per year. It also eliminates counting errors and inaccuracies which may be introduced through human error.  The image below shows the original space layout on the left with the new display theme based layout and legend displayed on the right.

An image of the schedule that maintains tracking of Workstation Count is shown below.

The image below shows the settings used for the display theme.

Finally, the formula used in the Workstation Count Schedule is provided for reference.

The above formula checks the psd property WS_Count for the string "WS" indicating a workstation count is being calculated based on the space type.  If the formula doesn't find the string then the workstation count is set to a value of zero. If it finds the string "WS", then the value of the property WS_Override is checked. If it is greater than zero, its value is used directly, if not, then the value of WS_Count property is parsed using the split function.  The split is based on a space value and the third element of the resulting array is returned, which is the workstation count.

Let me know if this helps in your work. Here is a tip, you can cut and paste formulas like these shown in this blog post into the editor in ACA, but you'll need to highlight any values found within square brackets and double click to replace the property set data using the interface. I frequently do this when working with a long formula.  I'll copy it out of a working example into notepad, add the necessary logic, and then paste back into the formula editor. When you paste it back in, look for any bracketed properties that do not display the dark background.  You'll need to replace those by highlighting them and then double clicking on the property from the object list below the code area. Use the sample results area as a check.
When the sample results area displays a proper sample value you are ready to use it.  Below you'll see an example of the property formula editor in both working and non-working order.  Remember if you see the formula in the sample results area, you still have some replacements to make.

Saturday, March 08, 2014

AutoCAD Layfrz: Nested Entity Selection

I was asked recently how to fix the workstation blocks that were placed in a floor plan drawing.  When I opened the file, I quickly surmised that a short lesson on layfrz would solve the issue.  Using the layfrz command, sometimes requires different settings depending on how the selected entities are created. In this example, a simple "entity" option setting allows for attribute layer freezing within the block.  Watch this video to learn how.


Thursday, March 06, 2014

ACA: Double Click Schedule Table to Update

Of course you can always set an AutoCAD Architecture Schedule Table to update automatically, but when you choose to leave that property setting set to no, it would be nice to be able to double click the table and have it update, rather than simply show the properties.  Since the updateschedulenow command is not directly available in the cui editor (it didnt appear in searches using schedule, or update keywords), you'll have to follow these directions to create a double click behavior after creating a custom custom command.  Here are the steps:

  1. Access the CUI editor - Type cui and hit the enter key.
  2. Choose the Main CUI - Use the selector to choose the main cui file
  3. Create a new double click action - Right Click on the Double Click Actions Node and choose Add new double click action
  4. Name it what you want, I named mine Schedules.
  5. Create your new command, by clicking on the star icon as shown in the image below.
  6. You will get the skeleton of a command created automatically as shown in the image below.
  7. Name your command Update Schedule Now - also add a description, the command display name and add the following macro:  ^C^C_ScheduleUpdateNow   You can select the OOTB icon from the selection provided as shown in the image below. It is named RCDATA_SCHEDULE_TABLE_UPDATE
  8. Now drag your new command to the Double Click Action and drop it on top of the node.
  9. Close the CUI editor to complete this task and update your main CUI with the new tool.

Saturday, March 01, 2014

Revit Gazelle Model

Recently I found myself planning a workout room in the basement of our house.  Rather than spend time moving heavy exercise equipment around, I thought I would create the missing pieces in Revit so I could optimize the layout of the space and provide the visualization of the space necessary.  The only piece I couldn't seem to locate online was the Gazelle Edge exerciser shown in the image below: 

The image above is what I brought into Revit in combination with size information gleaned from the web which provided enough info to recreate the Edge. Here is a link to the model. 

Remember to check with your doctor before beginning an exercise regimen. 8~)

Tuesday, February 25, 2014

Revit Build Checker Version 8

Identify Revit Builds Painlessly 

Here is a repost of an old tool recently updated for Revit 2014...

I thought you might be able to use a tool to identify what Revit build is sitting on your pc. If so, continue reading...
  1. Are you a CAD/BIM manager responsible for installing and updating Revit on multiple computers?
  2. How about a quick way to check all the Revit Build Numbers on each computer without actually launching Revit?

Sounds good right? Download the zip file containing a short vbscript routine and run it on each machine that has Revit installed. It will display a web page with all the build information for each Revit product installed. It will look more or less like the image shown below.

Want to capture info from multiple computers?

  1. Search the code for the following string: "c:\BTC\revitbuild.log"
  2. Replace it with a path to file somewhere on your network.
  3. Make sure to create the file in the appropriate folder
  4. Every machine that runs the script will now append it's info to the log file.

Lather, rinse, repeat....

Thursday, January 30, 2014

Flush your Undo - AutoCAD

As I roll out the 2014 versions of Building Design Premium, a designer sent me the following warning message from AutoCAD:
Warning! The undo file length is 1569321556 bytes.  Undo will be automatically disabled at 1750000000 bytes to prevent overflow...

Although I'm not sure what an UNDO Overflow would look like, rather than soil the carpets with all those abandoned and rolled back activities, I decided to investigate further.  I recommended that the designer saveas to ensure no data was lost and then began an investigation.

The solution:
  1. Use Saveas to write the file back to the harddrive or network location in case of a potential fatal error.
  2. Clear out the temp folder - Use %temp% in the file dialog and delete files found.
  3. Flush the Undo register - Type Undo - C - All
For more info refer to this Autodesk technical reference.

Thursday, February 16, 2012

Edit Groups Containing Floors to Align Surface Patterns in Revit

TIP: You must edit groups containing surface patterns to prevent the whole group moving when using the align tool to align surface patterns. 

Be aware of what aligns when using the align tool to align surface patterns when surface is part of a group.  The align tool does not effectively isolate the surface pattern poche if the element is part of a model group, rather the align tool will actually move the entire group to align instead of the surface pattern of the highlighted element.

Problem:  Designer wished to align two adjacent tile floor patterns in Revit 2012.  Watch as the align tool is used.

  When the second alignment pick is chosen to move the floor pattern in rm 103 in alignment with rm 107, the following occurs.

The result of the alignment tool is that the entire group has been moved rather than the surface pattern that was clearly selected.  Note the tooltip.

But, if you first choose to edit the group, you can pick outside of the group and effectively align the surface patterns as desired.

The final result is what was intended all along. Hope this helps someone out there.

Friday, February 03, 2012

Fixing Revit Topo Sub-Regions

Today, I ran into an issue with sub-regions in Revit topo surfaces and thought I'd share the quick fix with you.  Have you ever created subregions of a topo and at some point realized that you've in-advertantly created holes in the topo where you intended to create different material conditions. As shown in the image below, some grassy regions seemed to be displaced.

I found that if I deleted the grassy region by simply selecting the objects below the main topo surface, that I had to re-create new sub regions as it simply returned the "hole anomaly" shown in white on the surface back into the default brown region of the topo.  But if I edited the surrounding sub-region and removed the internal sketchlines, the hole disappeared and my grassy region returned.


When I noticed that selecting the surrounding region also selected the misplaced regions (they were highlighted in light blue as shown above), I chose Edit Boundary and tried deleting the internal or duplicated loops as shown in the image below.

The end result was the correct fix as it resulted in restoring my grassy regions to their correct location without having to recreate the outlines.  The corrected sub regions are shown below.

Friday, January 27, 2012

Auditorium Seating via Rail Object in Revit

While helping a designer with a new chapel project, ran into an issue of how to layout auditorium seating on a sloped radial floor in Revit Architecture 2012.  Things we wanted to accomplish included, easy and controlled layout via straight line segments and via curved arcs.  We also wanted to have a running count of seats via schedule.

My first thought was to curtain walls and use the system panel family to host the chair. This worked fairly well until the seating had to share arm rests.  Although you can host a detail component in the mullion profile family as an option for displaying the arm rest in 2D, it does not allow for nesting 3D Arm rest geometry in the mullion profile family.  Although, for quick plan view layout, seat counts, and ease of creation, this method worked quite well and would work very well in 3D as long as arm rests were not required.

Since this project called for seating with armrests, we resorted to a railing object with nested chairs as baluster panels, and nested arm rests as baluster posts. This allowed us to control the seat size, spacing and placement of armrests along any type of sketch line, curved or straight.  Endpost offsets allowed for control of the arm rest on the ends. Locking the sketchline to grids allowed the designer to change the length or radius as necessary while the chairs simply updated to match.

We ended up with 6 railing types, 3 for floor mounted and 3 for wall mounted chairs. Materials are handled in the nested geometry families and each chair has 3 different parametric sizes (20, 21, 22 O.C.).  based on Series Seating Celebration model.

Generic Model templates were used to create the support posts in two types, wall mounted and floor mounted as shown above.  This gm family was then nested into the Baluster post family and loaded into the project for railing type creation.

Again gm family templates served as the starting point for the seat geometry, which was then nested into the baluster panel family.  Doing both posts and seats as independent geometry in generic model families kept them flexible for future use and allowed for some testing in hosted families. Modeling was kept minimal while matching overall shape and style.  Each family starts as simple 2D geometry for flexibility and efficiency.  Updating 2d graphics and adding refinements in 3D are easy to accomplish as necessary.

As the design progressed, we ran into issues with the railings not hosting to the sloped floors. It is not as simple as editing the railing and picking the floor object as host.  My favorite command, align, was not much help either.  It seems that railing objects host to floors unless the floor is sub-entity modified.  Since many of the floors were sloped in this way or via sweeps, the hosting was accomplished via very thin "ramp" elements which effectively control things vertically while maintaining the horizontal control via grid elements. 

To hide the redundant ramps, we moved the ramps to the "constraints" phase and demolished it in the "hide by demo" phase, both of which precede the "existing phase" and thus don't appear in new construction views.  This is based on a tip I learned at AU 2011 in an interiors class taught by Steve Brown.

Seat counts are controlled by dividing the railing length by the center line spacing of the seat size within a calculated field in the Chapel Seating Schedule (a railing schedule).  Format was set to integer and the formula in the calculated field was wrapped in the round() function.  Originally, the round down function, new to Revit 2012, was used to force a seat count.  Because the railing seems to default to always round up graphically, I found that the round() function actually matched the graphics to the count more accurately.

Tuesday, January 17, 2012

Some Unity3D goodness - Scripts for Adding Lights

Learning to write scripts for assistance in editing/adding geometry within Unity3D is a must for anyone bringing in models from Revit or 3DSMax for Architectural Walkthroughs.  One particular pain point is putting in all the lights or the lights that you wish to cast light within your "game".  To use these scripts add an Editor folder under the assets folder in your Unity3D project folder.  Once they scripts are copied to this folder, you see new options in the "Game Object" pulldown menu item.  Select some light geometry, for example, some lamp shades in your scene, then click on Game Object - Add pt lights ^n from the menu pulldown.

The results will be a child game object component added to each of your selected geometry objects with the same position as the parent object. Also, because it is a child component, it will move should you reposition the light.

Note: a few objects might require tweaking.

 Here are a couple of scripts:
  1. Add point lights - This script will add a point light with the name "_pointlight" with the same transform position as a selected light geometry within the Unity3D editor.
  2. Add spot lights - This script will add a spot light with the name "_spotlight" with the same transform position as the selected light geometry within the Unity3D editor. 
Note: the light cone is automatically rotated down and is useful for downlighting. 

Monday, October 31, 2011

Old Revit Problem Resurfaces - 3D Views with Shaded and Wireframe graphics

Ever had a Revit view that displayed some entities in wireframe while correctly displaying other entities in full shade or realistic mode?  I thought this "feature" had been resolved, since I hadn't run into it in ages, but was asked to fix this issue today by a designer.  This problem is best shown in the image below, but could be described as wireframe graphics in a shaded mode. 

Notice the image above: All the building components are displayed in transparent wireframe mode, yet the view type is set for shaded. Switching to hidden line still displays bldg objects in transparency as shown in the second image.

Conventional wisdom from previous releases involved deleting the view and recreating it.  Unfortunately, that didn't work in this project.  Neither did resetting the view using the view cube!

Note:  I've checked the transparency of materials and verified that ghosting and transparency are not at work here. 

Because this was associated with a problem orbiting, I suspected CAD to be at the root of the problem.  Turning off the cad import, which had geometry far from the origin, did not fix the problem, but it did resolve the orbit issue.  With the orbit issue resolved, I thought I would try resetting the view.  Right click on the design cube and choose "orient to a direction" -> TOP.  Now the view is fixed. 

Hope this helps someone else!

Thursday, September 08, 2011

Autodesk Building Design Premium Deployment Modification - Verticals First

I had to revisit some deployments I created recently to modify some content locations.  On any deployment that had both AutoCAD and an AutoCAD based vertical package (ACA or MEP), the deployment modification routine would hang when I tried to modify either the ACA or AMEP product if I had modified the support paths in the AutoCAD versions (AutoCAD or Struc Designer) first.

I was able to restore the paths to default by modding the AMEP, then ACA, then Struc designer, then AutoCAD.  If you run into this, try modding the paths in the above order.

Monday, August 22, 2011

Hatch Origins to the Rescue

Problem:   A designer calls and asks for a new hatch pattern for gravel.  Further inspection reveals that the standard gravel pattern was used, but when viewed it looks like many random intersecting lines rather than the rounded gravel pattern they were expecting.

Solution:  Pick the hatch pattern and use the edit hatch command. Pick a new origin point close to the hatch object. Click ok and watch your hatch magically restore itself.

Sometimes, hatch patterns do not display correctly when their origin point is a large distance away from the hatch itself. This occurs frequently in metric - imperial conversions.

Note: Watch out for masonry patterns. Ensure your new origin displays the correct masonry coursing.

Tuesday, May 24, 2011

Revit Tip - Wheel Mouse - Adjusts text HEIGHT while editing

Are you editing or placing text in Revit, but need to change the height of the text in the editor because it is too small or too big?  Try holding your Ctrl key down while spinning the mouse wheel. 


The result is a temporary size adjustment to the text in the editor.  Don't worry, the change is only displayed while editing.  Once you finish your edits, the text entity will return to its normal size.

Exploded Attribute Text will not be visible when referenced

Remember to check your "Insert" options when bringing in blocks with attributes. You NEVER want to insert those type of blocks with the "Explode" option still toggled on.  Nevertheless, this is a frequent hurdle for designers who are not as familiar with attributes as they SHOULD be.

What is confusing for designers is the fact that they can see the text and think it is a value, but it is typically the attribute tag they are seeing.  The typical steps they take to resolve before requesting assistance include:
  • They double check the entity layer, and find it on a plotting layer
  • They check the reference layer and find that it is thawed, on, and plottable.
  • It is visible in the drawing (xref file) where it is placed, but when that dwg is externally referenced into another file, the text values do not show.
Quick Fix:  Copy the tag name to the "default" value text box when editing the attribute definitions, then cut the definitions to the clipboard and reinsert using "Paste" as block.  Save your file, reload the xref, and your text will magically appear.

Best Practice:  Understand the difference between simple text/mtext and attributed blocks. Ensure that you don't inadvertantly leave the "explode on insertion" option toggled on in the Insert block dialog box.

Thursday, April 28, 2011

Revit - View Layering for Softer Proposal Images

I was asked to generate some color images from a recent Revit project created by one of our talented designers today.  The recipient didn't like the look of the shaded plan view, so the image was bound for photoshop to add some softer shadows and text.  Seems the original designer was having difficulty getting the look just right.  This is the original image:

"Not good enough, too harsh", was the response I heard.  "I want more texture and a softer look."  Oh yeah, and it had to match the slight axo images already provided. Like this:

 and like this:
...seemed easy enough, just generate a plan view 3D view.  The effect is close, but the graphics are all wrong!  Notice the door swings are not visible, and the frame looks odd.  The soft shadows are courtesy of ambient occlusion being toggled on.  Setting the in session lighting to Azimuth: 185.00 and Altitude: 5.00 degrees respectively relative to view accomplished what you see below.

To further tweak the look by introducing plan view swing graphics, I did the following:
  1. Turn off Doors Category
  2. Activate the Section box and drop the top just below the top edge of the door frame.
  3. Drag this new doorless view onto a blank sheet.
  4. Duplicate a plan oriented, hidden line mode, 2D view and then turn off everything but the door graphics.
  5. Drag this new view on top of the 3D view on my sheet watching to ensure that Revit Aligns the views. Ensure that both views are set for the same scale and look for the light blue alignments horizontally and vertically (I embellished the alignments in the image below).
I also created a second plan view with solid filled walls and overlaid it in the same manner to achieve the look below.  You could turn on the room tags and add any notes as desired.  I left the annotation up to the person working in photoshop.

Hope you find this useful!