Обработка содержимого Текстовых примечаний
- В этой теме 23 ответа, 7 участников, последнее обновление 6 лет назад сделано Veronica.
-
АвторСообщения
-
А что на ввод идет? Какие элементы?
Выбор элементов по предварительному выбору в Ревит. Брал тут или на другом ресурсе:
sel=[]
elt=[]
sel=uidoc.Selection.Elements
for i in sel:
elt.append(i.ToDSType(False))
OUT = elt
Выбор будет не только TextNote. Элементы TextNote я отдельно выделю и отправлю на получение текста из них.ЛОЛ же ж! Это ж надо, я ещё должен вылавливать ошибки такого типа??? Потратил блин пол часа жизни на бесполезное занятие…
ID поменяй на Id
Я, к сожалению, пока до программирования на Python не дошел. Поэтому взял ваш образец как есть. Там ведь так было. Эта ошибка исправилась, спасибо. Сейчас другая ошибка на строку
outtext.append(doc.GetElement(el).Text)
:
TypeError: expected Reference, got intИваСерж, Alex Ward, большое вам спасибо. Похоже всё заработало.
Интересно, исправили ли этот косяк с TextNote в русской локали в Dynamo 2.0 (из-за которого пришлось придумывать такие костыли)? ))
VeronicaУчастникВ версии 2.0.1 всё по прежнему. =( Пытаюсь автоматизировать запись нагрузок на фундаменты от колонн, которые расчётчик выдаёт в виде текста в автокаде по координатам. На каждую колонну по 5 усилий(!)
Запускать ради этого англ.версию неудобно.
Прошу помощи в Python Script, где я новичок. Ни один из выложенных кодов не сработал…
Есть ли возможность автоматом/скриптом выбирать все текстовые примечания активного/выбранного вида?
В итоге должна получиться марка колонны – что-то подобное.вы можете получити id текстовых примечаний на виде так:
text_notes_ids=FilteredElementCollector(doc,doc.ActiveView.Id).OfCategory(BuiltInCategory.OST_TextNotes).WhereElementIsNotElementType().ToElementIds()
затем используяdoc.GetElement(id)
получить сам элемент (манипуляции при этом нужно делать внутри скрипта, при этом в OUT= … эти элементы подавать не следует (будем ошибка))VeronicaУчастникСпасибо за ответ для тех, кто в теме! Хотелось бы вариант для менее продвинутых. Обидно, что из-за ошибки локализации мы вынуждены искать сложные пути решения простой задачи.
Как это сделать правильно?
import clr
clr.AddReference(“RevitAPI”)
import Autodesk
from Autodesk.Revit.DB import *
clr.AddReference(“RevitServices”)
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
import System
clr.AddReference(“System.Core”)
clr.ImportExtensions(System.Linq)
doc = DocumentManager.Instance.CurrentDBDocument
uidoc = DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument
# Start Transaction
TransactionManager.Instance.EnsureInTransaction(doc)
text_notes_ids=FilteredElementCollector(doc,doc.ActiveView.Id).OfCategory(BuiltInCategory.OST_TextNotes).WhereElementIsNotElementType().ToElementIds()
doc.GetElement(id)
# End Transaction
TransactionManager.Instance.TransactionTaskDone()
OUT = -
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.