<?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: How can I find a polyline that touches a region in a drawing without traversing it? in Civil 3D Customization Forum</title>
    <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13164199#M1008</link>
    <description>Yes, I will immediately attach an example picture.</description>
    <pubDate>Thu, 21 Nov 2024 00:17:00 GMT</pubDate>
    <dc:creator>rampseeker</dc:creator>
    <dc:date>2024-11-21T00:17:00Z</dc:date>
    <item>
      <title>How can I find a polyline that touches a region in a drawing without traversing it?</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13161509#M1004</link>
      <description>&lt;P&gt;Previously, to find a polyline that touches a region, we traversed the polyline list and performed the IntersectWith operation one by one to find the polyline that touches the region. Instead of this method, is there a way to find a polyline that directly overlaps a region?&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="FindPolylineIntersectwithRegion.png" style="width: 751px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1436593i47C75563E56FA04D/image-size/medium?v=v2&amp;amp;px=400" role="button" title="FindPolylineIntersectwithRegion.png" alt="FindPolylineIntersectwithRegion.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;----------------------------------------&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="2024-11-21082418-ezgif.com-video-to-gif-converter.gif" style="width: 480px;"&gt;&lt;img src="https://forums.autodesk.com/t5/image/serverpage/image-id/1436594iE7BDC6FA0BE2049A/image-size/large?v=v2&amp;amp;px=999" role="button" title="2024-11-21082418-ezgif.com-video-to-gif-converter.gif" alt="2024-11-21082418-ezgif.com-video-to-gif-converter.gif" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;This is the result when I run my code below. However, the problem is that it does not work properly with Regions and Polylines that are already in the drawing. Why is that so?&lt;/P&gt;&lt;P&gt; &lt;/P&gt;</description>
      <pubDate>Thu, 21 Nov 2024 00:32:22 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13161509#M1004</guid>
      <dc:creator>rampseeker</dc:creator>
      <dc:date>2024-11-21T00:32:22Z</dc:date>
    </item>
    <item>
      <title>Re: How can I find a polyline that touches a region in a drawing without traversing it?</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13163568#M1006</link>
      <description>&lt;P&gt;Can you attached example drawing&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Nov 2024 17:27:46 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13163568#M1006</guid>
      <dc:creator>hosneyalaa</dc:creator>
      <dc:date>2024-11-20T17:27:46Z</dc:date>
    </item>
    <item>
      <title>Re: How can I find a polyline that touches a region in a drawing without traversing it?</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13163813#M1007</link>
      <description>&lt;P&gt;You could use Brep to get the vertices of the region, then use those with SelectCrossingPolygon and a Polyline filter.&lt;/P&gt;</description>
      <pubDate>Wed, 20 Nov 2024 19:49:24 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13163813#M1007</guid>
      <dc:creator>Jeff_M</dc:creator>
      <dc:date>2024-11-20T19:49:24Z</dc:date>
    </item>
    <item>
      <title>Re: How can I find a polyline that touches a region in a drawing without traversing it?</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13164199#M1008</link>
      <description>Yes, I will immediately attach an example picture.</description>
      <pubDate>Thu, 21 Nov 2024 00:17:00 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13164199#M1008</guid>
      <dc:creator>rampseeker</dc:creator>
      <dc:date>2024-11-21T00:17:00Z</dc:date>
    </item>
    <item>
      <title>Re: How can I find a polyline that touches a region in a drawing without traversing it?</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13164214#M1009</link>
      <description>&lt;P&gt;Thank you for your kind reply! Thanks to you, I found a function called SelectCrossingPolygon. After converting Region to Point3dCollection, checking for overlap was performed very successfully. However, another problem arose: SelectCrossingPolygon was not performed properly with already saved regions and polylines. It works normally in the region and polyline I just created. Why is that so? Here is my code.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;LI-CODE lang="csharp"&gt;[CommandMethod("SelectPolylinesInRegion")]
public void SelectPolylinesInRegion()
{
    Document doc = Application.DocumentManager.MdiActiveDocument;
    Database db = doc.Database;
    Editor ed = doc.Editor;

    try
    {
        using (Transaction tr = db.TransactionManager.StartTransaction())
        {
            // Choose Region 
            PromptEntityOptions regionPrompt = new PromptEntityOptions("\nSelect a Region:");
            regionPrompt.SetRejectMessage("\nSelected entity must be a Region.");
            regionPrompt.AddAllowedClass(typeof(Region), true);

            PromptEntityResult regionResult = ed.GetEntity(regionPrompt);
            if (regionResult.Status != PromptStatus.OK) return;

            Region selectedRegion = tr.GetObject(regionResult.ObjectId, OpenMode.ForWrite) as Region;

            // Convert Region to Polyline3d
            Polyline3d polyline3d = ConvertRegionToPolyline(selectedRegion, tr);

            if (polyline3d == null)
            {
                ed.WriteMessage("\nFailed to convert Region to Polyline3d.");
                return;
            }

            // extract Polyline3d point
            Point3dCollection boundaryPoints = new Point3dCollection();
            foreach (ObjectId vertexId in polyline3d)
            {
                PolylineVertex3d vertex = tr.GetObject(vertexId, OpenMode.ForRead) as PolylineVertex3d;
                if (vertex != null)
                {
                    boundaryPoints.Add(vertex.Position);
                }
            }

            // Polyline3d delete
            polyline3d.UpgradeOpen();
            polyline3d.Erase(true);

            PromptSelectionResult selectionResult = ed.SelectCrossingPolygon(boundaryPoints);

            if (selectionResult.Status == PromptStatus.OK)
            {
                ObjectId[] selectedPolylines = selectionResult.Value.GetObjectIds();

                if (selectedPolylines.Length &amp;gt; 0)
                {
                    ed.WriteMessage($"\nSelected {selectedPolylines.Length} polylines within the Region.");
                }
                else
                {
                    ed.WriteMessage("\nNo intersecting or contained polylines found.");
                }
            }
            else
            {
                ed.WriteMessage("\nNo objects found within the polygon boundary.");
            }

            tr.Commit();
        }
    }
    catch (System.Exception ex)
    {
        ed.WriteMessage($"\nError: {ex.Message}");
    }
}

        private Polyline3d ConvertRegionToPolyline(Region region, Transaction tr)
        {
            DBObjectCollection regionBoundaries = new DBObjectCollection();
            region.Explode(regionBoundaries);

            Polyline3d polyline3d = new Polyline3d();
            BlockTableRecord modelSpace = (BlockTableRecord)tr.GetObject(region.Database.CurrentSpaceId, OpenMode.ForWrite);
            modelSpace.AppendEntity(polyline3d);
            tr.AddNewlyCreatedDBObject(polyline3d, true);


            foreach (DBObject obj in regionBoundaries)
            {
                if (obj is Line line)
                {
                    PolylineVertex3d endVertex = new PolylineVertex3d(line.EndPoint);
                    polyline3d.AppendVertex(endVertex);
                    tr.AddNewlyCreatedDBObject(endVertex, true);
                }
            }

            polyline3d.Closed = true;

            return polyline3d;
        }&lt;/LI-CODE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 21 Nov 2024 00:26:32 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13164214#M1009</guid>
      <dc:creator>rampseeker</dc:creator>
      <dc:date>2024-11-21T00:26:32Z</dc:date>
    </item>
    <item>
      <title>Re: How can I find a polyline that touches a region in a drawing without traversing it?</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13165224#M1010</link>
      <description>&lt;P&gt;hi&amp;nbsp;&lt;a href="https://forums.autodesk.com/t5/user/viewprofilepage/user-id/15547724"&gt;@rampseeker&lt;/a&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;if you looking for an algorithm instead of brutal force one, you can look up algorithm called &lt;STRONG&gt;Sweep Line&lt;/STRONG&gt; , also you might find another approaches in Computational geometry&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 21 Nov 2024 11:20:03 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13165224#M1010</guid>
      <dc:creator>essam-salah</dc:creator>
      <dc:date>2024-11-21T11:20:03Z</dc:date>
    </item>
    <item>
      <title>Re: How can I find a polyline that touches a region in a drawing without traversing it?</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13165791#M1011</link>
      <description>When using Editor.SelectXXXXX() (i.e. selecting with window/polygon/fence...). the selecting window/polygon/fence MUST BE WITHIN current view; other wise it would not "perform properly", as you stated. That is why the code you showed works, because the code ask user to pick a Region, which is visible in current view. If you use code to identify the region (so, it is not guaranteed to be visible within the current view), you should first zoom to the region before calling Editor.SelectXXXX().&lt;BR /&gt;&lt;BR /&gt;Also, using Editor.SelectXXXX() makes your code dependent to the current document's Editor and current view. YOu can use some kind of spatial indexing technique, such as QuadTree to quickly narrow down the polylines that may intersect with the region and only traverse much fewer polylines to perform IntersectWith() tests. This is a pure math/geometric approach performed on entities' geometric properties, it is quite fast and no dependency to other things (i.e. Editor...).&lt;BR /&gt;</description>
      <pubDate>Thu, 21 Nov 2024 15:12:03 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13165791#M1011</guid>
      <dc:creator>norman.yuan</dc:creator>
      <dc:date>2024-11-21T15:12:03Z</dc:date>
    </item>
    <item>
      <title>Re: How can I find a polyline that touches a region in a drawing without traversing it?</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13167202#M1012</link>
      <description>&lt;P&gt;Thank you for your kind reply. If you want to use the code above, you will either have to force the view to change to full view before using it, or look up something about QuadTree.&lt;/P&gt;</description>
      <pubDate>Fri, 22 Nov 2024 04:27:44 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13167202#M1012</guid>
      <dc:creator>rampseeker</dc:creator>
      <dc:date>2024-11-22T04:27:44Z</dc:date>
    </item>
    <item>
      <title>Re: How can I find a polyline that touches a region in a drawing without traversing it?</title>
      <link>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13167203#M1013</link>
      <description>&lt;P&gt;Thank you for providing direction. I guess I'll have to take a closer look at the matter.&lt;/P&gt;</description>
      <pubDate>Fri, 22 Nov 2024 04:28:40 GMT</pubDate>
      <guid>https://forums.autodesk.com/t5/civil-3d-customization-forum/how-can-i-find-a-polyline-that-touches-a-region-in-a-drawing/m-p/13167203#M1013</guid>
      <dc:creator>rampseeker</dc:creator>
      <dc:date>2024-11-22T04:28:40Z</dc:date>
    </item>
  </channel>
</rss>

