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()
Try
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
Next
MsgBox(outPts)
trans.Commit()
Catch ex As Exception
trans.Abort()
MsgBox(ex.Message)
Finally
trans.Dispose()
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