Выделение компонента во время перебора

Автор Тема: Выделение компонента во время перебора  (Прочитано 4280 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Тема содержит сообщение с Решением. Нажмите здесь чтобы посмотреть его.

Оффлайн Сергей SSSАвтор темы

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
А как во время перебора компонентов для назначения свойств командой выделить текущий компонент в сборке, чтобы в сборке видно было визуально- чему назначается конкретное свойство. На Ilogic.
Вот перебор, например для назначения обозначения:
Код - vb.net [Выбрать]
  1. Sub Main()
  2.   doc = ThisDoc.Document
  3.     CompOccurs = doc.ComponentDefinition.Occurrences
  4.    
  5.     For Each Occur In CompOccurs
  6.       OccurDoc=Occur.Definition.Document
  7.           If OccurDoc.DocumentType<>kPartDocumentObject Then Continue For
  8.            If Occur.BOMStructure=BOMStructureEnum.kPurchasedBOMStructure Then Continue For
  9.            
  10.             PartNumberProp=OccurDoc.PropertySets("{32853F0F-3444-11D1-9E93-0060B03C1CA6}").Item("Part Number")
  11.         PartNumberProp.Value =  InputBox(Occur.Name, "Обозначение")
  12.          
  13.     Next
  14. End Sub
Какую команду вставить перед
PartNumberProp.Value =  InputBox(Occur.Name, "Обозначение")
Нашел тему про выделение, но там написано на другом языке:
Dim oObject As Object
Set oObject = ThisApplication.CommandManager.Pick(kAllPointEntities, "Pick a feature").
Убрал Set- ошибка, так там указывать мышей что то надо, судя по всему это не то
« Последнее редактирование: 30-05-2016, 12:44:45 от Сергей SSS »

Оффлайн R.I.Chernov

  • ADN Club
  • *****
  • Сообщений: 568
  • Карма: 18
Мне кажется, что скорость перебора значительно выше диапазона восприимчивости глаза, даже если вы сможете подсветить компоненты, то не сможете толком увидеть.
В программировании я новичок...но ненадолго! ;)

Оффлайн Сергей SSSАвтор темы

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Мне кажется, что скорость перебора значительно выше диапазона восприимчивости глаза, даже если вы сможете подсветить компоненты, то не сможете толком увидеть.
Так там PartNumberProp.Value =  InputBox(Occur.Name, "Обозначение"), время останавливается. В идеале хочется не только выделение объекта, но и показ его (зумирование во весь экран), что то типа:
Код - vb.net [Выбрать]
  1.     Public Sub RuniLogic(ByVal RuleName As String)
  2.       Dim iLogicAuto As Object
  3.       Dim oDoc As Document
  4.       Set oDoc = ThisApplication.ActiveDocument
  5.       If oDoc Is Nothing Then
  6.         MsgBox "Missing Inventor Document"
  7.         Exit Sub
  8.       End If
  9.       Set iLogicAuto = GetiLogicAddin(ThisApplication)
  10.       If (iLogicAuto Is Nothing) Then Exit Sub
  11.       iLogicAuto.RunExternalRule oDoc, RuleName
  12.     End Sub
  13.      
  14.     Function GetiLogicAddin(oApplication As Inventor.Application) As Object
  15.       Set addIns = oApplication.ApplicationAddIns
  16.       'Find the add-in you are looking for
  17.       Dim addIn As ApplicationAddIn
  18.       On Error GoTo NotFound
  19.       Set addIn = oApplication.ApplicationAddIns.ItemById("{3bdd8d79-2179-4b11-8a5a-257b1c0263ac}")
  20.       If (addIn Is Nothing) Then Exit Function
  21.       addIn.Activate
  22.       Set GetiLogicAddin = addIn.Automation
  23.       Exit Function
  24. NotFound:
  25.     End Function
  26.  
  27. Sub Îáíàðóæèòü()
  28. Dim ZoomCommand As String: ZoomCommand = "AppZoomSelectCmd"
  29. Call ThisApplication.CommandManager.ControlDefinitions(ZoomCommand).Execute
  30. End Sub
Только здесь, в этом коде,  чтобы обнаружить в сборке (прозумировать нужную деталь) нужно указать предварительно ее в менеджере

« Последнее редактирование: 31-05-2016, 08:51:21 от Сергей SSS »

Отмечено как Решение Сергей SSS 03-06-2016, 14:50:58

Оффлайн Алексей Романов

  • ADN Club
  • **
  • Сообщений: 87
  • Карма: 20
Попробуй так:
Код - vb.net [Выбрать]
  1. doc = ThisDoc.Document
  2. CompOccurs = doc.ComponentDefinition.Occurrences
  3. For Each Occur In CompOccurs
  4.         OccurDoc = Occur.Definition.Document
  5.         If OccurDoc.DocumentType<>kPartDocumentObject Then Continue For
  6.         If Occur.BOMStructure=BOMStructureEnum.kPurchasedBOMStructure Then Continue For
  7.        
  8.         If doc.SelectSet.Count > 0 Then doc.SelectSet.Clear
  9.         doc.SelectSet.Select(Occur)
  10.        
  11.         ThisApplication.CommandManager.ControlDefinitions("AppZoomSelectCmd").Execute
  12.        
  13.         PartNumberProp=OccurDoc.PropertySets("{32853F0F-3444-11D1-9E93-0060B03C1CA6}").Item("Part Number")
  14.         PartNumberProp.Value =  InputBox(Occur.Name, "Обозначение", PartNumberProp.Value)
  15. Next

Оффлайн Сергей SSSАвтор темы

  • ADN OPEN
  • Сообщений: 36
  • Карма: 0
Вот. То что нужно.