When I run the code below I get an error when attempting to rewrite one specific text node element in the attached file. This does not happen for all of the other text nodes, and I can't figure out how this one text node is any different than the rest. Another strange thing is that the error does not happen in V8, only in V8i. Any ideas? Help!
Sub ChangeTranslatedElementLevelAndColor()Dim TranslatedElement As ElementDim TranslatedTextE As TextElementDim TranslatedNode As TextNodeElementDim NodeEE As ElementEnumeratorDim EnglishColor As LongDim VersionTest As StringDim oEnglishLevel As LevelDim EE As ElementEnumeratorDim oCriteria As ElementScanCriteriaSet oCriteria = Nothing Set oCriteria = New ElementScanCriteria With oCriteria .ExcludeAllTypes .IncludeType msdElementTypeText .IncludeType msdElementTypeTextNode .IncludeOnlyVisible .ExcludeAllClasses .IncludeClass msdElementClassPrimary .IncludeClass msdElementClassDimension End With Set EE = ActiveModelReference.Scan(oCriteria) Do Until EE.MoveNext = False'define English Level Set oEnglishLevel = ActiveDesignFile.Levels("English Translation") 'define color EnglishColor = ActiveDesignFile.ExtractColorTable.FindClosestColor(RGB(128, 255, 255))'MicroStation V8 requires adjustment to 'color number to get the correct color VersionTest = Application.Version If Left$(VersionTest, 13) = "Version 08.05" Then EnglishColor = EnglishColor - 1 End If'change level and color of text element If EE.Current.IsTextElement Then Set TranslatedTextE = EE.Current With TranslatedTextE .Level = oEnglishLevel .Color = EnglishColor .Rewrite .Redraw End With End If 'change level and color of text node If EE.Current.IsTextNodeElement Then Set TranslatedNode = EE.Current 'change each text element within the text node Set NodeEE = TranslatedNode.GetSubElements Do While NodeEE.MoveNext Set TranslatedTextE = NodeEE.Current With TranslatedTextE .Level = oEnglishLevel .Color = EnglishColor .Rewrite .Redraw End With Loop 'change level and color of text node element Set TranslatedElement = TranslatedNode With TranslatedElement .Level = oEnglishLevel .Color = 23 .Rewrite .Redraw End With End If LoopEnd Sub
Sub ChangeTranslatedElementLevelAndColor()
Dim TranslatedElement As ElementDim TranslatedTextE As TextElementDim TranslatedNode As TextNodeElementDim NodeEE As ElementEnumeratorDim EnglishColor As LongDim VersionTest As StringDim oEnglishLevel As LevelDim EE As ElementEnumeratorDim oCriteria As ElementScanCriteria
Set oCriteria = Nothing Set oCriteria = New ElementScanCriteria With oCriteria .ExcludeAllTypes .IncludeType msdElementTypeText .IncludeType msdElementTypeTextNode .IncludeOnlyVisible .ExcludeAllClasses .IncludeClass msdElementClassPrimary .IncludeClass msdElementClassDimension End With Set EE = ActiveModelReference.Scan(oCriteria) Do Until EE.MoveNext = False
'define English Level Set oEnglishLevel = ActiveDesignFile.Levels("English Translation") 'define color EnglishColor = ActiveDesignFile.ExtractColorTable.FindClosestColor(RGB(128, 255, 255))
'MicroStation V8 requires adjustment to 'color number to get the correct color VersionTest = Application.Version If Left$(VersionTest, 13) = "Version 08.05" Then EnglishColor = EnglishColor - 1 End If
'change level and color of text element If EE.Current.IsTextElement Then Set TranslatedTextE = EE.Current With TranslatedTextE .Level = oEnglishLevel .Color = EnglishColor .Rewrite .Redraw End With End If 'change level and color of text node If EE.Current.IsTextNodeElement Then Set TranslatedNode = EE.Current 'change each text element within the text node Set NodeEE = TranslatedNode.GetSubElements Do While NodeEE.MoveNext Set TranslatedTextE = NodeEE.Current With TranslatedTextE .Level = oEnglishLevel .Color = EnglishColor .Rewrite .Redraw End With Loop 'change level and color of text node element Set TranslatedElement = TranslatedNode With TranslatedElement .Level = oEnglishLevel .Color = 23 .Rewrite .Redraw End With End If LoopEnd Sub