Сообщество программистов Autodesk в СНГ

ADN Club => Revit API => Тема начата: Hugh от 31-03-2017, 19:03:28

Название: Как изменить толщину линии
Отправлено: Hugh от 31-03-2017, 19:03:28
Возможно, глупый вопрос, но... Я создаю линию и меняю её цвет вот таким кодом:
Код - C# [Выбрать]
  1. Line line = Line.CreateBound(A, B);            
  2. ModelCurve mc = doc.Create.NewModelCurve(line, sp);
  3. GraphicsStyle gs = mc.LineStyle as GraphicsStyle;
  4. gs.GraphicsStyleCategory.LineColor = new Autodesk.Revit.DB.Color(250, 10, 10);

Всё работает, всё ок. Но как мне поменять толщину линии? Я уже запутался в LineStyle, LinePattern, GraphicsStyleCategory, GraphicsStyleType и т.п. Прошу помощи.
Название: Re: Как изменить толщину линии
Отправлено: Виктор Чекалин от 31-03-2017, 19:47:40
Hugh,
У конкретной линии толщину поменять нельзя. Внешний вид линии создается через ее стиль (LineStyle).
(https://s11.postimg.org/f89pf5hen/2017-03-31_2142.png) (https://postimg.org/image/f89pf5hen/)
У каждого стиля есть параметр - Вес
(https://s29.postimg.org/a4i60c0ab/2017-03-31_2143.png) (https://postimg.org/image/a4i60c0ab/)
Вес задается значением от 1 до 16, но это не толщина, а условная единица. Реальная толщина - в таблице весов.
(https://s12.postimg.org/je8d1xhnd/2017-03-31_2145.png) (https://postimg.org/image/je8d1xhnd/)

Таким образом, нужно менять стиль. А стиль с нужно толщиной, либо предварительно создать в интерфейсе, либо через API. Зависит от задачи.
Вообще тут стандартный совет. Попробовать достичь сначала нужный результат в интерфейсе и затем автоматизировать его через API


Название: Re: Как изменить толщину линии
Отправлено: Hugh от 03-04-2017, 14:00:23
Спасибо, я справился. Создал новый стиль (нашёл готовый код), создал линию, после этого
Код - C# [Выбрать]
  1. Category parentCategory = doc.Settings.Categories.get_Item(BuiltInCategory.OST_Lines);          
  2. Category myCategory = parentCategory.SubCategories.get_Item("New LineStyle");
  3. GraphicsStyle gs = myCategory.GetGraphicsStyle(GraphicsStyleType.Projection);
  4. mc.LineStyle = gs;

Спасибо за подсказки!