Вопрос по скрипту Авторазмер линий
Главная › Форумы › Задать вопрос › Вопрос по скрипту Авторазмер линий
- В этой теме 2 ответа, 1 участник, последнее обновление 6 лет, 1 месяц назад сделано Анатолий.
-
АвторСообщения
-
Добрый день! Хотел бы задать вопрос по скрипту Антона 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>Немного подтянул свои знания, добавил в скрипт советы с поста #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.Насколько понимаю, проблема в самом Reference линий этой цветовой области (Filled Region). Они все почему-то не определяются (равны нолю).
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.