Die Verwendung gefüllter Flächen kann inbesondere bei Verwendung in Zellen dazu führen, dass andere Geometrieelemente wie auch Texte abgedeckt werden und damit unsichtbar werden.Hier wird nun eine VBA Routine vorgestellt, die beispielsweise alle gefüllten Elemente vom Type ComplexShape transparent stellt.
Neben der eigentlichen Routine wird hier eine Hilfsroutine verwendet, die rekursiv aufgerufen dafür sorgt, dass alle Elemente innerhalb einer Zelle oder Pseudozellendefinition in beliebiger Verschachtelungstiefe überprüft werden können.Hier nun das Beispiel, das gefüllte komplexe Flächen auf 50% Tranparenz stellt.
Dim Sc As New ElementScanCriteria count = 0 Sc.ExcludeAllTypes Sc.IncludeType msdElementTypeSharedCellDefinition Sc.IncludeType msdElementTypeCellHeader Set Ee = ActiveModelReference.Scan(Sc) Do While Ee.MoveNext Call checkComplex(Ee.Current) Loop MessageCenter.AddMessage "ingesamt +" + Str(count) + " Flächen transparent gestellt", "", msdMessageCenterPriorityInfo, False End Sub Sub checkComplex(ele As Element) Dim Ee As ElementEnumerator If ele.IsComplexShapeElement Then If ele.AsComplexShapeElement.IsFilled Then ele.AsComplexShapeElement.Transparency = 0.5 ele.Rewrite count = count + 1 End If Else If ele.IsComplexElement Then Set Ee = ele.AsComplexElement.GetSubElements Do While Ee.MoveNext Call checkComplex(Ee.Current) Loop End If End If End Sub