[CommandMethod("SetStyleAndRulesForPartSize")]
public void SetStyleAndRulesForPartSize()
{
Document adoc = Application.DocumentManager.MdiActiveDocument;
Database db = adoc.Database;
Editor ed = adoc.Editor;
CivilDocument cdoc = CivilDocument.GetCivilDocument(db);
// Коллекция ID труб в документе
ObjectIdCollection netIds = cdoc.GetPipeNetworkIds();
// Коллекция ID стилей труб в документе
PipeStyleCollection pipeStyleIds = cdoc.Styles.PipeStyles;
// Коллекция ID наборов правил для труб
PipeRuleSetStyleCollection pipeRuleSetIds = cdoc.Styles.PipeRuleSetStyles;
if (netIds.Count > 0)
{
// Берем первую сеть
ObjectId netId = netIds[0];
using (Transaction tr = db.TransactionManager.StartTransaction())
{
Network net = tr.GetObject(netId, OpenMode.ForRead) as Network;
// Получаем связанный с сетью список элементов
PartsList partsList = tr.GetObject(net.PartsListId, OpenMode.ForRead) as PartsList;
// Получаем коллекцию ID семейств труб в этом списке
ObjectIdCollection pipeFamIds = partsList.GetPartFamilyIdsByDomain(DomainType.Pipe);
// Если семейства есть
if (pipeFamIds.Count > 0)
{
// Получаем первое
PartFamily family = tr.GetObject(pipeFamIds[0], OpenMode.ForWrite) as PartFamily;
// Проходим по типоразмерам в семействе
for (int i = 0; i < family.PartSizeCount; i++)
{
// Текущий размер части
PartSize partSize = tr.GetObject(family[i], OpenMode.ForWrite) as PartSize;
// Задаем стиль по порядковому номеру
partSize.PartStyleId = pipeStyleIds[0];
// Или задаем стиль по имени
partSize.PartStyleId = pipeStyleIds["Мой стиль трубы"];
// Задаем набор правил по порядковому номеру
partSize.RulesStyleId = pipeRuleSetIds[0];
// Или задаем набор правил по имени
partSize.RulesStyleId = pipeRuleSetIds["Мои правила для трубы"];
}
}
tr.Commit();
}
}
}