def test_rename(): """py.test for rename""" idftxt = """Material, G01a 19mm gypsum board, !- Name MediumSmooth, !- Roughness 0.019, !- Thickness {m} 0.16, !- Conductivity {W/m-K} 800, !- Density {kg/m3} 1090; !- Specific Heat {J/kg-K} Construction, Interior Wall, !- Name G01a 19mm gypsum board, !- Outside Layer F04 Wall air space resistance, !- Layer 2 G01a 19mm gypsum board; !- Layer 3 Construction, Other Wall, !- Name G01a 19mm gypsum board, !- Outside Layer G01a 19mm gypsum board, !- Layer 2 G01a 19mm gypsum board; !- Layer 3 """ ridftxt = """Material, peanut butter, !- Name MediumSmooth, !- Roughness 0.019, !- Thickness {m} 0.16, !- Conductivity {W/m-K} 800, !- Density {kg/m3} 1090; !- Specific Heat {J/kg-K} Construction, Interior Wall, !- Name peanut butter, !- Outside Layer F04 Wall air space resistance, !- Layer 2 peanut butter; !- Layer 3 Construction, Other Wall, !- Name peanut butter, !- Outside Layer peanut butter, !- Layer 2 peanut butter; !- Layer 3 """ fhandle = StringIO(idftxt) idf = IDF(fhandle) result = modeleditor.rename( idf, 'Material'.upper(), 'G01a 19mm gypsum board', 'peanut butter') assert result.Name == 'peanut butter' assert idf.idfobjects['CONSTRUCTION'][0].Outside_Layer == 'peanut butter' assert idf.idfobjects['CONSTRUCTION'][0].Layer_3 == 'peanut butter'
def test_rename(): """py.test for rename""" idftxt = """Material, G01a 19mm gypsum board, !- Name MediumSmooth, !- Roughness 0.019, !- Thickness {m} 0.16, !- Conductivity {W/m-K} 800, !- Density {kg/m3} 1090; !- Specific Heat {J/kg-K} Construction, Interior Wall, !- Name G01a 19mm gypsum board, !- Outside Layer F04 Wall air space resistance, !- Layer 2 G01a 19mm gypsum board; !- Layer 3 Construction, Other Wall, !- Name G01a 19mm gypsum board, !- Outside Layer G01a 19mm gypsum board, !- Layer 2 G01a 19mm gypsum board; !- Layer 3 """ ridftxt = """Material, peanut butter, !- Name MediumSmooth, !- Roughness 0.019, !- Thickness {m} 0.16, !- Conductivity {W/m-K} 800, !- Density {kg/m3} 1090; !- Specific Heat {J/kg-K} Construction, Interior Wall, !- Name peanut butter, !- Outside Layer F04 Wall air space resistance, !- Layer 2 peanut butter; !- Layer 3 Construction, Other Wall, !- Name peanut butter, !- Outside Layer peanut butter, !- Layer 2 peanut butter; !- Layer 3 """ fhandle = StringIO(idftxt) idf = IDF(fhandle) result = modeleditor.rename( idf, "Material".upper(), "G01a 19mm gypsum board", "peanut butter" ) assert result.Name == "peanut butter" assert idf.idfobjects["CONSTRUCTION"][0].Outside_Layer == "peanut butter" assert idf.idfobjects["CONSTRUCTION"][0].Layer_3 == "peanut butter"
# In[6]: # rename object name with a colon and any field that refers to that name from eppy.bunch_subclass import BadEPFieldError renamednames = [] for key in keys: for idfobject in idf1.idfobjects[key]: try: name = idfobject.Name if name.find(":") != -1: renamednames.append(name) newname = name.replace(":", "__") # print "%s, %s, %s" % (key, name, newname) modeleditor.rename(idf1, key, name, newname) except BadEPFieldError as e: pass # In[7]: idf1.saveas("bl_renamed_names.idf") # rename any fields that have a colon for key in keys: for idfobject in idf1.idfobjects[key]: objectfields = idfobject["obj"] # idfobject['obj'] is unocumented functionality # to get fields of an object as a list for i, field in enumerate(objectfields[1:]): try:
# <codecell> interiorwall = idf.newidfobject("CONSTRUCTION", Name="Interior Wall", Outside_Layer="G01a 19mm gypsum board", Layer_2="Shiny new material object", Layer_3="G01a 19mm gypsum board") print(interiorwall) # <markdowncell> # to rename gypboard and have that name change in all the places we call modeleditor.rename(idf, key, oldname, newname) # <codecell> modeleditor.rename(idf, "MATERIAL", "G01a 19mm gypsum board", "peanut butter") # <codecell> print(interiorwall) # <markdowncell> # Now we have "peanut butter" everywhere. At least where we need it. Let us look at the entir idf file, just to be sure # <codecell> idf.printidf() # <headingcell level=2>
interiorwall = idf.newidfobject( "CONSTRUCTION", Name="Interior Wall", Outside_Layer="G01a 19mm gypsum board", Layer_2="Shiny new material object", Layer_3="G01a 19mm gypsum board", ) print(interiorwall) # <markdowncell> # to rename gypboard and have that name change in all the places we call modeleditor.rename(idf, key, oldname, newname) # <codecell> modeleditor.rename(idf, "MATERIAL", "G01a 19mm gypsum board", "peanut butter") # <codecell> print(interiorwall) # <markdowncell> # Now we have "peanut butter" everywhere. At least where we need it. Let us look at the entir idf file, just to be sure # <codecell> idf.printidf() # <headingcell level=2>
# In[6]: # rename object name with a colon and any field that refers to that name from eppy.bunch_subclass import BadEPFieldError renamednames = [] for key in keys: for idfobject in idf1.idfobjects[key]: try: name = idfobject.Name if name.find(":") != -1: renamednames.append(name) newname = name.replace(':', '__') # print "%s, %s, %s" % (key, name, newname) modeleditor.rename(idf1, key, name, newname) except BadEPFieldError as e: pass # In[7]: idf1.saveas("bl_renamed_names.idf") # rename any fields that have a colon for key in keys: for idfobject in idf1.idfobjects[key]: objectfields = idfobject['obj'] # idfobject['obj'] is unocumented functionality # to get fields of an object as a list