qwertyhp писал(а):
- Код: Выделить всё
For i = 1 To n - 1
If MassiveListBox(i) <> "" Then ' не пустая ячейка
For j = i + 1 To n ' т.е. со следующего после i
If MassiveListBox(j) <> "" Then ' не пустая ячейка
If MassiveListBox(i) = MassiveListBox(j) Then ' нашли совподение
MassiveListBox(j) = "" ' при нахождении повтора обнуляем его
End If
End If
Next j
End If
Next i
ssv22 писал(а):Вроде как похоже на код от `qwertyhp` ...
Но мой последний вопрос был про рекурсию...
ssv22 писал(а):Ну и...
(краткость - сестра таланта?)
Пройти по списку, добавляя каждый элемент в коллекцию.
Если такой элемент в коллекции уже есть - удалять текущий и идти дальше.
'------------------------------------------------------------------
' вспом.функция (некоторые комментарии мои)
Sub TraverseComponent swComp As SldWorks.Component2, nLevel As Long )
Dim vChildComp As Variant
Dim swChildComp As SldWorks.Component2
Dim swCompConfig As SldWorks.Configuration
Dim sPadStr As String
Dim i As Long
For i = 0 To nLevel - 1
sPadStr = sPadStr + " "
Next i
vChildComp = swComp.GetChildren ' подчиненный компонент(подсборка)
For i = 0 To UBound(vChildComp)
Set swChildComp = vChildComp(i)
' если ChildComp является подсборкой, вызываем опять "TraverseComponent"
[b]TraverseComponent swChildComp, nLevel + 1 <<<====т.е. рекурсивный вызов ф-и "TraverseComponent"[/b] Next i
End Sub
.------------------------------------------------- ну, думаю ясно - это главная ф-я
Sub main()
Dim swApp As SldWorks.SldWorks
Dim swModel As SldWorks.ModelDoc2
Dim swAssy As SldWorks.AssemblyDoc
Dim swConf As SldWorks.configuration
Dim swRootComp As SldWorks.Component2
Dim bRet As Boolean
Set swApp = CreateObject("SldWorks.Application") 'инициализация SW
Set swModel = swApp.ActiveDoc
Set swConf = swModel.GetActiveConfiguration
Set swRootComp = swConf.GetRootComponent ' "корневой компонент"
[b]TraverseComponent [/b]swRootComp, 1 ' первый вызов с "главным" компонентом
End Sub
'---------------------------------------
ssv22 писал(а):"Абидна, да! Ниче не сделал, да..."
This example shows how to traverse an assembly at the component level. It is assumed that you have an active assembly.
'------------------------------------------------------------------
' вспом.функция (некоторые комментарии мои)
Sub TraverseComponent swComp As SldWorks.Component2, nLevel As Long )
Dim vChildComp As Variant
Сейчас этот форум просматривают: AhrefsBot, Google-бот и гости: 15