559x
001811
2019-08-06

[EN] FAQ 003427 | Как создать NURBS с помощью интерфейса COM?

Вопрос:
Как создать 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
    узлов (2) .Type = Standard
    узлов (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