Column vs opening intersect

The intersection between the column and the wall opening is not working as expected. Could you please help me identify where I might be going wrong?

Hi @VijayS these nodes expect only geometry

1 Like

Okay, it seems the other input is incorrect.

not really sure what you are after, but try element solid node before feed in

2 Likes

In the wall openings branch you extract geometry (points). But in the columns branch you are stopping at a flattened list of elements.

As such your Geometry.DoesIntersect and Geometry.Intersect nodes are trying to work with elements as one of the two inputs, and as elements are not geometry this is failing. The warnings say something like “expected objects of type… but got objects of type…”, so it’s telling you 'hey I cannot give you the eye color of a tree as trees don’t have eyes".

Put a geometry extraction method (i.e. Element.Solids as @sovitek mentioned) between the columns and the geometry tests and you should have a start point. However I don’t think that is what you want, as a 2m wide window can intersect a LOT of 0.5m columns without having the insertion point intersect. Element.Solids in place of the GetLocation might help solve this, but as noted by @sovitek we need to understand what you’re really after to start with.

Edit to account for the post which came in while I was typing: are you provided family instances or family types for the columns?

2 Likes

Hi, I think he’s looking for the contact zone between the virtual solid occupied by the opening and the solid of the column.


edit:

if direction sought

Sincerely,
Christian.stan

1 Like

Still not working. Please advise.

Hi,
You seem to be having trouble obtaining solid (maybe resolution or something else).
Here’s a workaround (with raybounce).

def findcol(o,vie)
{
fi=FamilyInstance.GetHost(o);
l=Revit.Elements.Element.GetLocation(fi);
v=Line.Direction(l);
vn=Vector.Normalized(v);
vnr=Vector.Reverse(vn);
a=[vn,vnr];
boundingBox1 = Revit.Elements.Element.BoundingBox(o);
point1 = BoundingBox.MaxPoint(boundingBox1);
point2 = BoundingBox.MinPoint(boundingBox1);
line1 = Line.ByStartPointEndPoint(point1, point2);
point3 = Autodesk.Curve.PointAtParameter(line1, 0.5);
rb=RayBounce.ByOriginDirection(point3,a,1,vie);
return=List.Flatten(Dictionary.ValueAtKey(rb,"elements"));
};

Sincerely,
Christian.stan

1 Like

Can’t help what we can’t recreate. Please post the graph and sample RVT to reproduce the situation, otherwise we’re just guessing as to why you aren’t getting geometry from the family. Some optional guesses:

  1. The family type doesn’t have any geometry due to how it’s built
  2. The family instance’s geometry doesn’t yet exist in the document as it’s just been placed so you need to close the transaction to force a refresh
  3. The family type doesn’t return geometry at the standard detail level
  4. The family instance isn’t valid for geometry due to the utilized placement method (i.e. you’re placing a column so you need a line based method)
  5. All of the above or some partial combination thereof
2 Likes