/* ============================================================================== * 功能描述:同步幕墙的本地名称、本地编码到幕墙嵌板中? * 创 建 者:Garrett * 创建日期:2018/7/11 14:34:26 * ==============================================================================*/ using System; using System.Collections.Generic; using System.Collections.ObjectModel; using System.Linq; using Autodesk.Revit.DB; using Saga.PlugIn.ModelCheck; using SAGA.DotNetUtils.Extend; using SAGA.DotNetUtils.Others; using SAGA.RevitUtils.Extends; namespace Saga.PlugIn.Other { /// /// CheckEquipInSpace /// public class CopyParameterValue { public static string AllStr = "All"; private ObservableCollection m_parameterDic; private string m_copyFamilyRange; public bool SetCopyParameterDic(ObservableCollection dic, string copyRange) { m_parameterDic = dic; m_copyFamilyRange = copyRange; return (dic.Any()&&!string.IsNullOrWhiteSpace(m_copyFamilyRange)); } public string Execute(Document doc) { try { OperateFloor(doc); doc.Save(); } catch (Exception e) { MessageShowBase.Show(e); } return null; } private void OperateFloor(Document doc) { using (Transaction trans = new Transaction(doc, "复制属性")) { try { trans.Start(); var elements = doc.GetFamilyInstances(); var codes = GetCodes(); foreach (Element element in elements) { var code = element.GetFamilyCode(); if (codes.Contains(AllStr) || code.Contains(code)) foreach (var pair in m_parameterDic) { string origin = pair.Name; string target = pair.Value; if (origin.IsNotNullEmpty() && target.IsNotNullEmpty()) { element.SetParameterValue(target, element.GetParameterString(origin)); } } } trans.Commit(); } catch (Exception e) { Console.WriteLine(e); } } } private string[] GetCodes() { var codes = m_copyFamilyRange?.Split(';', ';'); return codes; } } }