Vous êtes sur la page 1sur 6

Revit 2014

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 parmetros s/no a estar marcados o no marcados, o lograr el valor verdadero/falso

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

< Menor que


> Mayor que
= Igual
AND() Ambas instrucciones son verdaderas
OR() Alguna de las instrucciones es verdadera
NOT() La instruccin es falsa

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

Redondeo hacia abajo

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

Redondeo hacia arriba

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

Cmo obtener el mayor de tres valores con instrucciones condicionales IF AND OR


Digamos que tenemos tres parmetros de longitud, y queremos un cuarto parmetro que nos devuelva el
mayor valor/longitud de los tres:
Long A
Long B
Long C
Long Mayor (Devuelve el mayor de los tres parmetros de longitud)
Una opcin es usar un parmetro "Calc" adicional, lo cual es un poco ms chapucero pero tambin mucho
ms fcil y manejable para los que no controlan al 100% las instrucciones condicionales.
Calc = IF( Long A > Long B , Long A , Long B )
Long Mayor = IF( Calc > Long C , Calc , Long C )

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