①定义存储数据的类(我放在Data文件夹下HPLEAlignOptionsData.cs):
///
/// 横管对齐 扩展存储数据类
///“1596ed6b-8302-e2d6-dff3-7be0beacf88b”是自己设的GUID,只要满足与其他功能 的GUID ///不重复且符合GUID格式即可
///
[Schema(“1596ed6b-8302-e2d6-dff3-7be0beacf88b”, “HPLEAlignOptionsData”, Documentation = “横管对齐选项数据”)]
public class HPLEAlignOptionsData : IRevitEntity
{
[Field(Documentation = “是否顶对齐”)]
public bool IsAlignToTop { get; set; }
[Field(Documentation = “是否中对齐”)]
public bool IsAlignToCenter { get; set; }
[Field(Documentation = “是否底对齐”)]
public bool IsAlignToBottom { get; set; }
[Field(Documentation = “是否是参照对齐模式”)]
public bool IsBenchAlign { get; set; }
[Field(Documentation = “是否是标高对齐模式”)]
public bool IsLevelAlign { get; set; }
[Field(Documentation = “当前选中的标高”, UnitType = UnitType.UT_Number)]
public int CuSelectedLevelIndex { get; set; }
[Field(Documentation = “偏移值”)]
public string Offset { get; set; }
[Field(Documentation = “是否计算保温”)]
public bool IsInsulationCount { get; set; }
}
②ViewModel中读取,ViewModel要引用Revit.ES.Extension.dll或者VCExtensibleStorageExtension.dll(推荐):
界面初始化
//读取被存储在项目信息中的本插件上次运行的选项
optionsDataHelper = new HPLEAlignOptionsHelper();
HPLEAlignOptionsData storagedOptions = optionsDataHelper.GetOptions(m_Doc.ProjectInformation);
if (storagedOptions == null || storagedOptions.Offset is null)
{
//界面选项初始化
IsAlignToBottom = true;
IsBenchAlign = true;
CuSelectedLevel = LevelItemSource.First();
Offset = “3000”;
IsInsulationCount = true;
}
else
{
IsAlignToBottom = storagedOptions.IsAlignToBottom;
IsAlignToCenter = storagedOptions.IsAlignToCenter;
IsAlignToTop = storagedOptions.IsAlignToTop;
IsBenchAlign = storagedOptions.IsBenchAlign;
IsLevelAlign = storagedOptions.IsLevelAlign;
if(storagedOptions.CuSelectedLevelIndex < LevelItemSource.Count)
{
CuSelectedLevel = LevelItemSource[storagedOptions.CuSelectedLevelIndex];
}
Offset = storagedOptions.Offset;
IsInsulationCount = storagedOptions.IsInsulationCount;
}
③读取写入存储数据的方法://这个方法可以放ViewModel,也可以放随便哪个文档:
///
/// 横管对齐 扩展存储数据工具类
///
public class HPLEAlignOptionsHelper
{
//读取
public HPLEAlignOptionsData GetOptions(ProjectInfo projectInfo)
{
HPLEAlignOptionsData optionsData = projectInfo.GetEntity
if (optionsData != null)
return optionsData;
return new HPLEAlignOptionsData();
}
//写入
public void SetOptions(ProjectInfo projectInfo, HPLEAlignOptionsData optionsData)
{
projectInfo.SetEntity(optionsData);
}
}
④、写入存储数据:
///
/// 保存当前窗口选项的选择
///
public void SaveWpfOption()
{
var newStorageOptions = new HPLEAlignOptionsData();
newStorageOptions.IsAlignToBottom = IsAlignToBottom;
newStorageOptions.IsAlignToCenter = IsAlignToCenter;
newStorageOptions.IsAlignToTop = IsAlignToTop;
newStorageOptions.IsBenchAlign = IsBenchAlign;
newStorageOptions.IsLevelAlign = IsLevelAlign;
newStorageOptions.CuSelectedLevelIndex = LevelItemSource.IndexOf(CuSelectedLevel);
newStorageOptions.Offset = Offset;
newStorageOptions.IsInsulationCount = IsInsulationCount;
optionsDataHelper.SetOptions(m_Doc.ProjectInformation, newStorageOptions);
}