The section: 're-set layer key overrides
below produces the error:
Run-time error '-214746259 (80004005)'
Method 'Value' of Object 'IAecLayerOverrideSettings' failed
See VBA code below:
Sub GenerateLayersFromLayerKey()
getAecArchBaseApp
getAecArchDbPref
Dim CurrentLayerKeyStyle As String
CurrentLayerKeyStyle = getLayerStandard
Dim AecDoc As New AecArchBaseDocument
AecDoc.Init ThisDrawing
Dim LayKeyStyle As AecLayerKeyStyle
Set LayKeyStyle = AecDoc.LayerKeyStyles(CurrentLayerKeyStyle)
'save current Layer Key Overrides
Dim SavedOverrideSettings() As Variant
With LayKeyStyle.OverrideSettings
SavedOverrideSettings = Array((Array(.Item("Discipline").Name,
.Item("Discipline").Value)), _
(Array(.Item("Status").Name,
.Item("Status").Value)), _
(Array(.Item("Component").Name,
.Item("Component").Value)), _
(Array(.Item("Description").Name,
.Item("Description").Value)) _
)
End With
'set Layer Standard Wildcards
With LayKeyStyle.OverrideSettings
.Item("Discipline").Value = "?"
.Item("Status").Value = "-?"
.Item("Component").Value = "-????"
.Item("Description").Value = "-*"
End With
ThisDrawing.SendCommand ("LayerKeyOverride ")
'build Layer Generate Filter String
Dim LayerFilter As String
With LayKeyStyle.OverrideSettings
'Discipline Field is required
If .Item("Discipline").Value <> "" Then
LayerFilter = .Item("Discipline").Value
Else
LayerFilter = LayerFilter & "?"
End If
'Status Field is optional
If .Item("Status").Value <> "" Then
LayerFilter = LayerFilter & .Item("Status").Value
Else
LayerFilter = LayerFilter & "*"
End If
'Component Field is required
If .Item("Component").Value <> "" Then
LayerFilter = LayerFilter & .Item("Component").Value
Else
LayerFilter = LayerFilter & "-????"
End If
'Description Field is optional
If .Item("Description").Value <> "" Then
LayerFilter = LayerFilter & .Item("Description").Value
Else
LayerFilter = LayerFilter & "*"
End If
End With
're-set layer key overrides
For Each x In SavedOverrideSettings
LayKeyStyle.OverrideSettings.Item(x(1)).Value = x(2)
Next x
Dim LayerKey As AecLayerKey
For Each LayerKey In LayKeyStyle.Keys
If LayerKey.Index = 86 Then 'special code for the 'Count' item, I think?
GoTo SkipLayerKey
End If
If LayerKey.Layer Like LayerFilter Then
LayKeyStyle.GenerateLayer (LayerKey.Name)
End If
SkipLayerKey:
Next LayerKey
EndSub:
End Sub