No Area Attribute

import sys
import clr



sys. path.append("C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\Lib")
import math

clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *

clr.AddReference('System')
from System.Collections.Generic import List

clr.AddReference('RevitNodes')
import Revit

clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
# Preparing input from dynamo to Revit
![1|690x411](upload://k2tL8U6VcRJD10VzqmGMer7igNA.png)

import clr

clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *

clr.AddReference('System')
from System.Collections.Generic import List

clr.AddReference('RevitNodes')
import Revit

clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager


wallNames = []
wallAreas = []
wallVolumes = []
wallLengths = []

collector = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Walls).WhereElementIsNotElementType()

for c in collector:
    wallNames.append(c.Name)
    Area = c.get_Parameter(BuiltInParameter.HOST_AREA_COMPUTED).AsDouble()
    wallAreas.append(c.Area)
    Volume = c.get_Parameter(BuiltInParameter.HOST_VOLUME_COMPUTED).AsDouble()
    wallVolumes.append(c.Volume)
    Length = c.get_Parameter(BuiltInParameter.CURVE_ELEM_LENGTH).AsDouble() * 0.3048
    wallLengths.append(c.Length)

OUT = wallNames, wallAreas, wallVolumes, wallLengths

I have this code but I don’t know why I get this error “Wall Object has no Area attribute”

The first line is great. You get the area via get_Parameter and then assigning it to the variable Area.

The second line is the issue. You have the area but then you try to pull it again as a property of c, which is not a valid attribute. You just need to append the value you already have, Area.

Right now you’re essentially doing the same thing twice. Once in the correct way and once in the incorrect way. You just happen to be using the incorrect way to build your list.

3 Likes

It got fixed Thanks alot

Now on the same code, I get this error for the length

import sys
import clr



sys.path.append("C:\Program Files\WindowsApps\PythonSoftwareFoundation.Python.3.10_3.10.1776.0_x64__qbz5n2kfra8p0\Lib")
import math

clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *

clr.AddReference('System')
from System.Collections.Generic import List

clr.AddReference('RevitNodes')
import Revit

clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager
doc = DocumentManager.Instance.CurrentDBDocument
# Preparing input from dynamo to revit
import clr

clr.AddReference('RevitAPI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.DB.Structure import *

clr.AddReference('RevitAPIUI')
from Autodesk.Revit.UI import *

clr.AddReference('System')
from System.Collections.Generic import List

clr.AddReference('RevitNodes')
import Revit

clr.ImportExtensions(Revit.GeometryConversion)
clr.ImportExtensions(Revit.Elements)

clr.AddReference('RevitServices')
import RevitServices
from RevitServices.Persistence import DocumentManager
from RevitServices.Transactions import TransactionManager


wallNames = []
wallAreas = []
wallVolumes = []
wallLengths = []

collector = FilteredElementCollector(doc).OfCategory(BuiltInCategory.OST_Walls).WhereElementIsNotElementType()

for c in collector:
    wallNames.append(c.Name)
    Area = c.get_Parameter(BuiltInParameter.HOST_AREA_COMPUTED).AsValueString()
    wallAreas.append(Area)
    Volume = c.get_Parameter(BuiltInParameter.HOST_VOLUME_COMPUTED).AsValueString()
    wallVolumes.append(Volume)
    Length = c.get_Parameter(BuiltInParameter.CURVE_ELEM_LENGTH).AsDouble()
    wallLengths.append(Length)
    


OUT = wallNames, wallAreas, wallVolumes,wallLengths 

I can understand what is the problem here

As far as I can tell their is no issue, works for me. Try in the basic sample model, it gave me all the values there.