Да, посредством интерфейса COM (RF-COM3/RS ‑ COM6) можно создавать и видимости. В следующем коде будут для видимостей сначала выбраны требуемые элементы. Это обычно делается посредством функции Selections. Сначала активируйте ее с помощью команды «rfEnableSelections», а потом с помощью команды «rfSelectObjects» выберите нужные объекты:
Sub set_visibility() ' get interface from the opened model and lock the licence/programDim iModel As RFEM3.IrfStructure3Set iModel = GetObject(, "RFEM3.Structure")iModel.rfGetApplication.rfLockLicence On Error GoTo e ' get interface for modeldataDim iModData As RFEM3.IrfStructuralData4Set iModData = iModel.rfGetStructuralData
' get interface for viewDim iView As RFEM3.IrfView2Set iView = iModel.rfGetActiveView' remove old viewsiView.rfDeletePartialView "test|view"iView.rfDeletePartialView "test|view2"iView.rfDeletePartialView "test|view_add"iView.rfDeletePartialView "test|view_rev"iView.rfDeletePartialView "test|view_diff"
' create first viewiModData.rfSelectObjects STR_MEMBER, "3-4"iView.rfSetPartialView "test|view"'iView.rfSelectPartialView "test | view", PVM_SHOW, True, True
' create second viewiModData.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 2iView.rfSelectPartialView "test|view", PVM_SELECT, True, TrueiView.rfSelectPartialView "test|view2", PVM_SELECT, False, TrueiView.rfSelectPartialView "", PVM_SHOW_SELECTION_ONLY, True, TrueiView.rfSetPartialView "test|view_add"
' create differential view 2 minus 1' first created reversed viewiView.rfSelectPartialView "test|view", PVM_SHOW, True, TrueiView.rfSelectPartialView "test|view2", PVM_SHOW, False, TrueiView.rfSelectPartialView "", PVM_SHOW_REVERSE, True, TrueiView.rfSelectPartialView "", PVM_SELECT, True, TrueiView.rfSetPartialView "test|view_rev"iView.rfSelectPartialView "", PVM_SHOW_REVERSE, True, True
' select view to substract and reverse viewiView.rfSelectPartialView "test|view_rev", PVM_SELECT, True, TrueiView.rfSelectPartialView "test|view", PVM_SELECT, False, TrueiView.rfSelectPartialView "", PVM_SHOW_SELECTION_ONLY, True, TrueiView.rfSelectPartialView "", PVM_SHOW_REVERSE, True, TrueiView.rfSelectPartialView "", PVM_SELECT, True, TrueiView.rfSetPartialView "test|view_diff"iView.rfSelectPartialView "", PVM_SHOW_SELECTION_ONLY, True, True
iView.rfSelectPartialView "", PVM_SHOW_REVERSE, True, TrueiView.rfCancelPartialView
e: If Err.Number <> 0 Then MsgBox Err.description, , Err.Source iModel.rfGetApplication.rfUnlockLicenceSet iModel = Nothing
End Sub
Для создания видимости затем используйте интерфейс «iView» и команду «rfSetPartialView». Здесь особенно важно правильное описание. Разделитель «|» обеспечивает создание видимости с названием «view» в группе «test».
Обратите внимание в основномна команду «rfSelectPartialView», которая позволяет активировать видимость. Потом первый аргумент - это название видимости. В качестве второго аргумента можно выбрать любую нужную команду. В зависимости от команды затем может потребоваться указание наименование видимости.
Третий аргумент спрашивает, нужно ли деактивировать все, что было отображено до сих пор или нет. Поэтому, если вы хотите отобразить, например, две видимости, нужно по крайне мере при выборе второй из них подтвердить команду «False».
Четвертый аргумент затем определяет, должно ли все скрытое отображаться в фоновом режиме или нет.
Ниже приводим список важных команд для второго аргумента:
PVM_SELECT - выберет элементы в указанной видимости
PVM_SHOW - отобразит указанную видимость
PVM_SHOW_SELECTION_ONLY - после выбора элементов из видимости позволяет отобразить их отдельно
PVM_SHOW_REVERSE - все актуально отображаемые элементы переключаются в фоновый режим, а элементы из фонового режима в полное отображение (инвертированное отображение)