Типы линий в Python

Главная Форумы Задать вопрос Типы линий в Python

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Автор
    Сообщения
  • #10617 Score: 0
    Yrij
    Участник
    2 pts

    Приветствую всех начинающих и гуру!

    У меня возник “затык” (не могу найти решение). Вот и обращаюсь за помощью.

    Есть скрипт который отрисовывает curve на чертежном виде (это у меня получилось с помощью честно подсмотреного)))

    TransactionManager.Instance.EnsureInTransaction(doc)

    for curve in curves:
    detcurve = doc.Create.NewDetailCurve(view, curve.ToRevitType())
    elementlist.append(detcurve)
    TransactionManager.Instance.TransactionTaskDone()

    OUT = elementlist

    И собственно сам вопрос:

    Как назначить тип линии до того как она будет отрисована на виде?

    Если можно использовать   newLineStyleCat.SetLineWeight( weight, GraphicsStyleType.Projection ), то у меня не получается(

    Заранее благодарен всем откликнувшимся.

    #10618 Score: 0
    ИваСерж
    Хранитель
    133 pts

    Привет.

    Как назначить тип линии до того как она будет отрисована на виде?

    Странный вопрос. Нельзя ничему назначить что-то. Например, как можно писать в тетрадке, которой у тебя нет?

    Теперь по теме.
    До окончания выполнения транзакции линии (объекта) в проекте, считай, по факту у тебя нет, но есть уже
    созданный и висящий в оперативке объект, который готов “реализоваться”. Вот к нему и будем применять
    все необходимые изменения.

    Че-то мне эта строчка не нравится… не знаю что такое ToRevitType. Если работает – можно оставить.
    detcurve = doc.Create.NewDetailCurve(view, curve.ToRevitType())

    Далее ищем в ревитАпиДокс свойства линий детализации.
    https://www.revitapidocs.com/2022/082d6c1c-71be-68f2-42ed-9c8f694084c7.htm

    Нам подходит LineStyle. Тем более его можно перезаписывать.
    Только вот проблема найти нужный стиль линий. Я буду задавать тип линий по уже известному названию
    стиля, который был создан раньше. Соответственно толщина, тип (пунктир или цельная), цвет и т.п. уже заданы в этом стиле.
    Если есть желание переназначать для вида эти предустановленные свойства – это уже другая задача.

    Это сложно и пришлось 5 минут погуглить. Решение, как и в 95% случаев, есть у билдинг-кодера.
    Дополнительно комментировать его не буду.
    https://thebuildingcoder.typepad.com/blog/2013/08/retrieving-all-available-line-styles.html

    Осталось перевести всю полученную информацию в питон-код. Я не люблю циклы, поэтому получилось в одну линию.

    style_name = “ИМЯЛЮБИМОЕМОЕ”

    line_cat = doc.Settings.Categories.get_Item(BuiltInCategory.OST_Lines)
    line_subcats = line_cat.SubCategories
    line_new_style = [i for i in line_subcats if i.Name == style_name][0].GetGraphicsStyle(GraphicsStyleType.Projection)

    В транзакции задаём этот тип линии нашей ново-созданной линии.
    detcurve.LineStyle = line_new_style

    PROFIT

    #10619 Score: 1
    Yrij
    Участник
    2 pts

    Благодарю!!!

    Всё получилось

Просмотр 3 сообщений - с 1 по 3 (из 3 всего)
  • Для ответа в этой теме необходимо авторизоваться.