83 lines
3.0 KiB
C#
83 lines
3.0 KiB
C#
|
|
using System;
|
|||
|
|
using System.Collections.Generic;
|
|||
|
|
using System.Linq;
|
|||
|
|
using System.Text;
|
|||
|
|
using Autodesk.Revit.Attributes;
|
|||
|
|
using Autodesk.Revit.DB;
|
|||
|
|
using Autodesk.Revit.UI;
|
|||
|
|
using Sai.RvWrapper.Shared;
|
|||
|
|
|
|||
|
|
namespace SZBIM.StandardTools.ParameterManager
|
|||
|
|
{
|
|||
|
|
[Transaction(TransactionMode.Manual)]
|
|||
|
|
[Regeneration(RegenerationOption.Manual)]
|
|||
|
|
public class ModifyParamValuesHandler : IExternalEventHandler
|
|||
|
|
{
|
|||
|
|
public List<Element> ElementsSelected { get; set; }
|
|||
|
|
public Parameter ParameterSelected { get; set; }
|
|||
|
|
public string Value { get; set; }
|
|||
|
|
|
|||
|
|
public void Execute(UIApplication uiapp)
|
|||
|
|
{
|
|||
|
|
UIDocument uidoc = uiapp.ActiveUIDocument;
|
|||
|
|
Document doc = uidoc.Document;
|
|||
|
|
StringBuilder sb = new StringBuilder();
|
|||
|
|
doc.Invoke(ts =>
|
|||
|
|
{
|
|||
|
|
foreach (var elem in ElementsSelected)
|
|||
|
|
{
|
|||
|
|
var param = elem.GetParameters(ParameterSelected.Definition.Name).FirstOrDefault();
|
|||
|
|
if (param == null)
|
|||
|
|
{
|
|||
|
|
var symbolOrType = doc.GetElement(elem.GetTypeId());
|
|||
|
|
param = symbolOrType.GetParameters(ParameterSelected.Definition.Name).FirstOrDefault();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
try
|
|||
|
|
{
|
|||
|
|
if (param != null)
|
|||
|
|
switch (param.StorageType)
|
|||
|
|
{
|
|||
|
|
case StorageType.None:
|
|||
|
|
break;
|
|||
|
|
case StorageType.Integer:
|
|||
|
|
param.Set(Convert.ToInt16(Value));
|
|||
|
|
break;
|
|||
|
|
case StorageType.Double:
|
|||
|
|
param.Set(Convert.ToDouble(Value));
|
|||
|
|
break;
|
|||
|
|
case StorageType.String:
|
|||
|
|
param.Set(Value);
|
|||
|
|
break;
|
|||
|
|
case StorageType.ElementId:
|
|||
|
|
param.Set(new ElementId(Convert.ToInt16(Value)));
|
|||
|
|
break;
|
|||
|
|
default:
|
|||
|
|
throw new ArgumentOutOfRangeException();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
catch (Exception e)
|
|||
|
|
{
|
|||
|
|
if (!sb.ToString().Contains(e.Message))
|
|||
|
|
{
|
|||
|
|
sb.AppendLine(e.Message);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
});
|
|||
|
|
if (!string.IsNullOrEmpty(sb.ToString()))
|
|||
|
|
{
|
|||
|
|
TaskDialog.Show("错误", sb.ToString());
|
|||
|
|
}
|
|||
|
|
else
|
|||
|
|
{
|
|||
|
|
TaskDialog.Show("提示", "修改完成!");
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
public string GetName()
|
|||
|
|
{
|
|||
|
|
return "修改参数值";
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
}
|