ユーザーが選択した要素のパラメーター値に基づいて現在のビューの要素をフィルター処理する pyrevit アドインを作成しようとしています。これは、string および double の種類のパラメーターに対しては正常に機能します。しかし、DB.FilterStringRule で AsValueString() が失敗するのは、おそらく Python で AsValueString 型を文字列型に変換する際に単位情報が失われるためです。以下に関連するコードを含めました。
target_parameter_value = ele.Parameter[target_parameter].AsValueString()# As value strings got converted to strings
param_id = DB.ElementId(target_parameter)
param_prov = DB.ParameterValueProvider(param_id)
param_equality = DB.FilterStringEquals() # equality class for string
value_rule = DB.FilterStringRule(param_prov,param_equality,target_parameter_value ,True)
param_filter = DB.ElementParameterFilter(value_rule)
elements = DB.FilteredElementCollector(doc)\
.OfCategory(target_category)\
.WhereElementIsNotElementType()\
.WherePasses(param_filter)\
.ToElementIds() # select category based on the rule
AsValueString が DB.FilterStringRule と連携するための回避策はありますか、または DB.FilterAsValueStringRule のような AsValueString の完全に他のルールはありますか?