0%

记忆存储使用方法

①定义存储数据的类(我放在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);

}