.NET
Reply
Topic Options
- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
How to iterate through Polyline3d vertices with "for" loop?
Options
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
102 Views, 3 Replies
02-05-2013 01:00 AM
I know I can use the following...
...
Polyline3d pl3d = acEnt as Polyline3d;
foreach (ObjectId id in pl3d)
{
PolylineVertex3d plv3d = tr.GetObject(id, OpenMode.ForRead) as PolylineVertex3d;
Point3d p3d = plv3d.Position;
...
}
But I need to work with "for" loop.
It seems "pl3d[i]" does not work.
Is there other ways to iterate through Polyline3d vertices?
Solved! Go to Solution.
Re: How to iterate through Polyline3d vertices with "for" loop?
Options
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
02-05-2013 01:14 AM in reply to:
dynamicscope
Hmm....
Looks like the following will do the job.
Polyline3d pline3d = ent as Polyline3d;
for (double i = 0; i < pline3d.EndParam; i = i + 1 )
{
Point3d p3d = pline3d.GetPointAtParameter(i);
}Is that correct?
Re: How to iterate through Polyline3d vertices with "for" loop?
Options
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
02-05-2013 01:39 AM in reply to:
dynamicscope
using System;
using System.Linq;
using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;
[assembly: CommandClass(typeof(Rivilis.CurveUtils))]
namespace Rivilis
{
public class CurveUtils
{
[CommandMethod("ListPoly3D", CommandFlags.Modal)]
public static void ListPoly3D()
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
PromptEntityOptions prCurv = new PromptEntityOptions("\nSelect Polyline3d: ");
prCurv.SetRejectMessage("not a Polyline3d");
prCurv.AddAllowedClass(typeof(Polyline3d), false);
PromptEntityResult resCurv = ed.GetEntity(prCurv);
if (resCurv.Status != PromptStatus.OK) return;
using (Transaction tr = doc.TransactionManager.StartTransaction()) {
Polyline3d pl3d = tr.GetObject(resCurv.ObjectId, OpenMode.ForRead) as Polyline3d;
ObjectId[] verts = pl3d.Cast<ObjectId>().ToArray();
ed.WriteMessage("\nNumber of vertexes: {0}", verts.Length);
for (int i = 0; i < verts.Length; i++) {
PolylineVertex3d vt = tr.GetObject(verts[i], OpenMode.ForRead) as PolylineVertex3d;
if (vt != null) {
ed.WriteMessage("\n[{0}] = {1}", i, vt.Position.ToString());
}
}
tr.Commit();
}
}
}
}
Re: How to iterate through Polyline3d vertices with "for" loop?
Options
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
02-05-2013 01:57 AM in reply to:
dynamicscope



