808x
004771
2020-10-14

Вопрос

Можно ли посредством интерфейса COM создавать видимости?


Ответ:

Да, посредством интерфейса COM (RF-COM3/RS ‑ COM6) можно создавать и видимости. В следующем коде будут для видимостей сначала выбраны требуемые элементы. Это обычно делается посредством функции Selections. Сначала активируйте ее с помощью команды «rfEnableSelections», а потом с помощью команды «rfSelectObjects» выберите нужные объекты:

Sub set_visibility()
    
' get interface from the opened model and lock the licence/program
Dim iModel As RFEM3.IrfStructure3
Set iModel = GetObject(, "RFEM3.Structure")
iModel.rfGetApplication.rfLockLicence
    
On Error GoTo e
    
' get interface for modeldata
Dim iModData As RFEM3.IrfStructuralData4
Set iModData = iModel.rfGetStructuralData

' get interface for view
Dim iView As RFEM3.IrfView2
Set iView = iModel.rfGetActiveView
' remove old views
iView.rfDeletePartialView "test|view"
iView.rfDeletePartialView "test|view2"
iView.rfDeletePartialView "test|view_add"
iView.rfDeletePartialView "test|view_rev"
iView.rfDeletePartialView "test|view_diff"

' create first view
iModData.rfSelectObjects STR_MEMBER, "3-4"
iView.rfSetPartialView "test|view"
'iView.rfSelectPartialView "test | view", PVM_SHOW, True, True

' create second view
iModData.rfSelectObjects STR_SURFACE, "1"
iModData.rfSelectObjects STR_MEMBER, "3"
iView.rfSetPartialView "test|view2"
' iView.rfSelectPartialView "test|view2", PVM_SHOW, True, True

' create sum from view from 1 and 2
iView.rfSelectPartialView "test|view", PVM_SELECT, True, True
iView.rfSelectPartialView "test|view2", PVM_SELECT, False, True
iView.rfSelectPartialView "", PVM_SHOW_SELECTION_ONLY, True, True
iView.rfSetPartialView "test|view_add"


' create differential view 2 minus 1
' first created reversed view
iView.rfSelectPartialView "test|view", PVM_SHOW, True, True
iView.rfSelectPartialView "test|view2", PVM_SHOW, False, True
iView.rfSelectPartialView "", PVM_SHOW_REVERSE, True, True
iView.rfSelectPartialView "", PVM_SELECT, True, True
iView.rfSetPartialView "test|view_rev"
iView.rfSelectPartialView "", PVM_SHOW_REVERSE, True, True

' select view to substract and reverse view
iView.rfSelectPartialView "test|view_rev", PVM_SELECT, True, True
iView.rfSelectPartialView "test|view", PVM_SELECT, False, True
iView.rfSelectPartialView "", PVM_SHOW_SELECTION_ONLY, True, True
iView.rfSelectPartialView "", PVM_SHOW_REVERSE, True, True
iView.rfSelectPartialView "", PVM_SELECT, True, True
iView.rfSetPartialView "test|view_diff"
iView.rfSelectPartialView "", PVM_SHOW_SELECTION_ONLY, True, True

iView.rfSelectPartialView "", PVM_SHOW_REVERSE, True, True
iView.rfCancelPartialView

    
e: If Err.Number <> 0 Then MsgBox Err.description, , Err.Source
    
iModel.rfGetApplication.rfUnlockLicence
Set iModel = Nothing

End Sub

Для создания видимости затем используйте интерфейс «iView» и команду «rfSetPartialView». Здесь особенно важно правильное описание. Разделитель «|» обеспечивает создание видимости с названием «view» в группе «test».

Обратите внимание в основномна команду «rfSelectPartialView», которая позволяет активировать видимость. Потом первый аргумент - это название видимости. В качестве второго аргумента можно выбрать любую нужную команду. В зависимости от команды затем может потребоваться указание наименование видимости.

Третий аргумент спрашивает, нужно ли деактивировать все, что было отображено до сих пор или нет. Поэтому, если вы хотите отобразить, например, две видимости, нужно по крайне мере при выборе второй из них подтвердить команду «False».

Четвертый аргумент затем определяет, должно ли все скрытое отображаться в фоновом режиме или нет.

Ниже приводим список важных команд для второго аргумента:

PVM_SELECT - выберет элементы в указанной видимости

PVM_SHOW - отобразит указанную видимость

PVM_SHOW_SELECTION_ONLY - после выбора элементов из видимости позволяет отобразить их отдельно

PVM_SHOW_REVERSE - все актуально отображаемые элементы переключаются в фоновый режим, а элементы из фонового режима в полное отображение (инвертированное отображение)