How does the Wombat Wall.ByCurveAndLocation Node actually work?

Hello people!

Like the titles says does anyone know how this node works?

The Revit API has a method called “Wall.Create” that creates a wall with its centerline on a given line.

https://www.revitapidocs.com/2020/3ef7e31c-b41b-c8cc-2713-8f098954613d.htm

However, I want to place the wall using its “Finish Face: Interior.” This node can place the wall on any given wall line, but I am not sure if it is possible to reverse engineer it.

I have attempted to place the wall and then move it, but I cannot seem to move it in the correct direction every time.

Has someone managed to reverse enigeer this?

I have attempted to place the wall and then move it, but I cannot seem to move it in the correct direction every time.

If the node does what you want, why not just use it?

My guess is that it is creating the wall at the center line, setting the location line to the correct face, and then moving the wall to the previous location line in one transaction.

1 Like

This node is a part of a much bigger script and it would make my life that much easier if would have it in python form. Easier flow control

…and I really wanna know how it works :sweat_smile:

You could try reaching out to @andrea.tassera to see if he can help :slight_smile: He maintains that package now, or @andrew_hypar the original author!

You can see code of dll with dnspy tool. Also consider SmartOffset in Wombat.
Also look into Wall ByCurveAndLevel from GenuisLoci package.
And WallFinishesByRoom from Modelical is good for learning.

Thanks for the tips! I did not know it is possible to look into a .dll :open_mouth:

The Node from GeniusLoci doesn’t quite manage to do the same as the Wombat node. It creates the wall and then it changes the LocationLine of the Wall. But the walls stays in the same place

Is it all about finishing making? Or other?

+1 this.

When I’ve used this process in the past in Python I read the thickness of the wall type and move the location line normal to the drawing plane before placing the wall, so effectively you create the wall anticipating where it would need to go for the centreline to end up being the location line.

I am using it to automatically place the faccade. According to out Firm standards we model concrete walls and facade separatly.

I tried moving the walls after the placement, but I can’t figure out how to always move the wall to the outside. Because normal can go both ways, so for some walls, the faccade was placed correctly but for some walls, it was placed on the inside.

I will have to take a better look

If I recall correctly the finish face interior should be on the left of the curve when drawn, been a while since I did it but I’m fairly sure the curve normal should be enough to know which way to offset the wall before creation and updating location line.

If you’re using wall location lines that are already drawn you may need to do an assessment of how they’ve been drawn first to ensure they’re going to be orientated predictably.

Look how it solved in WallFinishesByRoom in Modelical package. And MOD.Wall Finishes by Room in Synthesize.

Share bad and good walls, we’ll see how to make it right.
Revit 2022:
OFFSET.rvt (428 KB)
Offset correct.dyn (47.7 KB)

A simple Curve.NormalAtParameter seemed to solve my conundrum. I was overthinking it.

Thanks for your help and effort! Cheers

In my opinion Curve.Offset is a better direction to go with this than Curve.Normal. Well, assuming you’re using that normal to move the curve. Offset should always go one direction (can’t recall if it’s inside or out offhand so run a test), will be a single operation instead of two, and will keep curved wall geometry working correctly.

Sorry I was unclear on that before - poor choice of words.

Is there a comparable way or Node that works for placing a curve based wall, level to level, and with an option to control the leaderline ? (I.e. so that one does not have to use offset all the time )? Ideally this would also consider the direction of the curve, to orientate the wall. (To outside, to inside , mid)