在 MicroStation 中设置 LineStyleParameters VBA

Setting LineStyleParameters in MicroStation VBA

我原本打算在 Bentley 编程论坛上问这个问题,因为他们有 a similar answer for a C# question 我用它来模拟我的。但是,我为论坛创建的帐户似乎无法使用。

代码的目的是设置线型、颜色、线宽,最后是线型参数下的两个设置,称为比例和角模式。

作为背景,我对 C# 的熟悉程度远胜于 VBA,这可能会导致我遗漏某些内容,但我所使用的解决方案与 [=28] 中突出显示的 C# 方法类似=] 以上(我非常偶然地发现):

Private Sub AdjustStyleToByLevel(lvlName As String)

' Set up level definitions
Dim oLevel As Level
Set oLevel = ActiveDesignFile.Levels(lvlName)

' Set up scan criteria
Dim oScanCriteria As ElementScanCriteria
Set oScanCriteria = New ElementScanCriteria

oScanCriteria.ExcludeAllLevels
oScanCriteria.IncludeLevel oLevel

Dim oEnumerator As ElementEnumerator
Set oEnumerator = ActiveModelReference.Scan(oScanCriteria)

Dim oElement As Element

Do While oEnumerator.MoveNext
    Set oElement = oEnumerator.Current

    If oElement.IsTraversableElement Then
        Dim oLineElement As LineElement
        Set oLineElement = oElement

        Set oLineElement.LineStyle = ByLevelLineStyle
        oLineElement.Color = ByLevelColor               ' -1
        oLineElement.LineWeight = ByLevelLineWeight     ' -1

        ' Define and set the Line Style settings
        Dim oParams As LineStyleParameters
        Set oParams = oElement.GetLineStyleParameters

        oParams.ScaleFactor = Share.ChartScale / 100
        oParams.SetRunThroughCorners

        oLineElement.SetLineStyleParameters (oParams)
        oLineElement.Rewrite
    End If
Loop

End Sub

oLineElement.SetLineStyleParameters (oParams) 行给我错误 438:'Object does not support this method or property'。但是,将其与上面提到的 C# 方法(在下面引用)进行比较时,我没有注意到主要区别。

public void ChangeLineStyleScale()
{
    BCOM.Application msApp = BMI.Utilities.ComApp;
    BCOM.LineElement oLine = msApp.ActiveModelReference.GetElementByID64(15092) as BCOM.LineElement;
    BCOM.LineStyleParameters lsParams = oLine.GetLineStyleParameters();
    lsParams.ScaleFactor = 2.0;
    oLine.SetLineStyleParameters(lsParams);
    oLine.Rewrite();
}

有谁知道我在这里做错了什么,或者如何解决这个问题?

谢谢

Answer was provided by Jan Slegr 在我终于可以访问的 Bentley 论坛上。

Parenthesis are not used in VBA if a method is called without set =, so you have to remove them:

oLineElement.SetLineStyleParameters oParams