Disallow Joins na staklenim stijenama (Curtain Walls) pomoću Dynama
Sprječavanje spajanja (Disallowing joins) na staklenim stijenama (Curtain Walls) u Revit®-u je naporan posao.
Dobra stvar je da je problem moguće riješiti pomoću malo Dynama.
Ako ste poput mene i ne volite ovisiti o raznim paketima za Dynamo (Dynamo packages), a posebice radi ovako jednostavnih zadataka onda ćete morati napisati i malo Python koda. On će nam pomoći da jednostavno otkačimo “spajače” (?) na krajevima staklenih stijena (Curtain Walls).
Dynamo datoteku možete besplatno preuzeti ili ju napravite sami. Ako ju skinete, vidjet ćete da ima dvije opcije: da otkači spajače na odabranim ili na svim instancama “Curtain Walls (kako prikazuje narančasta linija na slici ispod).
Ako imate problema sa selektiranjem Curtain Walls, pročitajte članak kako isključiti vidljivost Curtain Walls familije pa prema njemu napravite inverzni filter.
Čvor (node) s Python kodom izgleda ovako (komentari su unutar koda):
##### Početak općenitog uvoza referenci i biblioteka
import clr
# uvoz Revit API
clr.AddReference("RevitAPI")
import Autodesk
from Autodesk.Revit.DB import *
# uvoz Revit® Elements
clr.AddReference("RevitNodes")
import Revit
clr.ImportExtensions(Revit.Elements)
# uvoz DocumentManager-a i TransactionManager-a
clr.AddReference("RevitServices")
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
# dohvati trenutni Revit model (dokument)
doc = DocumentManager.Instance.CurrentDBDocument
##### Završetak općenitog uvoza
# "Odmotavanje" ulaznih podataka (selekcije)
inputs = UnwrapElement( IN[0] )
curtainWalls = []
# Inicijalizacija brojača
n = 0
# Iz ulaznih podataka izaberi samo instance Curtain Walls i stavi u listu curtainWalls
for e in inputs:
try:
elementType = doc.GetElement(e.GetTypeId())
if elementType.Kind == WallKind.Curtain:
curtainWalls.append(e)
n = n + 1
except:
print("not curtain wall")
# Početak transakcije
TransactionManager.Instance.EnsureInTransaction(doc)
for e in curtainWalls:
Autodesk.Revit.DB.WallUtils.DisallowWallJoinAtEnd(e, 0)
Autodesk.Revit.DB.WallUtils.DisallowWallJoinAtEnd(e, 1)
# Kraj transakcije
TransactionManager.Instance.TransactionTaskDone()
# Zamotaj izlazne rezultate (samo za debug)
OUT = ["Disallowed joins on walls: " + str(n), curtainWalls]
PREUZMI DYNAMO SKRIPTU
Hope you get good use of it!
Pingback: Kako sakriti Curtain Walls u Revit prikazu - engipedia