Place Line-based Family (Specialty Equipment) on Room Boundary Lines

Good day users,

As a long time lurker (and a few basic scripts), now I’ve finally made the jump to make a topic.
The firm I work for has a particular workflow for Wall Finishes with a Line-based family (in Specialty Equipment) to ‘better’ highlight specific Wall Finishes.

Quick example of the final product see below, with some simple sample-files in the link:

https://we.tl/t-aApjp9mJzc

While we look for a better workflow, we try to automate this process so Revit-users don’t have to place individual Family Instances on all the different Room Boundaries. This is how far we got:

It does what we want, place a Family Instance along the Room Boundary, but it only places 1 instance at 1 Room Boundary (which is expected I guess?). Is there a way to make a ‘sequence’ of any kind to make it place instances on all of the found Room Boundaries (instead of making x-amount of the same List.GetItemAtIndex ‘work-around’)?

I’ve made a Code Block with 0…4; to feed the FamilyInstance.By Curve, but gives me null values back. Or do I need a different approach to this workflow/script?

PS; - Alternative script:
I’ve made a different script (which I aplty saved over myself, so I can’t share it…) which got the x-,y- and z-values from the boundaries, which I tried to reuse to place the Line-based elements. It kinda did what I wanted, but it only placed the elements along the ‘x-axis’ of the Project, almost at random (straight right from internal origin, and reported all 0’s for the coordinates).

I would love to hear what would be the better choice to make this script happen. If it’s above, let me know so I can recreate it and share it here.

Let me know if there is more info needed

So, I finally got back to this project.

Below is the other script I shortly described in the start post:

23000_Place-Speciality Equipment-Based-On-Room-Boundary-Coordinates_230626.dyn (46.1 KB)

I’ve tried to get where I wanted to in two different ways, both are in this script:
Way 1: I got the Start- and EndPoint from the Wall Boundaries, and tried to place these with FamilyInstance.ByPoint. It places the families with the right amount of families, but doesn’t use the X- and Y-coordinates extracted from the Room Boundaries.

Is there a way to get this behavior?

Way 2: I used Line.ByStartPointEndPoint to feed FamilyInstance.ByFace (with the Line-input), but that doesn’t place any Instances…

I hope there is someone who can help me out with this.
Seemed like an easy script to make, but my Rookie-ass can’t get it right.

you need both x.point and y.point from each start AND end point not just the x.point from the start point

Cheers for the reply, Marcel. I think I got what you said, see below:

Line.ByStartPointEndPoint lists some info now.
I still tried to continue with the FamilyInstance.ByFace, is this the best node/way to go? It reports a Empty list right now.

Or is it that the family I input to FamilyType not suitable for this script?

If I’m missing any logic for this, I would love to hear it.

Do all your Room boundaries lie on this single face?
Consider making your Wall finish family a Wall, all you need to do is join it with the host Wall to create all openings in it.

Is there a way to tell?
If I select the Room Boundaries, I see no output that shows me this in the instance parameters or contextual Modify tab.
I selected the topface of the floor that on the lowest level, and the Room Seperation lines are on that same level (as is the room).

I only added this face because the node needs that input, right? I rather have a way to do this without selecting a face (e.g., when we want to use this script over multiple levels). I used that node because it had line in it…

And thanks for that suggestion, we got a plugin that does that, so we got that part covered.
It’s just an ‘ancient’ workflow to make the Wall Finishes a bit more clear on drawings. It’s a workflow our designers are familair with, so I was thinking making an easy script so they can concentrate on what the wall finish is gonna be, instead of putting time in drawing these line-based families everywhere.

OMG it’s a 2D workflow!
:slight_smile:

Am trying to do the same before but I use Detail Line on my side… I didn’t have success on that also…

Following your thread.

Shh… don’t wake the BIM-gods, please.
But you’re right, unfortunately I haven’t convinced managment yet with a better workflow, just because it doesn’t resemble the old workflow close enough (basicly how it looks on pdf, which does matter at the end of the day).

@Revit_Noob, I think I’ve seen your thread as well, fingers crossed.
Is there a benefit using Polycurve over X- Y-coordinates, etc.?

1 Like

So, I tried a different route, basically I wanted to grab the midpoint of the Room Boundary, place the Family on that point, get the length and rotation after the fact and adjust the family after it has been placed.

See script below:

But with some testing, I still couldn’t place that particular family, but I could place a Generic Model family I had in the project. So I guess there is something with the family going on?

How do I know which node can place which family/category? Is there a way to tell in Revit/Dynamo?

Try creating a Line-Based Generic Model and change the Category to Speciality Equipment

No luck, unfortunaly. The GM family, from Family Placement Point, gets placed at the internal origin.

If the family is a Generic model, it gets placed at the internal origin of the project.
If the family is Specialty Equipment, it gets placed along the X-asis perpendicular from the middle point of the boundary line.

That has been pretty consistant with the other scripts/families, so I maybe I’m missing something in the interaction with Revit and Dynamo?

You need a line-based generic model family template to start with. (2 points needed for placement, start- and end-point)


The curve(line) between those points is what you feed the node
image

Nevermind, found it. Worked after restarting…

The family is GM line based, and I made a new one for testing (if there is a fault in the old one).

Yep, that was the problem. I should invested some time in finding the right node, instead of working around it…

Cheers for the help, Marcel, seems to work now.

1 Like

post the result? thanks

Can you share your script? needed this for my workflow also…

See below. There are some Dutch words in this script, so you have to adjust a couple of nodes.
23000_Place-Line-Based-Family-On-Room-Boundary-Coordinates_230629.dyn (61.5 KB)

@Revit_Noob It works with Detail Items as well (Line Based at least), but I think you have to adjust the script so that it places the families on the views you want to.

1 Like

Thanks will check this out and see it it works for me…