Jalen Weir Posted November 20, 2015 Posted November 20, 2015 Background: I receive a .dxf with points. These points are arrayed in x,y,& z coordinates. I have extracted the coordinates into collections and I am trying to draw a polyline using those coordinates as vertices. It is important that the z coordinate be included. All points differ in their x,y,z coordinates. The collection is a collection of arrays (0 to 2). This was my attempt to call vertices straight from the collection: ThisDrawing.ActiveLayer = newLayer Set pLineA = ThisDrawing.ModelSpace.Add3DPoly(pointCollA.Item(1), pointCollA.Item(2), pointCollA.Item(3), _ pointCollA.Item(4), pointCollA.Item(5), pointCollA.Item(6), _ pointCollA.Item(7), pointCollA.Item(, pointCollA.Item(9), _ pointCollA.Item(10), pointCollA.Item(11), pointCollA.Item(12), _ pointCollA.Item(13), pointCollA.Item(14), pointCollA.Item(15), _ pointCollA.Item(16), pointCollA.Item(17), pointCollA.Item(18), _ pointCollA.Item(19), pointCollA.Item(20), pointCollA.Item(21), _ pointCollA.Item(22), pointCollA.Item(23), pointCollA.Item(24), _ pointCollA.Item(25)) ThisDrawing.ActiveLayer = newLayer1 Set pLineB = ThisDrawing.ModelSpace.Add3DPoly(pointCollB.Item(1), pointCollB.Item(2), pointCollB.Item(3), _ pointCollB.Item(4), pointCollB.Item(5), pointCollB.Item(6), _ pointCollB.Item(7), pointCollB.Item(, pointCollB.Item(9), _ pointCollB.Item(10), pointCollB.Item(11), pointCollB.Item(12), _ pointCollB.Item(13), pointCollB.Item(14), pointCollB.Item(15), _ pointCollB.Item(16), pointCollB.Item(17), pointCollB.Item(18), _ pointCollB.Item(19), pointCollB.Item(20), pointCollB.Item(21), _ pointCollB.Item(22), pointCollB.Item(23), pointCollB.Item(24), _ pointCollB.Item(25)) Result is: Compile error: Wrong number of arguments or invalid property assignment. Thank you for help! Quote
Jalen Weir Posted November 20, 2015 Author Posted November 20, 2015 BTW ive tried this with AddPolyline & AddLightWeightPolyline too. Quote
BIGAL Posted November 20, 2015 Posted November 20, 2015 It would be almost easier to do a script just need a blank line to end the pline 3dpoly 1,2,3 3,4,5 6,7,8 3dpoly 9,1,2 3,4,5 6,7,8 I have used this with a list of pts yes its lisp ; create pline by picking points press enter when finished (command "_pline") (while (= (getvar "cmdactive") 1 ) (command pause) ; replace the (command pause) with your xyz within a loop ) Quote
Jalen Weir Posted November 20, 2015 Author Posted November 20, 2015 The points already exist. Its survey points from a crane rail. Quote
SEANT Posted November 20, 2015 Posted November 20, 2015 If The collection is a collection of arrays (0 to 2). and the Add3DPoly Method requires a 1 dimensional array then you may need something like this construct: Dim Coords(74) as Double Dim IndexForArray as Integer Dim CountIndex as Integer …. For Index as Integer = 0 to 24 IndexForArray = Index – 1 CountIndex = Index * 3 Coords(CountIndex) = pointCollA.Item(IndexForArray)(0) Coords(CountIndex + 1) = pointCollA.Item(IndexForArray)(1) Coords(CountIndex + 2) = pointCollA.Item(IndexForArray)(2) Next Quote
Jalen Weir Posted November 24, 2015 Author Posted November 24, 2015 Yep. It needed two arrays to initialize, then I can append with the additional vertices. Here was the final solution: For Each coords In railOne If index < count Then If index < 1 Then handle = railOne(index) Set object = ThisDrawing.HandleToObject(handle) points(0) = object.Coordinates(0) points(1) = object.Coordinates(1) points(2) = object.Coordinates(2) index = index + 1 handle = railOne(index) Set object = ThisDrawing.HandleToObject(handle) points(3) = object.Coordinates(0) points(4) = object.Coordinates(1) points(5) = object.Coordinates(2) Set pLineA = ThisDrawing.ModelSpace.Add3DPoly(points) index = index + 1 Else handle = railOne(index) Set object = ThisDrawing.HandleToObject(handle) points1(0) = object.Coordinates(0) points1(1) = object.Coordinates(1) points1(2) = object.Coordinates(2) pLineA.AppendVertex points1 index = index + 1 End If Else End If Next coords Thanks for all the help. You guys rock!! Quote
Jalen Weir Posted November 24, 2015 Author Posted November 24, 2015 I meant array (0 To 5) to initialize. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.