Announcements
Atención para clientes sin autenticación multifactor o inicio de sesión único: la verificación OTP se implementará en abril de 2025. Lee todo al respecto aquí.

Cómo obtener la lista de todos los parámetros de una tipología mediante la API

Anonymous

Cómo obtener la lista de todos los parámetros de una tipología mediante la API

Anonymous
Not applicable

Saludos,

 

Actualmente estoy trabando en una extensión para Revit 2017 y requiero leer todos los parámetros (incluidos los de instancia) de una tipología: 

 

 

 private void ReadParameters( IEnumerable<Element> elements, List<Data.Entities.Parameter> ParamLst)
        {
            foreach (var element in elements)
            {
                foreach (Parameter Param in element.Parameters)
                {
                    var p = ParamLst.FirstOrDefault(o => o.Name.Equals(Param.Definition.Name));
                    if (p == null)
                    {
                        ParamLst.Add(new Data.Entities.Parameter { Name = Param.Definition.Name, Id = Param.Id.IntegerValue });

                        var instance = new FilteredElementCollector(doc)
                               .WhereElementIsNotElementType()
                               .Where(e=> e.GetTypeId() == element.Id) 
                               .FirstOrDefault();
                        if (instance != null)
                        {
                            ReadParameters(new List<Element> { instance }, ParamLst);
                        }
                    }
                }
            }

        }

Que estoy haciendo mal?...

 

De antemano gracias por su ayuda.

 

 

0 Likes
Reply
Accepted solutions (1)
1,751 Views
6 Replies
Replies (6)

Organon
Advisor
Advisor

¿A qué te refieres con tipoligía?

 

Saludos.


Arquitectura | Análisis CAD & BIM | Diseño Paramétrico | Programación
BIM-METADATA | LinkedIn | YouTube
0 Likes

Organon
Advisor
Advisor
Accepted solution

Quiero entender que te refieres a los parámetros de tipo y de instancia de un elemento. Yo lo haría separado, algo así:

 

elements = UnwrapElement(IN[0])

elemType = doc.GetElement(elements[0].GetTypeId())
elemTypeParameters = elemType.Parameters

typeParameters = []
for tp in elemTypeParameters:
    typeParam = tp.Definition.Name
    typeParameters.append(typeParam)

instanceParameters = []
for el in elements:
    params = el.Parameters
    paramElement = []
    for ip in params:
        instParam = ip.Definition.Name
        paramElement.append(instParam)
    instanceParameters.append(paramElement)    

OUT = [typeParameters, instanceParameters]

 

Obviamente es diferente la sintaxis pues es con Python, pero es lo mismo:

 

  • Tomé el primer elemento de la lista, obtuve su tipo y sus parámetros.
  • Hice una iteración sobre cada elemento(instancia) y otra iteración sobre cada parámetro de cada elemento y obtuve sus parámetros.

 

Esto es con Dynamo:

 

Parameters.png

 

Saludos.


Arquitectura | Análisis CAD & BIM | Diseño Paramétrico | Programación
BIM-METADATA | LinkedIn | YouTube

ReySantos
Advisor
Advisor
Esto me recuerda que debo retomar mis clases de Python.........inicié un curso y lo dejé a medio camino.....Python es bien intuitivo para programar, además para los involucrados con Revit, es la base de Dynamo.....

Rey Santos

EESignature

Organon
Advisor
Advisor

La verdad es fácil de aprender, pero como todo lo demás se debe de practicar constantemente. Si decides retomar Python y puedo ayudarte en algo me lo comentas. Así es, actualmente es el lenguaje que accede a la API por medio de Dynamo.

 

Saludos.


Arquitectura | Análisis CAD & BIM | Diseño Paramétrico | Programación
BIM-METADATA | LinkedIn | YouTube
0 Likes

ReySantos
Advisor
Advisor
Gracias, lo tendré presente.

Rey Santos

EESignature

0 Likes

doc.inge.fernando
Advocate
Advocate

Muy buenas, un saludo a todos los presentes quisiera saber yo igual como tengo que manejar la sintaxis para poder hacer toda mi programa que deseo integrar para revit mep para el área de fontaneria o en si para aprender a manejar los códigos e ir integrando según la necesidad que se vaya teniendo al pasar en tiempo ya que sabemos que a medida que pasa el tiempo todo evoluciona 

0 Likes