'type' object has no attribute 'AsDouble'

Hi, i try to write simple program to overrite parameters. Script works fine for strings parameters but when i try to overrite my custom parameter by “Lenght” i get exception: "‘type’ object has no attribute ‘AsDouble’ ". I can’t work around this error. What i need to change? Thanks for help!

## Imports
from rpw import revit as rv
from rpw import db
from pyrevit import forms
from Autodesk.Revit.UI.Selection import *
from Autodesk.Revit.DB import *

## Revit doc
doc = rv.doc
uidoc = rv.uidoc

## Class and def
def Pargetstr(element, name):
    return (element.GetParameters(name))[0].AsValueString()

## Pick family of choosen element
try:
    with forms.WarningBar(title="Pick elements in model"):
        collector = uidoc.Selection.PickObject(ObjectType.Element)

except Exception as e:
    print("Nothing was picked")

collector=collector.ElementId
collector=doc.GetElement(collector)
collector_cat_id=collector.Category.Id
picked_el=collector
print(collector)
print(collector_cat_id)
type=collector.GetType()
# type=collector.Category.Id
print(type)
print("===")
collector=FilteredElementCollector(doc).OfClass(type).WhereElementIsNotElementType().ToElements()
# collector=FilteredElementCollector(doc).OfCategoryId(type).WhereElementIsNotElementType().ToElements()
print(collector)
for i in collector:
    print(">>>" + i.Name)
print("===")
## Get the elements of the same Family and Type
elements=[]
for i in collector:
    if Pargetstr(i, "Family and Type")==Pargetstr(picked_el, "Family and Type"):
        elements.append(i)
    else:
        pass
    
print(elements)
## Get parameters
parameters={}
parameters_editable={}
for i in elements[0].Parameters:
    parameters.update({i.Definition.Name:i})
print(parameters)

## Take parameter to be copied

print("=============")
print(parameters.keys())
parameters_list=parameters.keys()

selected_option_a = forms.CommandSwitchWindow.show(
    parameters_list,
     message='Take parameter to be copied:',recognize_access_key=False
)
print(selected_option_a)

## Collecting parameters by storage type
for i in elements[0].Parameters:
    if  i.IsReadOnly == False and i.StorageType == StorageType.String and i.Definition.Name != selected_option_a:
        parameters_editable.update({i.Definition.Name:i})
    elif i.IsReadOnly == False and parameters[selected_option_a].StorageType == i.StorageType and i.Definition.Name != selected_option_a and i.CanBeAssociatedWithGlobalParameters() ==True:
        parameters_editable.update({i.Definition.Name:i})
    else:
        pass

## Choose parameter to overwrite value

print("=============")
print(parameters_editable.keys())
parameters_list_editable=parameters_editable.keys()

selected_option_b = forms.CommandSwitchWindow.show(
    parameters_list_editable,
     message='Take parameter to set:',recognize_access_key=False
)
print(selected_option_b)

## Choose parameter to overwrite value
# try:
t = Transaction(doc, "Override parameter - PYLAB")
t.Start()
try:
    for i in elements:
        
        parameter_a = i.LookupParameter(selected_option_a)
        parameter_b = i.LookupParameter(selected_option_b)
        print(parameter_a.AsDouble)
        if parameter_a.StorageType == StorageType.String and parameter_b.StorageType == StorageType.String:
            parameter_b_overr=parameter_a.AsString()
            print(parameter_b_overr)
            parameter_b.Set(str(parameter_b_overr))
        
        elif parameter_a.StorageType == StorageType.AsDouble and parameter_b.StorageType == StorageType.AsDouble:
            parameter_b_overr=parameter_a.AsDouble()
            print(parameter_b_overr)
            parameter_b.Set(parameter_b_overr)
        elif parameter_a.StorageType == StorageType.AsInteger and parameter_b.StorageType == StorageType.AsInteger:
            parameter_b_overr=parameter_a.AsInteger()
            print(parameter_b_overr)
            parameter_b.Set(parameter_b_overr)
        else:
            parameter_b_overr=parameter_a.AsValueString()
            print(parameter_b_overr)
            parameter_b.Set(parameter_b_overr)
except Exception as e:
    print(e)
t.Commit()

Parameters with which i work:


Replace “StorageType.AsDouble” with “StorageType.Double” and “StorageType.AsInteger” with “StorageType.Integer”.

2 Likes

omg… sorry for that… it’s so simple. My stupid question is result of night working :stuck_out_tongue: