2016-04-06 2 views
0

Ich hatte ursprünglich geplant, diese Frage in den Bentley-Foren für die Programmierung zu stellen, da sie a similar answer for a C# question hatten, die ich verwendet habe, um meine zu modellieren. Der Account, den ich für die Foren erstellt habe, scheint jedoch nicht zu funktionieren.Einstellung LineStyleParameters in MicroStation VBA

Der Zweck des Codes besteht darin, Linienstyle, Farbe, Linienstärke und schließlich zwei Einstellungen festzulegen, die unter Line Style Parametra und als Scale und Corner Mode bekannt sind. Als Hintergrund bin ich mit C# viel vertrauter als mit VBA und das könnte dazu führen, dass ich etwas verpasse, aber die Lösung, die ich habe, ähnelt dem C# -Ansatz, der im obigen Link hervorgehoben ist (was ich sehr zufällig fand)):

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 

Es ist die Linie oLineElement.SetLineStyleParameters (oParams), die mir den Fehler gibt 438: ‚Objekt nicht über diese Methode oder Eigenschaft unterstützen‘. Wenn ich dies jedoch mit dem oben erwähnten C# -Ansatz vergleiche (siehe unten), bemerke ich keinen wesentlichen Unterschied.

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(); 
} 

Weiß jemand, was ich hier falsch mache, oder wie man dieses Problem löst?

Dank

Antwort

0

Answer was provided by Jan Slegr auf Bentley-Foren zu denen bekam ich Zugang schließlich.

Parenthesis in VBA nicht verwendet werden, wenn ein Verfahren ohne Satz = aufgerufen wird, so dass Sie sie entfernen:

oLineElement.SetLineStyleParameters oParams