Изменение свойств экземпляра семейства, созданного через Python

Главная Форумы Задать вопрос Изменение свойств экземпляра семейства, созданного через Python

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

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

    Александр
    Участник

    Здравствуйте! Пытаюсь сделать первые шаги (как в динамо, так и в пайтоне..). Методом тыка/копипаста создал код (вроде рабочий), получающий на входе Family Types, точку вставки и несколько числовых значений и создающий экземпляр семейства. Подскажите, пожалуйста, как для свежерожденного newobj получить/изменить свойства экземпляра? Ну то бишь, через пайтон сделать примерно то, что делает в  динамо “Element.SetParameterByName”?

    import clr
    clr.AddReference(‘RevitAPI’)
    from Autodesk.Revit.DB import *
    clr.AddReference(“RevitNodes”)
    import Revit
    clr.ImportExtensions(Revit.Elements)
    clr.ImportExtensions(Revit.GeometryConversion)
    clr.AddReference(“RevitServices”)
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    from RevitServices.Transactions import TransactionManager
    from Autodesk.Revit.DB.Structure import *
    clr.AddReference(‘RevitAPIUI’)
    from Autodesk.Revit.UI import *
    clr.AddReference(‘RevitNodes’)
    # импорт и работа с геометрией Dynamo
    clr.AddReference(‘ProtoGeometry’)
    from Autodesk.DesignScript.Geometry import *
    doc = DocumentManager.Instance.CurrentDBDocument
    point = UnwrapElement(IN[0])
    famtype = UnwrapElement(IN[1])
    elementlist = list()
    ST = StructuralType.NonStructural
    TransactionManager.Instance.EnsureInTransaction(doc)
    newobj = doc.Create.NewFamilyInstance(point.ToXyz(),famtype,ST)
    newobj.ToDSType(True)
    elementlist.append(newobj)
    TransactionManager.Instance.TransactionTaskDone()
    OUT = elementlist[0]

     

     

     

    #8609 Score: 0

    Александр
    Участник

    Пару строк добавил, получилось один из параметров созданного экземпляра семейства изменить. Но почему-то оный параметр, который должен был задаваться входным параметром в строке p.Set(IN[2]), принимает какие-то непредсказуемые значения. Попробовал задавать значение числом (p.Set(400.0) ) , – почему-то в модели получаю значение параметра Диаметр сваи = 121920..

     

    import clr
    clr.AddReference(‘RevitAPI’)
    from Autodesk.Revit.DB import *
    clr.AddReference(“RevitNodes”)
    import Revit
    clr.ImportExtensions(Revit.Elements)
    clr.ImportExtensions(Revit.GeometryConversion)
    clr.AddReference(“RevitServices”)
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    from RevitServices.Transactions import TransactionManager
    from Autodesk.Revit.DB.Structure import *
    clr.AddReference(‘RevitAPIUI’)
    from Autodesk.Revit.UI import *
    clr.AddReference(‘RevitNodes’)
    # импорт и работа с геометрией Dynamo
    clr.AddReference(‘ProtoGeometry’)
    from Autodesk.DesignScript.Geometry import *
    doc = DocumentManager.Instance.CurrentDBDocument
    point = UnwrapElement(IN[0])
    famtype = UnwrapElement(IN[1])
    elementlist = list()
    ST = StructuralType.NonStructural
    TransactionManager.Instance.EnsureInTransaction(doc)
    newobj = doc.Create.NewFamilyInstance(point.ToXyz(),famtype,ST)
    p=newobj.LookupParameter(“Диаметр сваи”)
    p.Set(IN[2])
    newobj.ToDSType(True)
    elementlist.append(newobj)
    TransactionManager.Instance.TransactionTaskDone()
    OUT = elementlist[0]

    #8613 Score: 0

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

    Добрый день! ИваСерж в посте #7850 объясняет поведение питона. Вам необходимо разделить в коде необходимую длину на 304,8.

    #8618 Score: 0

    Александр
    Участник

    Понял, спасибо! Была мысль о единицах измерения, но с дюймами как-то не срослось с коэффициентом. В сторону футов посмотреть не  догадался!

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

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