添加项目文件。
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
|
||||
using System.Linq;
|
||||
using System.Windows;
|
||||
|
||||
using Autodesk.Revit.DB;
|
||||
|
||||
using Nice3point.Revit.Toolkit.External.Handlers;
|
||||
|
||||
namespace Szmedi.RvKits.InfoManager
|
||||
{
|
||||
public partial class ReplaceParamValueViewModel : ObservableObject
|
||||
{
|
||||
[ObservableProperty]
|
||||
[NotifyCanExecuteChangedFor(nameof(ReplaceCommand))]
|
||||
private string sourceStr;
|
||||
[ObservableProperty]
|
||||
[NotifyCanExecuteChangedFor(nameof(ReplaceCommand))]
|
||||
private string targetStr;
|
||||
|
||||
[ObservableProperty]
|
||||
[NotifyCanExecuteChangedFor(nameof(ReplaceCommand))]
|
||||
private string propertyName;
|
||||
|
||||
readonly ActionEventHandler handler;
|
||||
|
||||
[ObservableProperty]
|
||||
private bool isSelectedItems;
|
||||
private bool CanRepalce() => !string.IsNullOrEmpty(SourceStr) && !string.IsNullOrEmpty(TargetStr) && !string.IsNullOrEmpty(PropertyName);
|
||||
public ReplaceParamValueViewModel()
|
||||
{
|
||||
handler = new ActionEventHandler();
|
||||
}
|
||||
[RelayCommand(CanExecute = nameof(CanRepalce))]
|
||||
private void Replace()
|
||||
{
|
||||
handler.Raise(
|
||||
uiapp =>
|
||||
{
|
||||
var uidoc = uiapp.ActiveUIDocument;
|
||||
var doc = uidoc.Document;
|
||||
|
||||
doc.Invoke(
|
||||
_ =>
|
||||
{
|
||||
ICollection<ElementId> collection;
|
||||
if (IsSelectedItems)
|
||||
{
|
||||
collection = uidoc.Selection.GetElementIds();
|
||||
if (collection.Count == 0)
|
||||
{
|
||||
MessageBox.Show("请先选中元素");
|
||||
return;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
collection = doc.ActiveView.OfCollector().ToElementIds();
|
||||
}
|
||||
foreach (var id in collection)
|
||||
{
|
||||
var elem = doc.GetElement(id);
|
||||
var param = elem.GetParameters(PropertyName).FirstOrDefault();
|
||||
|
||||
if (param != null && !param.IsReadOnly)
|
||||
{
|
||||
var sourceValue = param.AsString();
|
||||
if (string.IsNullOrEmpty(sourceValue))
|
||||
{
|
||||
sourceValue = param.AsValueString();
|
||||
if (string.IsNullOrEmpty(sourceValue))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
var targetStrValue = sourceValue.Replace(SourceStr, TargetStr);
|
||||
param.SetValueString(targetStrValue);
|
||||
continue;
|
||||
}
|
||||
var targetValue = sourceValue.Replace(SourceStr, TargetStr);
|
||||
param.Set(targetValue);
|
||||
}
|
||||
}
|
||||
},
|
||||
"查找替换属性");
|
||||
MessageBox.Show("替换完成");
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user