1098x
003427
2019-08-06

Вопрос

Как создать NURBS с помощью интерфейса COM?


Ответ:
Основной объект - это не линейный объект, а объект типа NurbSpline.
Вот краткий пример создания NURBS (неравномерного рационального B-сплайна):

'--------------------------------------------------------------------------------------------------
Sub nurbs_test ()
'--------------------------------------------------------------------------------------------------

Dim model As RFEM5.model
Set model = GetObject(, "RFEM5.Model")
model.GetApplication.LockLicense

On Error GoTo e

Dim data As IModelData
Set data = model.GetModelData

' определить массив узлов
Размеры узлов (от 0 до 2) Как в RFEM5.Node
    
узлов (0) .No = 1
узлов (0) .Type = Standard
узлов (0) .CS = декартова
узлов (0) .X = 1
узлов (0) .Y = 1
узлов (0) .Z = 0

узлов (1) .No = 2
узлов (1) .Type = Standard
узлов (1) .CS = декартова
узлов (1) .X = 2
узлов (1) .Y = 1
узлов (1) .Z = -1
    
узлов (2) .No = 3
node (2) .Type = По умолчанию
узлов (2) .CS = декартова
узлов (2) .RefObjectNo = 2
узлов (2) .X = 0
узлов (2) .Y = 1
узлов (2) .Z = 0
    
Dim darr1 (от 0 до 5) как двойной
darr1 (0) = 0
darr1 (1) = 0
darr1 (2) = 0
darr1 (3) = 1
darr1 (4) = 1
darr1 (5) = 1
    
Dim darr2 (от 0 до 2) как двойное
darr2 (0) = 1
darr2 (1) = 1
darr2 (2) = 1
    
Dim ns As NurbSpline
ns.General.No = 2
ns.General.Type = NurbSplineType
ns.General.NodeList = "1,2,3"
ns.General.Comment = "строка 2"
ns.Knots = darr1
ns.Order = 3
ns.Weights = darr2
    
data.PrepareModification
узлы data.SetNodes
data.SetNurbSpline ns
e: data.FinishModification
If Err.Number <> 0 Then MsgBox Err.Description, , Err.Source

Set data = Nothing
model.GetApplication.UnlockLicense
Set model = Nothing

End Sub

Автор

Г-н Гюнтель осуществляет техническую поддержку пользователей Dlubal Software.