• Industries
  • Products
  • Buy
  • Services & Support
  • Communities
  • Discussion Groups

    .NET

    Reply
    Active Member
    Posts: 9
    Registered: ‎02-29-2012
    Accepted Solution

    Get Point Collection from 3dsolid

    205 Views, 4 Replies
    02-29-2012 03:49 PM

    I know this must be an easy answer, but for the life I me I can't find the method that returns a point collection for a given 3dsoild.  I have to think that a property exists that contains all the points for a solid (the ones shown when you select a 3dsolid).  I appreciate the help.  Thanks!

    Please use plain text.
    Moderator
    Alexander.Rivilis
    Posts: 1,168
    Registered: ‎04-09-2008

    Re: Get Point Collection from 3dsolid

    02-29-2012 10:36 PM in reply to: wein3967

    Solution: http://through-the-interface.typepad.com/through_the_interface/2008/09/traversing-a-3d.html


    Пожалуйста не забывайте про Утвердить в качестве решения!Утвердить в качестве решения и Give Kudos!Баллы
    Please remember to Accept Solution!Accept as Solution and Give Kudos!Kudos

    Please use plain text.
    Active Member
    Posts: 9
    Registered: ‎02-29-2012

    Re: Get Point Collection from 3dsolid

    03-01-2012 05:39 AM in reply to: wein3967

    Thank you for the link.  I guess it wasn't quite as easy as I would have thought.  I figured there would just be a property for 3dsolids that contained all the points.  Never the less, I can probably get that code to work.  Thanks again.

    Please use plain text.
    *Expert Elite*
    Posts: 1,640
    Registered: ‎04-29-2006

    Re: Get Point Collection from 3dsolid

    03-03-2012 02:28 AM in reply to: wein3967

    Hi,

     

    If you only need the solid vertices, you don't need to run through the whole brep tree.

     

    Here's a little sample.

     

            public Point3dCollection GetSolidVertices(ObjectId id)
            {
                Database db = HostApplicationServices.WorkingDatabase;
                using (Transaction tr = db.TransactionManager.StartTransaction())
                {
                    Solid3d sol = tr.GetObject(id, OpenMode.ForRead) as Solid3d;
                    if (sol == null) return null;
                    try
                    {
                        Point3dCollection pts = new Point3dCollection();
                        using (Brep brp = new Brep(sol))
                        {
                            foreach (var vtx in brp.Vertices)
                            {
                                pts.Add(vtx.Point);
                            }
                            return pts;
                        }
                    }
                    catch { return null; }
                }
            }

     

    Gilles Chanteau
    Please use plain text.
    Active Member
    Posts: 9
    Registered: ‎02-29-2012

    Re: Get Point Collection from 3dsolid

    03-03-2012 06:13 AM in reply to: _gile

    Thanks _guile, that was more along the lines of what I was looking for.  Excellent.

    Please use plain text.