Поделиться:
Уведомления
Очистить все

The line is not in the plane of view. Dynamo Python

4 Записи
2 Пользователи
1 Reactions
102 Просмотры
1
Создатель темы

Доброго времени суток, уважаемые коллеги, столкнулся на мой взгляд с глупой проблемой. В общем, беру вектор из элементов трубопроводной системы и по нему создаю линию в чертежном виде ByStartPointDirectionLength и получаю ошибку "The line is not in the plane of view." Отправлю скрины координат векторов элементов и листинг данного кода.

 

----------------------------------------------import sys
import clr
clr.AddReference('ProtoGeometry')
clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.DesignScript.Geometry import*
clr.AddReference("RevitNodes")
import Revit
from Revit.Elements import*
import Autodesk
clr.ImportExtensions(Revit.Elements)
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument
view = UnwrapElement(IN[0]) 
x = 0
l = IN[3]
n = len(IN[1])
elementlist = list()
TransactionManager.Instance.EnsureInTransaction(doc)
gp = doc.Create.NewFamilyInstance(XYZ(0,0,0), UnwrapElement(IN[2][1][0]), view) # Ставим значок граница проектирования
elementlist.append(gp)
vector = UnwrapElement(IN[4])
vec = []
for i in range(len(vector)):
    vec.append(i)
pstart = Point.ByCoordinates(0, 0, 0)

for i in range(n):
    if UnwrapElement(IN[1][i]).Category.Name != "Соединительные детали трубопроводов" and IN[1][i].GetParameterValueByName("Номер УГО") != 0:
        if UnwrapElement(IN[1][i]).Category.Name == "Трубы":

            #pstart = Point.ByCoordinates(x, 0, 0)
            line = Line.ByStartPointDirectionLength(pstart, vector[i], l)
            x = x + l
            pstart = line.EndPoint

            newobj = doc.Create.NewFamilyInstance(line.ToRevitType(), UnwrapElement(IN[2][0][0]), view)                
            elementlist.append(newobj.ToDSType(False))
        
#element = doc.Create.NewFamilyInstance(point, UnwrapElement(IN[2][0][0]), view)
TransactionManager.Instance.TransactionTaskDone()
OUT = vec

--------------------------------------------------------------------------------------------

P.S. до этого была проблема со строкой line = Line.ByStartPointDirectionLength(pstart, vector[i], l), в частности не мог разобраться как передать вектор, писал ошибку типа "Expected Vector, got list[object]". Может быть не смог исправить, но такой ошибки нет, сейчас с расположением вне плана.

 

Безымянный
Тема была редактированна 6 дней назад от Анастасия Кравцова
4 Ответов
0

@kaborda 

Чтобы хоть как-то ответить на ваш запрос нужно понимать что вы подаете в слоты. 
У вас там много всего IN[0], IN[1]... и т.д.
Не ясно что вы туда подаете и какие там типы данных.

Для чего у вас elementlist?

BIM-менеджер
Соавтор шаблонов ADSK КЖ/КМ 2021
Инженер-проектировщик КР, КЖ
Телеграм
Правила форума и некоторые нюансы по работе с текстовым редактором

0
Создатель темы

@askravcova
Здравствуйте, на IN[0] подаю вид, на котором будут располагаться элементы, на IN[1] подаю список  упорядоченных элементов (трубы, арматура, соед. детали), IN[2] это УГО семейства этих элементов, IN[3] - длина семейства УГО, IN[4] - вектор фактического элемента, IN[5] - четверть, в которой располагается элемент (это уже не нужно по идее). И собственно возникает ошибка "The line is not in the plane of view. Parameter name: line". P.s. лист создаю на чертежных видах.

Это сообщение было изменено 5 дней назад от KABORDA
0
Создатель темы

Попробовал уменьшить значения X, Y, Z и Length соответственно у векторов, через команду Scale, тоже не помогло 

0

@kaborda 

В ваших ответах очень сложно ориентироваться. 

Вы представьте, что Вы пишете скрипт уже некоторое время и в нем ориентируетесь. Сюда же скинули лишь фрагмент питон кода и текстовое описание что подается и куда. Разобраться с типами в текстовом представлении достаточно сложно, и займет целую кучу времени. 

Скиньте скриншот вашего скрипта, с развернутыми нодами, чтобы было видно что получаете, в это же сообщение приложите картинку с кодом python. Это поможет вникнуть в вашу задумку и попытаться найти ошибку. 

Пока что, на данный момент, мне видится проблема в том, что вы линию рисуете не в плоскости вида, но это только предположение

BIM-менеджер
Соавтор шаблонов ADSK КЖ/КМ 2021
Инженер-проектировщик КР, КЖ
Телеграм
Правила форума и некоторые нюансы по работе с текстовым редактором

Ответ