Hi Ning,
If you just want types and families with names containing a string, you probably want to go for something like this:
Dim elementsTypesContainingText As IEnumerable(Of DB.Element) = New DB.FilteredElementCollector(doc).WhereElementIsElementType.Where(Function(e) PassesMyFilter(e, "ABC"))
Dim familiesContainingText As IEnumerable(Of DB.Element) = New DB.FilteredElementCollector(doc).OfClass(GetType(DB.Family)).Where(Function(e) PassesMyFilter(e, "ABC"))
'Helper function:
Private Function PassesMyFilter(e As DB.Element, matchStr As String) As Boolean
If e.Name.Contains(matchStr, StringComparison.InvariantCultureIgnoreCase) Then
Return True
End If
Return False
End Function
'Helper module
Public Module ExtensionMethods
''' <summary>
''' Usage: mystring.Contains(myStringToCheck, StringComparison.OrdinalIgnoreCase)
''' </summary>
''' <param name="source"></param>
''' <param name="toCheck"></param>
''' <param name="comp"></param>
''' <returns></returns>
''' <remarks></remarks>
<Extension()> _
Public Function Contains(ByVal source As String, toCheck As String, comp As StringComparison) As Boolean
Return source.IndexOf(toCheck, comp) >= 0
End Function
End Module
You can always limit which categories to filter for also.
-Matt
Cheers,
-Matt
_______________________________________________________________________________
Marking a post as a 'solution' helps the community. Giving a post 'Kudos' is as good as saying thanks. Why not do both?