Вопрос по скрипту Авторазмер линий

Главная Форумы Задать вопрос Вопрос по скрипту Авторазмер линий

В этой теме 1 ответ, 1 участник, последнее обновление  Анатолий 1 месяц назад.

Просмотр 2 сообщений - с 1 по 2 (из 2 всего)
  • Автор
    Сообщения
  • #8264 Score: 0

    Анатолий
    Участник
    11 pts

    Добрый день! Хотел бы задать вопрос по скрипту Антона Auto dimension of model line Авторазмер линий, которым он хорошо дополняет скрипт Хасана по развертке крыши. К сожалению, протестрировав в 2018-й версии ревита, скрипт выдает ошибку, не может обработать строку line = UnwrapElement(i).GeometryCurve и последующие из-за, так понимаю, отсутствия теперь команды GeometryCurve. Прошу подсказать альтернативу, пока что найти не смог..Ссылка на скрипт http://dynamobim.ru/cmdownloads/%d0%b0%d0%b2%d1%82%d0%be%d1%80%d0%b0%d0%b7%d0%bc%d0%b5%d1%80-%d0%bb%d0%b8%d0%bd%d0%b8%d0%b9-auto-dimension-of-model-line/ . Для удобства файлик ревит https://drive.google.com/open?id=1Kybs_L1ynIkgzSF39cZTs6uA1MKdg-Pd

    На данный момент имею

    gopt = Options()
    gopt.ComputeReferences = True
    view = doc.ActiveView
    gopt.View = view
    elem=IN[0]
    ref= ReferenceArray()
    d=IN[1]
    p1=Point.ByCoordinates(0,0)
    p2=Point.ByCoordinates(0,d)
    vec1=Vector.ByTwoPoints(p1,p2).ToXyz()
     
    p3=Point.ByCoordinates(d,0)
    vec2=Vector.ByTwoPoints(p1,p3).ToXyz()
     
     
    TransactionManager.Instance.EnsureInTransaction(doc)
    for t in IN[0]:
        k = UnwrapElement(t).GetBoundaries()
        for r in k:
            for i in r:
                line = i.ToProtoType()
                length=line.Length
                dirX=line.Direction.X/length
                dirY=line.Direction.Y/length
                a = i.GetEndPointReference(0)
                ref.Append(a)
                b = i.GetEndPointReference(1)
                ref.Append(b)
                newdim = doc.Create.NewDimension(doc.ActiveView, i, ref)
                newdim.ToDSType(False)
                if abs(dirX) < 0.1:
                    ElementTransformUtils.MoveElement(doc,newdim.Id,vec2)
                else:
                    ElementTransformUtils.MoveElement(doc,newdim.Id,vec1)
                ref.Clear()
    TransactionManager.Instance.TransactionTaskDone()

    Скрипт выдает ошибку File “<string>”, line 60, in <module>
    Exception: Invalid number of references. 60-я строка это newdim = doc.Create.NewDimension(doc.ActiveView, i, ref)
    P.S. Не к теме. Пытался вставить через pastebin, но к сожалению, дает только ссылку, делал все по инструкции.
    <iframe src=”https://pastebin.com/embed_iframe/Ric7vTj0″ style=”border:none;width:100%”></iframe>

    #8270 Score: 0

    Анатолий
    Участник
    11 pts

    Немного подтянул свои знания, добавил в скрипт советы с поста #7455
    clr.AddReference(‘ProtoGeometry’)
    import Autodesk.DesignScript.Geometry as ge #чтобы различать библиотеки
    Далее
    p1=ge.Point.ByCoordinates(0,0)
    p2=ge.Point.ByCoordinates(0,d)
    vec1=ge.Vector.ByTwoPoints(p1,p2).ToXyz()
    p3=ge.Point.ByCoordinates(d,0)
    vec2=ge.Vector.ByTwoPoints(p1,p3).ToXyz()

    Дальше пока по скрипту не получается, при вставке ссылки на библиотеку ge. выскакивает ошибка AttributeError: attribute ‘i’ of ‘namespace#’ object is read-only, если оставить по-старому, ошибка прежняя Invalid number of references.

Просмотр 2 сообщений - с 1 по 2 (из 2 всего)

Для ответа в этой теме необходимо авторизоваться.