Professional Documents
Culture Documents
FRMULAS PARA EL DA A DA
Este post est basado en una entrada en revitforum.org de Klaus Munkholm.
Para explotar todas las capacidades del editor de familias de Revit, es muy importante conocer qu frmulas
tenemos a nuestra disposicin para controlar los parmetros de las familias. Obviamente no tenemos todas
las capacidades que podramos utilizar en una hoja de clculo de Excel, pero s las suficientes para poder
construir familias con un comportamiento inteligente.
A continuacin paso a transcribiros y a poner algunos ejemplos de las frmulas que tenemos disponibles y
cul es su sintaxis, que es prcticamente igual que en Excel.
Operadores bsicos
Suma: +
Resta: Multiplicacin: *
Divisin: /
Exponencial: ^: x^y, x elevado a la potencia de y
Logaritmo: log(x)
Raz cuadrada:
De un valor = sqrt(16)
De un parmetro = sqrt(Anchura)
De una frmula = sqrt(Anchura + Altura)
Seno: sin(x)
Coseno: cos(x)
Tangente: tan(x)
Arcoseno: asin(x)
Arcocoseno: acos(x)
Arcotangente: atan(x)
e elevado a una potencia de x: exp(x)
Valor absoluto: abs(x)
Pi: pi()
www.arquitecton.es
info@arquitecton.es
Revit 2014
Forzar marcado
=1<2
Forzar no marcado
=1>2
Instrucciones condicionales
Se pueden usar instrucciones condicionales en las frmulas para definir acciones en una familia que depende
del estado de otros parmetros.
Las instrucciones condicionales usan la siguiente estructura:
IF(<condicin> , <resultado-si-verdadera> , <resultado-si-falsa> )
Esto significa que los valores especificados para el parmetro dependen de si la condicin se cumple
(verdadera) o no (falsa).
Operadores condicionales soportados
Las instrucciones condicionales pueden contener valores numricos, nombres de parmetros numricos y
parmetros S/No.
Por el momento, <= y >= no se han implementado. Para expresar esta clase de comparacin se puede
emplear un operador lgico NOT. Por ejemplo, a<=b se puede expresar como NOT(a>b).
A continuacin se presentan varias frmulas de ejemplo con instrucciones condicionales:
IF simple:
o = IF ( Longitud < 3000 mm , 200 mm , 300 mm )
IF con un parmetro de texto:
o = IF ( Longitud > 350mm , Texto 1 , Texto 2 )
IF con AND lgico:
o = IF ( AND ( x = 1 , y = 2 ), 8 , 3 )
www.arquitecton.es
info@arquitecton.es
Revit 2014
IF con OR lgico:
o = IF ( OR ( A = 1 , B = 3 ) , 8 , 3 )
Instrucciones IF anidadas:
o = IF ( Longitud < 350mm , 50mm , IF ( Longitud < 450mm , 60mm , IF
( Longitud < 550mm , 70mm , 80mm ) ) )
IF con condicin S/No:
o = Longitud > 40 (si es verdadero devuelve una casilla marcada, si es falso, una casilla sin
marcar)
NOT con condicin S/No:
o = NOT ( Param ) Devuelve una casilla marcada si el parmetro "Param" no est marcado y
viceversa.
Redondeo
Desde la versin de Revit de 2012 tambin podemos utilizar expresiones de redondeo.
Redondeo
Round(x)
La funcin redondeo devuelve el nmero entero ms cercano al evaluado. No tiene en consideracin la
direccin del redondeo (arriba o abajo).
Ejemplos:
round ( 23.4 ) = 23
round ( 23.5 ) = 24
round ( 23.6 ) = 24
round ( -23.4 ) = -23
round ( -23.5 ) = -23
round ( -23.6 ) = -24
Rounddown(x)
x es un valor sin unidad que devuelve el nmero entero de valor menor ms cercano o igual a "x".
Ejemplos:
rounddown ( 23.0 ) = 23
rounddown ( 23.5 ) = 23
rounddown ( 23.9 ) = 23
rounddown ( -23.0 ) = -23
rounddown ( -23.5 ) = -24
rounddown ( -23.9 ) = -24
www.arquitecton.es
info@arquitecton.es
Revit 2014
Roundup(X)
x es un valor sin unidad que devuelve el nmero entero de valor mayor ms cercano o igual a "x".
Ejemplos:
roundup ( 23.0 ) = 23
roundup ( 23.5 ) = 24
roundup ( 23.9 ) = 24
roundup ( -23.0 ) = -23
roundup ( -23.5 ) = -23
roundup ( -23.9 ) = -23
Las expresiones enumeradas anteriormente son las bases de aplicaciones para el control de las familias. Con
dichas expresiones se pueden generar frmulas para resolver una gran variedad de situaciones diferentes,
como pueden ser las siguientes:
Trigonometra para tringulos rectos
Conociendo:
a+b
c = sqrt( a ^ 2 + b ^ 2 )
A = atan( a / b )
B = atan( b / a )
b = sqrt( c ^ 2 - a ^ 2 )
A = asin( a / c )
B = acos( a / c )
a+c
www.arquitecton.es
info@arquitecton.es
Revit 2014
a+A
b = a * tan(A)
c = a * sin(A)
B = 90 - A
b = a * tan(B)
c = a * cos(B)
A = 90 - B
a = sqrt( c ^ 2 - b ^ 2 )
A = acos( b / c )
B = asin( b / c )
a+B
b+c
b+A
a = b * tan(A)
c = a * sin(A)
B = 90 - A
b+B
a = b * tan(B)
c = b * sin(B)
A = 90 - B
a = c * sin(A)
b = c * cos(A)
B = 90 - A
a = c * cos(B)
b = c * sin(B)
A = 90 - B
c+A
c+B
www.arquitecton.es
info@arquitecton.es
Revit 2014
Rango de valores
Dados los siguientes parmetros:
Valor Usuario = x
Valor Min = a
Valor Max = z
Especifica un rango de valores de entrada vlidos, con los parmetros Valor Min y Valor Max; Luego, usa
el Valor Actual si est dentro del rango. Si no, usa el valor mximo o mnimo que nosotros le digamos.
Valor Actual = IF( Valor Usuario < Valor Min , Valor Min , IF( Valor Usuario > Valor Max , Valor
Max , Valor Usuario ) )
www.arquitecton.es
info@arquitecton.es