Как развернуть созданное семейство и поменять параметры?
Главная › Форумы › Python › Revit Library (API) › Как развернуть созданное семейство и поменять параметры?
- В этой теме 7 ответов, 3 участника, последнее обновление 8 лет, 4 месяца назад сделано KhonVlad.
-
АвторСообщения
-
KhonVladУчастник
Пишу часть кода
d2 = doc.Create.NewFamilyInstance(point,fam1,view)
w=d2.Parameter[число].AsString()
w=etagi
k=etagiфам1 это аннатационное семейство. оно создается где мне нужно, все хорошо, но никак не могу сделать так, чтобы у созданого семейства поменялись параметры.
Параметры меняются так parameter.Set(x) и нужно открывать транзакцию. Посмотри мой скрипт для ренумерации листов, там все это есть https://www.youtube.com/watch?v=JxeDYtNqlHI
KhonVladУчастнику меня открыта транзакция. я не понимаю почему допустим я могу в помещения таким же примерно кодом поменять информацию а в созданных таблицах нет
KhonVladУчастник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)
clr.ImportExtensions(Revit.Elements)
doc = DocumentManager.Instance.CurrentDBDocument
#—————-ВСЁ ЧТО ВЫШЕ ПРОСТО КОПИРУЕТСЯ———————-
#___________________________________________________________________
#—————-ВВОД ДАННЫХ————————————–view = UnwrapElement(IN[0])
fam = UnwrapElement(IN[1])
fam1=UnwrapElement(IN[5])
rooms=IN[2]
number=IN[3]#”Номер квартиры”
lvlroom=IN[4]#”Этаж”
l=[]
n=[]
w=[]
число=IN[6]
#……………………транзакция вкл……………………
TransactionManager.Instance.EnsureInTransaction(doc)
#__________________________________________________________________
#——————-Удаление всех аннотаций на виде—————–
a = FilteredElementCollector(doc,UnwrapElement(view).Id).OfCategory(BuiltInCategory.OST_GenericAnnotation)
for q in a:
b=UnwrapElement(q).Id
doc.Delete(b)
#——————Создание новых аннотаций на виде—————–
b=len(rooms)
i=0
x=0
z=0
k=0
for room in rooms:
uroom = UnwrapElement(room)
etagi=uroom.Parameter[lvlroom].AsInteger()
nomer=uroom.Parameter[number].AsString()
nomer=int(nomer)
y=nomer*(-7.84)
x=etagi*40
point=XYZ(x,y,z)
dl = doc.Create.NewFamilyInstance(point,fam,view)
l.append(etagi)
n.append(nomer)
if etagi>1 and etagi>k:
y=len(n)*(-7.84)-6.6
x=(etagi-1)*40
point=XYZ(x,y,z)
d2 = doc.Create.NewFamilyInstance(point,fam1,view)
w=d2.Parameter[число].AsString()
w=etagi
k=etagi
else:
k=etagi
p=len(n)
q=len(l)
if nomer>=p and nomer>1:
y=(len(n)+1)*(-7.84)-6.6
x=(etagi)*40
point=XYZ(x,y,z)
d2 = doc.Create.NewFamilyInstance(point,fam1,view)
k=etagi
#……………………транзакция выкл……………………
TransactionManager.Instance.TransactionTaskDone()
#__________________________________________________________________
#————–ВЫВОД ДАННЫХ—————————————-
OUT = roomsу меня вот такой код и параметры не подменяются пчмуто…..
KhonVladУчастникспасибо !!
KhonVladУчастники еще вопрос по коду…. вроде бы все правильно прописал но на выходе список из нулей, хотя площади в помещениях имеют значения не 0
rooms=IN[0]#Массив помещений
a=IN[1]#имя площади
lvlroom=IN[2]# номер уровня
q=[]
for room in rooms:
uroom = UnwrapElement(room)
plowad=uroom.Parameter[a].AsInteger()
q.append(plowad)OUT = q
KhonVladУчастника все понял
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.