Revit Python Shell - 更改参数组
Revit Python Shell - Change Parameter Group
我正在尝试编写一个快速脚本来打开一个家庭文档,更改 2 个指定参数的参数组,然后关闭并保存该文档。我做了多次测试,我可以更改指定参数的参数组,但组的更改不会保存回族文件。当我打开新保存的族时,参数组恢复到原来的组。
这是 Revit 2017.2。
同样的脚本,当运行在Revit 2018中的RPS中时,会如愿以偿。
import clr
import os
clr.AddReference('RevitAPI')
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import UIApplication
from System.IO import Directory, SearchOption
searchstring = "*.rfa"
dir = r"C:\Users\dboghean\Desktop\vanity17"
docs = []
if Directory.Exists(dir):
files = Directory.GetFiles(dir, searchstring, SearchOption.AllDirectories)
for f in files:
name, extension = os.path.splitext(f)
name2, extension2 = os.path.splitext(name)
if extension2:
os.remove(f)
else:
docs.append(f)
else:
print("Directory does not exist")
doc = __revit__.ActiveUIDocument.Document
app = __revit__.Application
uiapp = UIApplication(app)
currentPath = doc.PathName
pgGroup = BuiltInParameterGroup.PG_GRAPHICS
for i in docs:
doc = app.OpenDocumentFile(i)
paramList = [i for i in doc.FamilyManager.Parameters]
t = Transaction(doc, "test")
t.Start()
for i in paramList:
if i.Definition.Name in ["Right Sidesplash Edge line", "Left Sidesplash Edge line"]:
i.Definition.ParameterGroup = pgGroup
t.Commit()
doc.Close(True)
有什么想法吗?
谢谢!
我可以确认这发生在 Revit 2017 中。奇怪!
一个简单的解决方法是使用 doc.FamilyManager.RenameParameter
任意重命名参数,然后将其重命名回原来的名称。
因此在您的情况下,这将是更改参数组后的另外三行代码:
originalName = i.Definition.Name
doc.FamilyManager.RenameParameter(i, "temp")
doc.FamilyManager.RenameParameter(i, originalName)
没有找到根本问题,但可以解决它
我正在尝试编写一个快速脚本来打开一个家庭文档,更改 2 个指定参数的参数组,然后关闭并保存该文档。我做了多次测试,我可以更改指定参数的参数组,但组的更改不会保存回族文件。当我打开新保存的族时,参数组恢复到原来的组。
这是 Revit 2017.2。
同样的脚本,当运行在Revit 2018中的RPS中时,会如愿以偿。
import clr
import os
clr.AddReference('RevitAPI')
clr.AddReference('RevitAPIUI')
from Autodesk.Revit.DB import *
from Autodesk.Revit.UI import UIApplication
from System.IO import Directory, SearchOption
searchstring = "*.rfa"
dir = r"C:\Users\dboghean\Desktop\vanity17"
docs = []
if Directory.Exists(dir):
files = Directory.GetFiles(dir, searchstring, SearchOption.AllDirectories)
for f in files:
name, extension = os.path.splitext(f)
name2, extension2 = os.path.splitext(name)
if extension2:
os.remove(f)
else:
docs.append(f)
else:
print("Directory does not exist")
doc = __revit__.ActiveUIDocument.Document
app = __revit__.Application
uiapp = UIApplication(app)
currentPath = doc.PathName
pgGroup = BuiltInParameterGroup.PG_GRAPHICS
for i in docs:
doc = app.OpenDocumentFile(i)
paramList = [i for i in doc.FamilyManager.Parameters]
t = Transaction(doc, "test")
t.Start()
for i in paramList:
if i.Definition.Name in ["Right Sidesplash Edge line", "Left Sidesplash Edge line"]:
i.Definition.ParameterGroup = pgGroup
t.Commit()
doc.Close(True)
有什么想法吗?
谢谢!
我可以确认这发生在 Revit 2017 中。奇怪!
一个简单的解决方法是使用 doc.FamilyManager.RenameParameter
任意重命名参数,然后将其重命名回原来的名称。
因此在您的情况下,这将是更改参数组后的另外三行代码:
originalName = i.Definition.Name
doc.FamilyManager.RenameParameter(i, "temp")
doc.FamilyManager.RenameParameter(i, originalName)
没有找到根本问题,但可以解决它