Python_Zip Function_1

Un recurso muy útil a la hora de organizar listas en pithon es utilizar la función zip()

En este ejemplo utilizamos la función zip para ordenar los ids y las habitaciones en una lista que nos podría servir por ejemplo para exportar a un excel.

import clr

clr.AddReference('ProtoGeometry')
from Autodesk.DesignScript.Geometry import *

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager

doc = DocumentManager.Instance.CurrentDBDocument
uidoc=DocumentManager.Instance.CurrentUIApplication.ActiveUIDocument

elementos = UnwrapElement(IN[0])

rooms =[]
roomsIDs=[]

for elemento in elementos:
	rooms.append(elemento.ToString())
	roomsIDs.append(elemento.Id)
	
OUT = zip(rooms,roomsIDs)

Este post está numerado a propósito, con el objetivo de ir escalando el código empleado para reutilizar y aumentar la funcionalidad del mismo.

El siguiente objetivo será conseguir los parámetros “útiles” de la habitaciones y desarrollar alguna función que podamos reutilizar más adelante…..

El camino de los circuitos

import clr

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument

clr.AddReference('RevitAPI')
import Autodesk
from Autodesk.Revit.DB import *

clr.AddReference('RevitNodes')
import Revit
clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)


paths = UnwrapElement(IN[0])
elecPath_list = list()

for path in paths:
	try:
		elecPath_list .append(path.GetCircuitPath())
	except:
		elecPath_list .append(list())

OUT = elecPath_list

A raiz de un proyecto en el que tenemos 472 viviendas hemos tenido la necesidad de obtener LGA de alimentación de manera automática.

Con un pequeño Python Scritp accedemos a una funcionalidad muy útil de los circuitos de revit para el cálculo de caídas de tensión.

Provides access to the Electrical System in Autodesk Revit MEP.
public IList<XYZ> GetCircuitPath()

https://www.revitapidocs.com/2019/0448a0ee-c9bf-f037-c1b7-d49ce03ffa71.htm

Interiorismo con diseño paramétrico

Muy interesante el post publicado en la web oficial de Dynamo en la que se muestra un proceso de integración de diseño parámetrico aplicado a un proyecto de alumbrado de interior con una boveda.

Ref: #LUCIE HANZLÍKOVÁ https://dynamobim.org/parametric-principles-in-the-interior/

https://www.vibia.com/en/int/hanging-lamps-algorithm-hanging

Los nodos clave que se utilizan :

“Select Faces” >> Para seleccionar las caras de las bovedas y la superfice superior.

“Surface Point At Parameter” >> Para encontrar el punto más alto de la boveda y replantear los puntos donde colocaremos el alumbrado.

“Poly Surfaces. ByJoinedSurfaces” >> Para unir las bovedas

“PointProject” >> Para proyectar los puntos de la superficie obtenidos mediante un rango sobre la bóveda.

“Geometry.DistanceTo” >> Para obtener las longitudes de las luminarias desde el techo hasta la bóveda.

“Geometry. Translate” >> para ajustar los puntos de replanteo de luminarias.

“FamilyInstance.ByPointAndLevel” >> para los colocar los elementos.