Active Member
6 Posts
0 Kudos
Registered: ‎09-18-2005
Post 1 of 3

some questions about Polyline and Polyline3d

275 Views, 2 Replies
09-24-2005 10:23 PM
I have some questions about Polyline and Polyline3d.

1. How to get Start/End point?
According to HELP I may Get and SET Start/End point from Curve class. Bat in fact I succeed only in Get, but not to Set. Duos it bug in wrappers?
2. How I Get number of vertices for Polyline3d (I tried to fined something like NumberOfVertices for Polyline)
3. How I can iterate throw vertices of Polyline3d from last vertex to first (I found GetEnumerator() and MoveNext(), but only in direction from start to end, But I need reverse from end to start).

Thank you for any help, source examples or references.
4 Posts
0 Kudos
Registered: ‎09-05-2005
Post 2 of 3

Re: some questions about Polyline and Polyline3d

09-25-2005 08:07 PM in reply to: emilg
Try some of these:

plent = (ent)Polyline;

I think they will help.

Distinguished Contributor
311 Posts
0 Kudos
Registered: ‎07-29-2004
Post 3 of 3

Re: some questions about Polyline and Polyline3d

09-26-2005 11:25 AM in reply to: emilg
Try this, it works for me.

Public Shared Sub TestPline3d()
Dim editor As Editor = Application.DocumentManager.MdiActiveDocument.Editor
Dim db As Database = Application.DocumentManager.MdiActiveDocument.Database
Dim trans As Transaction = db.TransactionManager.StartTransaction()

Dim prEnt As New PromptEntityOptions("Select a 3d polyline:")
Dim prEntRes As PromptEntityResult = editor.GetEntity(prEnt)
If prEntRes.Status <> PromptStatus.OK Then Return

Dim id As ObjectId = prEntRes.ObjectId
' get input polyline
Dim ent As Entity = DirectCast(trans.GetObject(id, OpenMode.ForRead), Entity)
Dim pl As Polyline3d = DirectCast(ent, Polyline3d)
Dim c As Curve = DirectCast(pl, Curve)

' the magic trick is first line segment on 3dpoly is 0.0 to 1.0,
' 2nd line seg is 1.0 to 2.0, rinse and repeat
Dim sp As Double = c.StartParam
Dim ep As Double = c.EndParam
Dim outPts As String
Dim p As Double

For p = sp To ep Step 1.0
Dim pt As Point3d = c.GetPointAtParameter(p)
outPts &= String.Format(" {0},{1},{2} ", pt.X, pt.Y, pt.Z) & vbCrLf


Catch ex As Exception
End Try

End Sub

You cannot set information using the curve interface, it looks like you will have to define a new Polyline3d and add it to the database instead.

Chris Arps Message was edited by: CArps
Post to the Community

Have questions about Autodesk products? Ask the community.

New Post