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:
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.
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.
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.
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.?
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.
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?
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?
@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.