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í.
Anonymous
1745 Views, 6 Replies

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

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.

 

 

Organon
in reply to: Anonymous

¿A qué te refieres con tipoligía?

 

Saludos.


Arquitectura | Análisis CAD & BIM | Diseño Paramétrico | Programación
BIM-METADATA | LinkedIn | YouTube
Organon
in reply to: 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
BIM-METADATA | LinkedIn | YouTube
ReySantos
in reply to: 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.....

Rey Santos

EESignature

Organon
in reply to: 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
BIM-METADATA | LinkedIn | YouTube
ReySantos
in reply to: Organon

Gracias, lo tendré presente.

Rey Santos

EESignature

doc.inge.fernando
in reply to: Anonymous

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