SpotElevation with Clockwork

revit
clockwork

#1

Hi guys! This is my first post here… Hope someone can help me… I have a topography where I need to place SpotElevations every 4-5 meters. I created the grid with some detail lines so I need the SpotElevations to be in the intersections of all of them (around 380 points). That is not possible to do it directly in Revit so I’m trying with Dynamo. I could succesfully find the intersections but when I want to place SpotElevations through Clockwork’s node there are two inputs (Bend and End) that I have no idea what to connect to them and the description only says ‘Vector’ but everything I tried returned an error (Asked to convert non-convertible types). Has anybody done this previously? Any idea?


#2

Hi xtianriv,

I have been searching for a way to place spot elevations on topography at specific points as well and came across the some of the same problems. Bend and End are for determining the behaviour of the leader and shoulder for the spot elevation symbol and are not the issue in this case as you have hasLeader set to false.

The Clockwork node is looking for Faces:

Faces work for categories such as Ceilings, Walls, Floors etc but topography is composed of meshes and so cannot be found using the face enumeration. The Revit API offers some alternative targets including Mesh and All.

Unfortunately, it doesn’t seem to be as simple as adapting the Clockwork node to look for Mesh or All. I also tried these targets in C# and I was able to establish the reference to the topography but at the point where I tried to place the spot elevation I got the error:

Autodesk.Revit.Exceptions.InvalidOperationException: Error occurred when creating Spot Dimension!

The documentation suggests that an exception will be thrown if

the reference is not valid or the point cannot be projected to reference correctly

I tested the ElementReferenceType and it was returning REFERENCE_TYPE_NONE which indicates the whole object as opposed to REFERENCE_TYPE_MESH. I think this is where the error is and I can’t see an immediate way around it.

However, I did come up with a rough workaround using Dynamo. Place a spot elevation on your topography (exact position doesn’t matter, you can delete it afterwards) and then use this definition which makes use of Clockwork’s Element.CopyByVector to copy the spot elevation to desired points. In my case, I wanted spot elevations at the topography points but you could adapt it easily to do a regular grid of points across the topography instead (making sure none of the points were outside the topography

Hope this helps,
Thomas