Place Spot Elevation in SectionView and change Type

Hello,

I can place a spot elevation in a PlanView with the clockwork node SpotElevation.by.Point

But it does not work in a SectionView.

Python code is from the node, you can see it doesn´t give any error.

Here is a post from @Andreas_Dieckmann where he says that it should work for SectionViews.

And here is the Code of the node:

import clr
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *

clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.GeometryConversion)

clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument
views = UnwrapElement(IN[0])
pts = UnwrapElement(IN[1])
bend = UnwrapElement(IN[2])
end = UnwrapElement(IN[3])
leader = UnwrapElement(IN[4])
isoview = UnwrapElement(IN[5])
intsecvec = UnwrapElement(IN[6])
elementlist = []

i = 0;
TransactionManager.Instance.EnsureInTransaction(doc)
for pt in pts:
	view = views[i]
	pt = pt.ToXyz()
	refintsec = ReferenceIntersector(isoview)
	refintsec.TargetType = FindReferenceTarget.All
	try:
		ref = refintsec.FindNearest(pt,intsecvec[i].AsPoint().ToXyz()).GetReference()
		elementlist.append(doc.Create.NewSpotElevation(view, ref, pt, pt.Add(bend.AsPoint().ToXyz()), pt.Add(end.AsPoint().ToXyz()), pt, leader))
	except:
		elementlist.append(None)
	i += 1
TransactionManager.Instance.TransactionTaskDone()

OUT = elementlist

And another Problem i can´t change the type of a SpotElevation because its not a string value. How yan i get the types?

Would appreciate any help :slight_smile:

1 Like

You can get your elements then get the parameters from that.

Get parmeter value by name << think this
image

Then you’ve got your parameter, not the name.

Hello Alien,

As you can see your solution would only work if elements with the specific type have already been placed in the project.
But i have found the right way to get the spot elevation types :slight_smile:

And this is how to change the type succesfully:

But still no idea how to place them :thinking:

So it does in fact work also in SectionViews! :smiley:

Amazing, it is just tricky to get the right points to place the SpotElevations!

But now i have another problem, in some of my Revit-Project placing spotelevations with dynamo does not work! Not in Planviews and not in SectionViews…I get no error, just nulls as result and I´m not making any mistake, manual placing the SpotElevations works fine so they are not hidden or something.

I don´t know what could be the problem…any thoughts on that?

Kind Regards :slight_smile:

2 Likes

Placing SpotElevations to colums is working great :smiley:

But again…only in some projects

Here are some clips:

New Revit-File, Section View:
ezgif.com-gif-maker

New Revit-File, StructuralPlanView:
ezgif.com-gif-maker (1)

All other Revit Projects:
ezgif.com-gif-maker (2)

And here is the DYN file if someone wants to test:

Spot Elevations3.dyn (61.4 KB)

Please mind that, in a new project, you have to create a 3D view before the clockwork node works.

Edit: opened an issue on github, maybe i get some help.
[Spot Coordinates · Issue #337 · andydandy74/ClockworkForDynamo (github.com)] Spot Elevations · Issue #338 · andydandy74/ClockworkForDynamo (github.com)

I found the problem! :smiley:
It is the Vector.Reverse node that is part of the Spot.ElevationByPoint node.

So in some Projects the view direction vector has to be reversed an in others not…
Any thougts about whats the reason for that?

So i just removed the node and now it works in all of my projects :slight_smile:

Also works for Spot.Coordinates:

So after more testing i have to give up on this. I thought removing this reverse.vector node is the solution to my problems but it is not. I have no idea why the placing works perfect in a new created project, but not in my existing projects. And then, in 5% of my tests it works for a few points.

Would really appreciate help if someone has more information on this topic, has ideas what could be the problem or would try to test in his projects.

:slight_smile:

I will dig into it. At our office, we typically start all of our projects from the same template; it may just be the trick to get the script to work just once, then it will run right every time.

1 Like

Is the updated node in the latest version of Clockwork?

Hello Daniel,

Would appreciate any help, this would be really important for me but i can´t get it working…will tackle this problem again in the next days.

We also use a company-template. It works in a new opened template, but not in the projects…

I think it has something to do with the coordinates of the element, because one time it did actually work but i could not reproduce it.

Updated node? What do you mean?

I was referring to the python post above, but it was able to place some spot elevations with the one in clockwork already.

As far as results, I am getting some very strange behavior.
I tried running the node in a section view of a wall and some floors. Depending on where I pulled the point from within the depth of the view, I managed to get one or two of the spot elevations to show up for the bottom of a floor.


I haven’t yet been able to pull of getting all floors at once. Sometimes I get one point’s elevation, sometimes I get a different point. Other times I don’t get any. It depends on where the point is within the depth of the view.
What is interesting is reference of the spot elevation; it is picking up the wall, not the floors.

I take that this is because of the view orientation node inside of the custom node.

1 Like

This hosting behavior is strange because you cannot manually place spot elevations just anywhere on a wall in a section. Revit simply will not let you.

I wonder if it would help if you could feed in the elements that you want to place the spot elevations on.

I also get different results when I pull out the Vector.Reverse node. Different points will get spot dimensions and others will not anymore. Unfortunately, the successes and failures do not completely reverse as well, so it’s hard to find a direct correlation that helps fix the problem. Some other issue is at work here. I wonder if there is a relationship between the view direction vector and how far a point is placed inside the element being tagged.

1 Like

This bit of python script seems odd to me.

	refintsec = ReferenceIntersector(isoview)
	refintsec.TargetType = FindReferenceTarget.All
	try:
		ref = refintsec.FindNearest(pt,intsecvec[i].AsPoint().ToXyz()).GetReference()

Shouldn’t it just be possible to plug a point in that is already in the right place?
Why do you need a 3D view to find the right reference?
It may be helpful to plug in the reference element directly. If you want to automate a spot elevation in a section, I would think that you would already know the element that you want to reference. Either way, there’s not a whole lot of code in this script. I suspect that the issue is in that section.

1 Like

Haha, thats a damn good question that i´m asking myselfe for a few month now :smiley:
I´m afraid I can´t be a big help with the code :confused:

But here is another thread where i found out which coordinates are even needed to place elevations in a sectionview.

https://forum.dynamobim.com/t/intersect-modelelements-with-detailline-to-get-points-for-spotelevations

1 Like

As you can see on github, Andreas Dieckmann has this on his to do list for the next release:

I tried to contact him a few weeks ago, without success^^

So let´s solve this @daniel1 :smiley:

I made a little test setup that creates a slab and places spot elevations.

  1. Creating a slab at 0,0,0 and placing spot elevations fails:

  1. Moving the slab to 10,10,10 before placing the spot elevations works:

  1. Moving the slab to -10,-10,-10 before placing spot elevations works too:

So these are results from my template, still can´t get it to work in my projects :confused:
Some more info:

ReferenceIntersector Class (revitapidocs.com)

NewSpotElevation Method (revitapidocs.com)

If the origin point is not on the reference, it’ll be projected to the reference automatically.

In a project, running the code on a big slab gives 6 spot elevation, anywhere:

Running it without reversing the vector gives 63 spot elevations:

Running it on a simple rectangular slab, nothing:

No results when running it on columns …

So there are no expected results but a lot of unexpected ones, what could that be about…

Running the code in a planview on the same slab gives 18 spot elevations, and again, anywhere, in particular in only 2 corners :smiley:

this is so random :rofl:

edit:

I changed the code so i can input the references myselfe:

Did not work but these references are far away from the column :thinking:

When searchin google for ReferenceIntersector Class there are so many results on other forums, maybe i will try to get some more infos there.

Those references are for the planes in the family. I’m not sure if you can even dimension to those manually. Maybe? We might get lucky though if we feed in the edge references instead. I think there’s a post on this forum about that somewhere :thinking:

1 Like