Hallo,
Kann mir bitte jemand sagen wie ich eine gezeichnete polylinie weiterverwende anstelle einer aus dem script erstellten?
Im Moment verwende ich noch die sub routine "initialize" (1.Script) wuerde aber gerne eine polylinie zeichnen und sie dann auswaehlen (2. Script) kriege aber den link zwischen den beiden Scripten hin.
'1.Script
Const MAX_NODES = 150
Type node
pos(2) As Double
temp As Double
link As AcadCircle
End Type
Public chain As Acad3DPolyline
Sub main()
Dim nodes(MAX_NODES) As node
initialize nodes
For d = 0 To 100
calculate nodes
update_nodes nodes
Next d
End Sub
Sub calculate(nodes() As node)
Dim l_n As Integer, r_n As Integer
For n = 0 To MAX_NODES
If (n > 0) Then
l_n = n - 1
Else
l_n = MAX_NODES
End If
If (n < MAX_NODES) Then
r_n = n + 1
Else
r_n = 0
End If
nodes(n).temp = (nodes(l_n).pos(2) + nodes(n).pos(2) + nodes(r_n).pos(2)) / 3
Next n
End Sub
Sub update_nodes(nodes() As node)
For n = 0 To MAX_NODES
nodes(n).pos(2) = nodes(n).temp
nodes(n).link.center = nodes(n).pos
chain.Coordinate(n) = nodes(n).pos
Next n
ZoomExtents
End Sub
Sub initialize(nodes() As node)
Dim pts((MAX_NODES + 1) * 3 - 1) As Double
ThisDrawing.SendCommand "erase all "
Randomize
For i = 0 To MAX_NODES
nodes(i).pos(0) = i
nodes(i).pos(2) = Rnd * 200
Set nodes(i).link = ThisDrawing.ModelSpace.AddCircle(nodes(i).pos, 0.5)
pts(p) = nodes(i).pos(0)
pts(p + 1) = nodes(i).pos(1)
pts(p + 2) = nodes(i).pos(2)
p = p + 3
Next i
Set chain = ThisDrawing.ModelSpace.Add3DPoly(pts)
ZoomExtents
End Sub
'2.Script
Option Explicit
Sub main()
read_drw 0
End Sub
Sub read_drw(token As Integer)
Dim i As Integer
Dim ss As AcadSelectionSet
Dim groupCode(0) As Integer
Dim dataValue(0) As Variant
Dim asolid As AcadPolyline
groupCode(0) = 0
dataValue(0) = "polyline"
sel_set_del 0
Set ss = ThisDrawing.SelectionSets.Add("collector")
ss.Select acSelectionSetAll, , , groupCode, dataValue
If (ss.Count > 0) Then
For i = 0 To ss.Count - 1
Set asolid = ss.Item(i)
Next i
End If
ss.Delete
End Sub
Sub sel_set_del(token As Integer)
While (ThisDrawing.SelectionSets.Count > 0) 'if there
ThisDrawing.SelectionSets.Item(0).Delete 'then delete
Wend
End Sub
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP