Revit & BIM - Español

Revit & BIM - Español

Responder
Highlighted
Mensaje 1 de 6 (70 Visitas)
Solución aceptada

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

70 Visitas, 5 Respuestas
04-20-2017 05:03 PM

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.

 

 

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.

Mensaje 2 de 6 (61 Visitas)

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

04-20-2017 05:32 PM en respuesta a: santos.bravo

¿A qué te refieres con tipoligía?

 

Saludos.

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

Blog  |  YouTube

Mensaje 3 de 6 (42 Visitas)

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

[ Editado ]
04-20-2017 10:10 PM en respuesta a: Organon

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

Blog  |  YouTube

Mensaje 4 de 6 (24 Visitas)

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

04-21-2017 05:04 PM en respuesta a: Organon
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.....
Mensaje 5 de 6 (20 Visitas)

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

04-21-2017 05:17 PM en respuesta a: ReySantos

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

Blog  |  YouTube

Mensaje 6 de 6 (15 Visitas)

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

04-21-2017 07:10 PM en respuesta a: Organon
Gracias, lo tendré presente.
Publicar en la Comunidad

¿Tiene preguntas sobre los productos de Autodesk? Pregunte a la comunidad.

Nueva publicación