Class FilterStringRule Parameter 'caseSensitive' has no effect on the result.

- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
I'm searching an element with a unique IfcGuid Parameter and use the FilterStringRule.
The document contains two elements with a unique IfcGuid Parameter
Element 1 - "1R2bdPeeDBqOt5BWx5fq_k"
Element 2 - "1R2bdPeeDBqOt5BWx5fq_K"
The difference is only the last sign (k|K).
The parameter 'caseSentive' is passed true or false. The result is always two elements found.
GetElementId("1R2bdPeeDBqOt5BWx5fq_k")
or
GetElementId("1R2bdPeeDBqOt5BWx5fq_K")
public ElementId GetElementId(string ifcGuid)
{
var document = m_UIApplication?.ActiveUIDocument?.Document;
if (document == null)
return null;
var buildInParameter = BuiltInParameter.IFC_GUID;
ParameterValueProvider parameterValueProvider = new ParameterValueProvider(new ElementId((int)buildInParameter));
FilterStringRuleEvaluator filterStringRuleEvaluator = new FilterStringEquals();
FilterStringRule filterStringRule = new FilterStringRule(parameterValueProvider, filterStringRuleEvaluator, ifcGuid, true);
ElementParameterFilter elementParameterFilter = new ElementParameterFilter(filterStringRule);
FilteredElementCollector filteredElementCollector = new FilteredElementCollector(document);
var elements = filteredElementCollector.OfClass(typeof(SpatialElement)).WherePasses(elementParameterFilter).ToElements();
if (elements.Any())
{
if (elements.Count > 1)
{
// BUG = ? - Workaround
// 2nd filter the result
return elements.First(item => item.get_Parameter(buildInParameter).AsString().Equals(ifcGuid, StringComparison.Ordinal)).Id;
}
else
{
return elements.First().Id;
}
}
return null;
}