<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: Compute Intersection Volume in Revit API Forum</title>
    <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8747597#M43212</link>
    <description>&lt;P&gt;&lt;SPAN&gt;Dear Jorge,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Thank you for your new query.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I get the impression from the animated GIF image that you can determine whether the slab is joined to the footing or not by calculating their mutual intersection:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;No intersection --&amp;gt; joined&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Non-empty intersection --&amp;gt; unjoined &lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;But I suppose you already thought of this yourself and have good reasons why this approach cannot be used.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;When you say 'trigger' do you mean you need to react when the slab switches from one state to the other?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;What is the full context, please?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Jeremy&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
    <pubDate>Tue, 23 Apr 2019 13:51:45 GMT</pubDate>
    <dc:creator>jeremytammik</dc:creator>
    <dc:date>2019-04-23T13:51:45Z</dc:date>
    <item>
      <title>Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8715679#M43193</link>
      <description>&lt;P&gt;Hi All,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I'm trying to compute the intersection volume of the collision of beams, columns, walls, floor slabs, and foundations. Searching the forum I found this topic:&lt;/P&gt;
&lt;P&gt;&lt;A href="https://forums.autodesk.com/t5/revit-api-forum/check-intersection-between-solid-objects/m-p/7467536#M25786" target="_blank"&gt;https://forums.autodesk.com/t5/revit-api-forum/check-intersection-between-solid-objects/m-p/7467536#M25786&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;#region #### Se prueba la intersección de geometrias - TEMPORAL #### 

            List&amp;lt;Solid&amp;gt; solids = new List&amp;lt;Solid&amp;gt;();

            foreach (Element e in elementos)
            {
                solids.Add(get_solid(e));
            }

            Solid col_solid = solids[0]; // Column
            Solid beam_solid = solids[1]; // Beam
            Solid fslab_solid = solids[2]; // Floor Slab

            Solid interSolid = BooleanOperationsUtils.ExecuteBooleanOperation(col_solid, fslab_solid, BooleanOperationsType.Intersect);
            if (Math.Abs(interSolid.Volume) &amp;gt; 0.000001)
            {
                TaskDialog.Show("debug", "intersecting");
                return;
            }

            Solid unionSolid = BooleanOperationsUtils.ExecuteBooleanOperation(col_solid, fslab_solid, BooleanOperationsType.Union);
            double dArea = Math.Abs(col_solid.SurfaceArea + fslab_solid.SurfaceArea - unionSolid.SurfaceArea);
            if (dArea &amp;lt; 0.00001 &amp;amp;&amp;amp; col_solid.Edges.Size + fslab_solid.Edges.Size == unionSolid.Edges.Size)
            { TaskDialog.Show("debug", "not intersecting, not touching"); }
            else { TaskDialog.Show("debug", "touching"); }

            #endregion&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;I implemented this on my code, but for the "interSolid" I get &lt;STRONG&gt;Volume = 0,&amp;nbsp;&lt;/STRONG&gt;and I'm intersecting the floor slab with the column. The results for the "intersection" between Column/Beam throws the same result.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Intersection.gif" style="width: 741px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/623813i891C5D89153EB4B1/image-size/large?v=v2&amp;amp;px=999" role="button" title="Intersection.gif" alt="Intersection.gif" /&gt;&lt;/span&gt;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;What am I missing here? Has someone managed to compute the intersection volume between elements?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;Any tip of advice will be very well received!&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;SPAN style="font-family: inherit;"&gt;Regards!&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 08 Apr 2019 19:09:04 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8715679#M43193</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-04-08T19:09:04Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8715860#M43194</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Dear Jorge,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Thank you for your query.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;As far as I can see from your GIF animation, the floor and column do not intersect, since the column solid volume has a piece cut out of it for the floor to slot into. Hence, there is no intersection between those two.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I assume the same applies to the beam and column as well. The beam has been cut back, so there is no intersection with the column.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;This virtual reality corresponds well to the real world, as you would expect from a BIM system, which is attempting to model the real world as precisely as possible.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;You cannot have a floor and a column in the same place at the same time, because physics prevents two different solid objects from occupying the same volume in the universe.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I hope this helps.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Jeremy&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Mon, 08 Apr 2019 20:07:36 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8715860#M43194</guid>
      <dc:creator>jeremytammik</dc:creator>
      <dc:date>2019-04-08T20:07:36Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8715914#M43195</link>
      <description>&lt;P&gt;I reproduce the same case and I got the expected result.&lt;/P&gt;
&lt;P&gt;If the column and slab have different material, there is an intersection because it doesn't join each other.&lt;/P&gt;
&lt;P&gt;If they have the same material, they join each other and there will be no intersection.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In your case, the material is the same so you get &lt;STRONG&gt;0&lt;/STRONG&gt; intersection volume.&lt;/P&gt;
&lt;P&gt;But in any case, there is union and same surface area.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I hope this helps,&lt;/P&gt;
&lt;P&gt;Recep.&lt;/P&gt;</description>
      <pubDate>Mon, 08 Apr 2019 20:25:53 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8715914#M43195</guid>
      <dc:creator>recepagah12</dc:creator>
      <dc:date>2019-04-08T20:25:53Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716017#M43196</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/413917"&gt;@jeremytammik&lt;/a&gt;&amp;nbsp;,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks for your reply. I&amp;nbsp;understand what you mean, but this cutback in the column was made automatically (which is correct).&lt;/P&gt;
&lt;P&gt;Although,&amp;nbsp;those 2 elements (column and floor slab) do intersect from construction and I need to compute this "intersecting" volume.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Intersection Floor Slab.gif" style="width: 741px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/623870iD955307B80ABF5D9/image-size/large?v=v2&amp;amp;px=999" role="button" title="Intersection Floor Slab.gif" alt="Intersection Floor Slab.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;I agree that the 3D representation is correct, but the reason that I'm looking for this volume is that in my country, we have certain regulations that the concrete volumes in the project are computed differently than how Revit does this job. This means, for example, that floor slabs have the least priority from the structural usage, so primarily volume computation is assigned to vertical elements (columns, walls), then horizontal (beams) and finally&amp;nbsp;to Floor-slabs.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="image.png" style="width: 540px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/623871i9F168A5FF1F3CD9D/image-size/large?v=v2&amp;amp;px=999" role="button" title="image.png" alt="image.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;In Revit, the &lt;STRONG&gt;red box's volume&lt;/STRONG&gt; is only counted one time by the floor slab. This volume is subtracted for the column, which is OK.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I need that volume to be &lt;STRONG&gt;virtually&lt;/STRONG&gt;&amp;nbsp;&lt;STRONG&gt;subtracted to the floor-slab&amp;nbsp;&lt;/STRONG&gt;&amp;nbsp;(in terms of quantities) and added to the column.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Hope it clarifies what I'm looking for. I know that Revit&amp;nbsp;does the calculations properly, but I need them to be delivered in a particular way.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Any tip of advice on how to get this geometry would be very well received.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks in advance for your time!&lt;/P&gt;</description>
      <pubDate>Mon, 08 Apr 2019 21:22:27 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716017#M43196</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-04-08T21:22:27Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716020#M43197</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/5535549"&gt;@recepagah12&lt;/a&gt;&amp;nbsp;,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks a lot! I'll try to assign different materials to this couple of elements in a transaction, then compute the volume and store the result, so finally, I'll do a rollback. I'll post here my results &lt;span class="lia-unicode-emoji" title=":grinning_face_with_smiling_eyes:"&gt;😄&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks!&lt;/P&gt;</description>
      <pubDate>Mon, 08 Apr 2019 21:25:10 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716020#M43197</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-04-08T21:25:10Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716050#M43198</link>
      <description>&lt;P&gt;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/5535549"&gt;@recepagah12&lt;/a&gt;&amp;nbsp;I replicated my code with your suggestion, so I manually changed the material for the slab, but I'm getting the same result (Volume = 0).&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;public Solid get_solid(Element ele)
        {
            Solid salida = null;

            Options opt = new Options();
            opt.ComputeReferences = true;
            opt.DetailLevel = ViewDetailLevel.Fine;

            GeometryElement geomElem = ele.get_Geometry(opt);

            foreach (GeometryObject geomObj in geomElem)
            {
                double vol = 0;

                if ((geomObj as Solid) != null)
                {
                    vol = (geomObj as Solid).Volume;
                }

                if (vol != 0)
                {
                    salida = geomObj as Solid;
                }
            }

            return salida;
        }&lt;/PRE&gt;
&lt;P&gt;I'm guessing that maybe the method I created to get the solid from the element is returning some weird Solid. I checked the volumes for solids before the comparison, and they correspond with the volumes shown by "Volume" parameter in Revit.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Any guess?&lt;/P&gt;</description>
      <pubDate>Mon, 08 Apr 2019 21:43:18 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716050#M43198</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-04-08T21:43:18Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716087#M43199</link>
      <description>Did you join the elements when applying the same material?
Sometimes Revit doesn't automatically join elements. Try to join them then calculate the volume.

Try this solid converter method.
That's the only code differs from yours. All others are the same. 

Sorry for the not enclosed code snippet. When writing message today I can't edit even in Rich text.

/// &lt;SUMMARY&gt;
        /// Return the solid geometry of an element.  
        /// &lt;/SUMMARY&gt;
        /// &lt;REMARKS&gt;Makes an assumption that each element consists of only one 
        /// positive-volume solid, and returns the first one it finds.&lt;/REMARKS&gt;
        public static Solid GetGeometry(GeometryElement geomElem)
        {
            foreach (GeometryObject geomObj in geomElem)
            {
                // Walls and some columns will have a solid directly in its geometry
                if (geomObj is Solid solid)
                {
                    if (solid.Volume &amp;gt; 0)
                        return solid;
                }

                // Some columns will have a instance pointing to symbol geometry
                if (geomObj is GeometryInstance geomInst)
                {
                    // Instance geometry is obtained so that the intersection works as
                    // expected without requiring transformation
                    GeometryElement instElem = geomInst.GetInstanceGeometry();

                    foreach (GeometryObject instObj in instElem)
                    {
                        if (instObj is Solid solidq)
                        {
                            if (solidq.Volume &amp;gt; 0)
                                return solidq;
                        }
                    }
                }
            }
            return null;
        }</description>
      <pubDate>Mon, 08 Apr 2019 22:06:10 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716087#M43199</guid>
      <dc:creator>recepagah12</dc:creator>
      <dc:date>2019-04-08T22:06:10Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716098#M43200</link>
      <description>Sorry for really bad code layout.

Please look attached file.</description>
      <pubDate>Mon, 08 Apr 2019 22:11:18 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716098#M43200</guid>
      <dc:creator>recepagah12</dc:creator>
      <dc:date>2019-04-08T22:11:18Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716116#M43201</link>
      <description>&lt;P&gt;Thanks&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/5535549"&gt;@recepagah12&lt;/a&gt;! It was the "Unjoin" that I needed to do before checking. I'll create a transaction that "unjoins" the elements and compute the volume and finally rolls back. I'll stop here when I implement this in my code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Again, thanks!&lt;/P&gt;</description>
      <pubDate>Mon, 08 Apr 2019 22:18:08 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716116#M43201</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-04-08T22:18:08Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716119#M43202</link>
      <description>&lt;P&gt;Thanks!, It was just fine before! Thanks for your time.&lt;/P&gt;</description>
      <pubDate>Mon, 08 Apr 2019 22:19:42 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716119#M43202</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-04-08T22:19:42Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716558#M43203</link>
      <description>&lt;P&gt;There may be no need to unjoin.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Look at these two methods on the&amp;nbsp;GeometryInstance class:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;GetInstanceGeometry -- Computes the geometric representation of the instance -- &lt;A href="https://apidocs.co/apps/revit/2019/22d4a5d4-dfc2-7227-2cae-b989729696ec.htm" target="_blank"&gt;https://apidocs.co/apps/revit/2019/22d4a5d4-dfc2-7227-2cae-b989729696ec.htm&lt;/A&gt;&lt;/LI&gt;
&lt;LI&gt;GetSymbolGeometry -- Computes the geometric representation of the symbol which generates this instance -- &lt;A href="https://apidocs.co/apps/revit/2019/7daa0e66-9921-3214-91f4-028e8cfd2618.htm" target="_blank"&gt;https://apidocs.co/apps/revit/2019/7daa0e66-9921-3214-91f4-028e8cfd2618.htm&lt;/A&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you use the former, you get the cut geometry.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The latter returns the uncut geometry with no need to unjoin.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Can you confirm?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thank you!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Cheers,&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Jeremy&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 09 Apr 2019 06:26:05 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716558#M43203</guid>
      <dc:creator>jeremytammik</dc:creator>
      <dc:date>2019-04-09T06:26:05Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716574#M43204</link>
      <description>&lt;P&gt;In fact, maybe all you need to compute is the difference between the column symbol geometry and instance geometry.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;  red volume = symbol geometry - instance geometry&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 09 Apr 2019 06:39:54 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8716574#M43204</guid>
      <dc:creator>jeremytammik</dc:creator>
      <dc:date>2019-04-09T06:39:54Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8717421#M43205</link>
      <description>@Anonymous, thanks for your aproach. I'm trying to get the Geometry Instance for the elements involved, but I'm getting "null" so I can't get the GetInstanceGeometry() nor GetSymbolGeometry(). I know that my error is in gathering the GeometryInstance, what am I missing here?




Thanks in advance!</description>
      <pubDate>Tue, 09 Apr 2019 13:10:39 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8717421#M43205</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-04-09T13:10:39Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8717422#M43206</link>
      <description>here is the code when I'm computing the volume.</description>
      <pubDate>Tue, 09 Apr 2019 13:11:18 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8717422#M43206</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-04-09T13:11:18Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8717907#M43207</link>
      <description>&lt;P&gt;As the other approach, I created this code:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;using (Transaction tx = new Transaction(doc))
                                {
                                    tx.Start("UnJoin elements");

                                    //Se saca el sólido de la viga
                                    Solid solid_col = get_solid(columna);

                                    try
                                    {
                                        // Se hace un unjoin de los elementos a comparar
                                        JoinGeometryUtils.UnjoinGeometry(doc, losa, columna);
                                    }
                                    catch (Exception)
                                    {                                        
                                    }

                                    // Se crea un "Solid" con el volumen de intersección.
                                    Solid interSolid = BooleanOperationsUtils.ExecuteBooleanOperation(solid_col, solid_losa, BooleanOperationsType.Intersect);
                                    volume = interSolid.Volume;

                                    tx.RollBack();
                                    tx.Dispose();
                                }&lt;/PRE&gt;
&lt;P&gt;Here, I still get the volume = 0. My intuition is that I am not using &lt;STRONG&gt;JoinGeometryUtils.UnjoinGeometry &lt;/STRONG&gt;properly.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;What am I missing here?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks in advance&lt;/P&gt;</description>
      <pubDate>Tue, 09 Apr 2019 15:32:48 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8717907#M43207</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-04-09T15:32:48Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8718102#M43208</link>
      <description>&lt;P&gt;Hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/413917"&gt;@jeremytammik&lt;/a&gt;,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Searching on the web I found your &lt;STRONG&gt;Compatibility Methods &lt;/STRONG&gt;and declaration for&amp;nbsp;&lt;STRONG&gt;UnjoinGeometry2.&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;PRE&gt;double volume = 0;

                                using (Transaction tx = new Transaction(doc))
                                {
                                    tx.Start("UnJoin elements");

                                    //Se saca el sólido de la viga
                                    Solid solid_col = get_solid(columna);

                                    // Se verifica si los elementos estan con la propiedad "Join"
                                    if (JoinGeometryUtils.AreElementsJoined(doc, columna, losa))
                                    {
                                        // Se hace un unjoin de los elementos a comparar
                                        CompatibilityMethods.UnjoinGeometry2(doc, columna, losa); &amp;lt;&amp;lt;&amp;lt;&amp;lt; A

                                        //// Se hace un unjoin de los elementos a comparar
                                        //JoinGeometryUtils.UnjoinGeometry(doc, columna, losa); &amp;lt;&amp;lt;&amp;lt;&amp;lt;&amp;lt; B&lt;BR /&gt;

                                        Solid s1 = get_solid(columna);
                                        Solid s2= get_solid(losa);

                                        // Se crea un "Solid" con el volumen de intersección.
                                        Solid interSolid = BooleanOperationsUtils.ExecuteBooleanOperation(s1, s2, BooleanOperationsType.Intersect);
                                        volume = interSolid.Volume;
                                    }

                                    else
                                    {
                                        // Se crea un "Solid" con el volumen de intersección.
                                        Solid interSolid = BooleanOperationsUtils.ExecuteBooleanOperation(solid_col, solid_losa, BooleanOperationsType.Intersect);
                                        volume = interSolid.Volume;
                                    }

                                    tx.RollBack();
                                    tx.Dispose();
                                }&lt;/PRE&gt;
&lt;P&gt;Neither of the two ways (A or B) really "unjoins" my two elements. At this point, I don't really know what am I doing wrong... &lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If I &lt;STRONG&gt;UnJoin&lt;/STRONG&gt; elements manually in Revit, I get the desired result.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Any tip of advice will be very well received.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Regards!&lt;/P&gt;</description>
      <pubDate>Tue, 09 Apr 2019 16:25:20 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8718102#M43208</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-04-09T16:25:20Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8718169#M43209</link>
      <description>Finally! I managed to get the desired result. The issue was that I was trying to do the "Unjoin" and check intersection inside the same transaction. What I did, was to use 2 transactions. The first one to "Unjoin" elements them compute the volume and after that "Join" the elements back together. (Don't know why I can't paste the code here - don't have the option - so I attach my piece of code).

Hope it helps someone else!

Thanks to @Anonymous and &lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/5535549"&gt;@recepagah12&lt;/a&gt; for the time and help provided. If you have any comments about my solution, it will be very well received.

Regards!</description>
      <pubDate>Tue, 09 Apr 2019 16:51:06 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8718169#M43209</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-04-09T16:51:06Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8718484#M43210</link>
      <description>&lt;P&gt;I am glad you did it. When you say unjoin the elements via API it doesn't work, I was curious and tried myself and it is really interesting. I tried regenerating&amp;nbsp;the document even then I searched through API and realized the boolean operation don't get directly Revit Element, it gets a temporary copy. Because of that, you need 2 separate transactions.&lt;/P&gt;
&lt;P&gt;Your code seems true but I think you should create a transaction group and create 2 transactions inside it. So there will be an only one visible transaction in the redo/undo dropdown menu. And you can rollback the process with one undo.&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Have a good day,&lt;/P&gt;
&lt;P&gt;Recep.&lt;/P&gt;</description>
      <pubDate>Tue, 09 Apr 2019 18:48:34 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8718484#M43210</guid>
      <dc:creator>recepagah12</dc:creator>
      <dc:date>2019-04-09T18:48:34Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8747526#M43211</link>
      <description>&lt;P&gt;Hi All,&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Sadly, I'm back. I managed to compute intersection volumes for all of my elements despite the way they were created. Now, I'm looking for a property or parameter to trigger if the slab in joined like the model in the left or not joined like the model in the right.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Slab Joined.gif" style="width: 741px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/628932i2B9AB35224986439/image-size/large?v=v2&amp;amp;px=999" role="button" title="Slab Joined.gif" alt="Slab Joined.gif" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I used "&lt;STRONG&gt;JoinGeometryUtils.AreElementsJoined&lt;/STRONG&gt;" method to check if the slab element is joined to the footing element, but in both cases, I get "&lt;STRONG&gt;True&lt;/STRONG&gt;".&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Any tip of advice will be very well received!&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Thanks in advance&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 23 Apr 2019 13:24:28 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8747526#M43211</guid>
      <dc:creator>Anonymous</dc:creator>
      <dc:date>2019-04-23T13:24:28Z</dc:date>
    </item>
    <item>
      <title>Re: Compute Intersection Volume</title>
      <link>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8747597#M43212</link>
      <description>&lt;P&gt;&lt;SPAN&gt;Dear Jorge,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Thank you for your new query.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;I get the impression from the animated GIF image that you can determine whether the slab is joined to the footing or not by calculating their mutual intersection:&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;SPAN&gt;No intersection --&amp;gt; joined&lt;/SPAN&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;SPAN&gt;Non-empty intersection --&amp;gt; unjoined &lt;/SPAN&gt;&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;But I suppose you already thought of this yourself and have good reasons why this approach cannot be used.&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;When you say 'trigger' do you mean you need to react when the slab switches from one state to the other?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;What is the full context, please?&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Best regards,&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;Jeremy&lt;/SPAN&gt;&lt;/P&gt;
&lt;P&gt;&lt;SPAN&gt;&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 23 Apr 2019 13:51:45 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/revit-api-forum/compute-intersection-volume/m-p/8747597#M43212</guid>
      <dc:creator>jeremytammik</dc:creator>
      <dc:date>2019-04-23T13:51:45Z</dc:date>
    </item>
  </channel>
</rss>

