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