我本来打算在宾利论坛上问这个问题,因为他们有C#问题的类似回答,我用它来模拟我的程序。然而,我为论坛创建的帐户似乎不起作用。
代码的目的是设置线条风格,颜色,线条重量,最后是两个设置,这是分类的线型参数,称为比例尺和角模式。
作为背景,我对C#的了解要比VBA熟悉得多,这可能会使我错过一些东西,但我所使用的解决方案与上面的链接中突出显示的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 SuboLineElement.SetLineStyleParameters (oParams)行给出了错误438:“Object不支持此方法或属性”。然而,当将它与上面提到的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();
}有没有人知道我在这里做错了什么,或者如何解决这个问题?
谢谢
发布于 2016-04-07 12:10:44
我终于访问了宾利论坛上的简·斯莱格提供了答复。
如果调用方法时不带set =,则在VBA中不使用括号,因此必须删除它们:
oLineElement.SetLineStyleParameters oParamshttps://stackoverflow.com/questions/36456402
复制相似问题