112 lines
4.0 KiB
C#
112 lines
4.0 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
|
|
using Autodesk.Revit.DB;
|
|
|
|
using CommunityToolkit.Mvvm.ComponentModel;
|
|
|
|
namespace Szmedi.RevitToolkit.Approval.Models
|
|
{
|
|
public partial class ReviewItem : ObservableObject
|
|
{
|
|
private readonly string SignParamName;
|
|
|
|
//[ObservableProperty]
|
|
//public partial bool IsSelected { get; set; } = false;
|
|
|
|
[ObservableProperty]
|
|
[NotifyPropertyChangedFor(nameof(FullName))]
|
|
public partial string Sign { get; set; }
|
|
[ObservableProperty]
|
|
[NotifyPropertyChangedFor(nameof(FullName))]
|
|
public partial string Code { get; private set; }
|
|
public ReviewItem(Element element, string signParam = "深圳构件标识")
|
|
{
|
|
Element = element;
|
|
this.SignParamName = signParam;
|
|
Sign = GetParameterValue(element, signParam, "无标识");
|
|
Code = GetParameterValue(element, "AM-100-EAM分类编码", "无编码");
|
|
//Sign = element.GetParameters("深圳构件标识").FirstOrDefault()?.AsString() ?? "无标识";
|
|
//Code = element.GetParameters("AM-100-EAM分类编码").FirstOrDefault()?.AsString() ?? "无编码";
|
|
}
|
|
private string GetParameterValue(Element element, string paramName, string defaultValue)
|
|
{
|
|
var doc = element.Document;
|
|
var param = element.GetParameters(paramName)?.FirstOrDefault();
|
|
var typeParam = doc.GetElement(element.GetTypeId())?.GetParameters(paramName)?.FirstOrDefault();
|
|
string paramValue = typeParam?.AsString() ?? defaultValue;
|
|
if (paramValue == defaultValue)
|
|
{
|
|
paramValue = param?.AsString() ?? defaultValue;
|
|
}
|
|
return paramValue;
|
|
}
|
|
private void SetParameterValue(Element element, string paramName, string value)
|
|
{
|
|
var doc = element.Document;
|
|
var typeParam = doc.GetElement(element.GetTypeId()).GetParameters("深圳构件标识").FirstOrDefault();
|
|
var param = element.GetParameters(paramName).FirstOrDefault();
|
|
|
|
var typeResult = typeParam?.SetValue(value);
|
|
var instanceResult = param?.SetValue(value);
|
|
if (typeResult != true && instanceResult != true)
|
|
{
|
|
MessageBox.Show($"修改失败,请确认是否存在参数:{paramName}");
|
|
}
|
|
}
|
|
partial void OnSignChanged(string value)
|
|
{
|
|
if (value == "无标识")
|
|
{
|
|
return;
|
|
}
|
|
|
|
RvApp.Handler
|
|
.Raise(
|
|
uiapp =>
|
|
{
|
|
if (!Element.IsValidObject)
|
|
{
|
|
return;
|
|
}
|
|
Element.Document
|
|
.Invoke(
|
|
_ =>
|
|
{
|
|
SetParameterValue(Element, "深圳构件标识", value);
|
|
|
|
//var param = Element.GetParameters("深圳构件标识").FirstOrDefault();
|
|
//if (param.AsString() == value)
|
|
//{
|
|
// return;
|
|
//}
|
|
//param.SetValue(value);
|
|
},
|
|
$"修改标识->{value}");
|
|
});
|
|
}
|
|
|
|
public string FullName
|
|
{
|
|
get
|
|
{
|
|
//if (string.IsNullOrEmpty(Sign))
|
|
//{
|
|
// Sign = "无标识";
|
|
//}
|
|
//if (string.IsNullOrEmpty(Code))
|
|
//{
|
|
// Code = "无编号";
|
|
//}
|
|
return $"{Sign} - {Code}";
|
|
}
|
|
}
|
|
|
|
public Element Element { get; }
|
|
}
|
|
}
|