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.
Solved by Alexander.Rivilis. Go to Solution.
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?
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(); } } } }
Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"
Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
@Anonymous wrote:
Is that correct?
It is look like you skip last vertex...
Відповідь корисна? Клікніть на "ВПОДОБАЙКУ" цім повідомленням! | Do you find the posts helpful? "LIKE" these posts!
Находите сообщения полезными? Поставьте "НРАВИТСЯ" этим сообщениям!
На ваше запитання відповіли? Натисніть кнопку "ПРИЙНЯТИ РІШЕННЯ" | Have your question been answered successfully? Click "ACCEPT SOLUTION" button.
На ваш вопрос успешно ответили? Нажмите кнопку "УТВЕРДИТЬ РЕШЕНИЕ"
Alexander Rivilis / Александр Ривилис / Олександр Рівіліс
Programmer & Teacher & Helper / Программист - Учитель - Помощник / Програміст - вчитель - помічник
Facebook | Twitter | LinkedIn
Can't find what you're looking for? Ask the community or share your knowledge.