Размещение на виде семейства
Главная › Форумы › Задать вопрос › Размещение на виде семейства
Помечено: FamilySymbol, NewFamilyInstance[Line, view
- В этой теме 1 ответ, 2 участника, последнее обновление 5 лет назад сделано ИваСерж.
-
АвторСообщения
-
AlexandrУчастник
Размещение семейства 2D «Элементы узлов» на основе линии (Line) на виде (View)
При помощи метода NewFamilyInstance.Overloads[Line, FamilySymbol, View] не получается разместить семейство. Выдает ошибку Exception: The line is not in the plane of view. Parameter name: line
Подскажите как исправить?
import clr
clr.AddReference(‘ProtoGeometry’)
from Autodesk.DesignScript.Geometry import *
clr.AddReference(‘RevitAPI’)
from Autodesk.Revit.DB import *
clr.AddReference(“RevitNodes”)
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference(“RevitServices”)
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
clr.AddReference(“RevitNodes”)
import Revit
clr.ImportExtensions(Revit.Elements)
doc = DocumentManager.Instance.CurrentDBDocument
#—————-ВСЁ ЧТО ВЫШЕ ПРОСТО КОПИРУЕТСЯ———————-
#___________________________________________________________________
#—————-ВВОД ДАННЫХ————————————–
#StartPoint = XYZ(35, 60, 0)
#EndPoint = XYZ(20, 60, 0)
view = UnwrapElement(IN[0])
fam = UnwrapElement(IN[1])
curve = UnwrapElement(IN[2])
st_pt = curve.StartPoint
end_pt = curve.EndPoint
line = Line.CreateBound(st_pt.ToXyz(), end_pt.ToXyz())
#line = Line.CreateBound(XYZ(-23, 45, 0), XYZ(-37, 45, 0))#……………………транзакция вкл……………………
TransactionManager.Instance.EnsureInTransaction(doc)
#__________________________________________________________________
#——————-Удаление всех аннотаций на виде—————–
a = FilteredElementCollector(doc,UnwrapElement(view).Id).OfCategory(BuiltInCategory.OST_GenericAnnotation)
for k in a:
b=UnwrapElement(k).Id
doc.Delete(b)
#——————Создание новых аннотаций на виде—————–dl = doc.Create.NewFamilyInstance.Overloads[Line, FamilySymbol, View](line,fam,view)
#__________________________________________________________________
#……………………транзакция выкл……………………
TransactionManager.Instance.TransactionTaskDone()
#__________________________________________________________________
#————–ВЫВОД ДАННЫХ—————————————-
OUT = dlПервый раз вижу такой странный синтаксис. Разве надо вызывать Оверлоадс?
Само перезагружается в зависимости от подаваемых в метод параметров.
Т.е. принцип, как я понимаю, такой, в метод поочереди засовываются
данные. Если данные вызывают ошибку, вызывается другой метод.
И так до тех пор, пока не закончатся перезаписываемые методы.
Если ни один результат не подошел – выдаст ошибку.Т.е. запись должна выглядеть так
dl = doc.Create.NewFamilyInstance(line,fam,view)Заодно увидел ошибку – анврапать элементы, вытянутые из Ревита коллектором не нужно.
Врап, т.е. обертка, нужна для Динамо. Т.е. Динамо работает не совсем с объектами Ревита.
Динамо “оборачивает” объект ревита в обёртку, добавляя к объекту дополнительные методы,
которых нет в чистом РевитАпи. Врезультате этот самый чистый РевитАпи больше не может
работать с обёрнутым объектом. -
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.