Zobrazit plnou verzi příspěvku: VBA a 3dpolyline

predcis
21.09.2005, 11:43
Dobry den,
mam este jeden problem, ktory som sice vyriesil, ale sposobom, ktory je podla mna dost divny. Nemam hlbsie znalosti VB, preto priliz nepoznam problematiku dynamickych poli (s C-ckom to nema nic podobneho).
V podstate ide o to, ze som nenasiel nejaku "vstavanu" funkciu, ktora by mi povedala kolko vrcholov ma 3d krivka, ktoru vyberiem. Tak som to vyriesil cez chybu, co sa mi zda byt pritiahnute za vlasy. Vie mi prosim niekto poradit, ako sa to da urobit inteligentnejsie ? Dakujem.
Tu je kod :

Public poly As Acad3DPolyline
Public entita As AcadEntity
Public prepinac As Boolean

Private Sub Vyber3Dpoly_Click()

Dim bod(2) As Double

Me.Hide
AutoCAD.ActiveDocument.Utility.GetEntity entita, bod, "Vyber 3Dpolyline ! : "
'MsgBox entita.ObjectName
If entita.ObjectName = "AcDb3dPolyline" Then
Set poly = entita
prepinac = True
Else
MsgBox "Nevybral si 3Dpolyline !"
End If
'MsgBox poly.ObjectName
Me.Show

End Sub

Private Sub Vykreslit_Click()

Dim pocetVrcholov As Long
Dim bod1 As Variant
Dim bod2 As Variant

pocetVrcholov = 0

'zistenie poctu vrcholov

On Error GoTo vrcholy


Do While 1 > 0 'nekonecny cyklus

    bod1 = poly.Coordinate(pocetVrcholov) ' ak nastane chyba, tolko vrcholov je (indexy su potom pocet - 1)
    pocetVrcholov = pocetVrcholov + 1 'neexistuje nieco ako pocetVrcholov++ ?

Loop 'koniec nekonecneho cyklu

vrcholy:

'MsgBox "Pocet vrcholov > " & pocetVrcholov

... a pokracuje dalsi kod.

Vladimír Michl
21.09.2005, 12:09
není tam náhodou kolekce Coordinates ? (nezkoušeno)

Seiner
21.09.2005, 12:13
a co UBound (jmeno_pole[,č_rozm]) ?

predcis
21.09.2005, 12:48
Dakujem, riesenie som nasiel nasledovne :

pocetVrcholov = (UBound(poly.coordinates)+1)/3