Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import clr
- clr.AddReference('RevitNodes')
- import Revit
- clr.ImportExtensions(Revit.Elements)
- # Import DocumentManager and TransactionManager
- clr.AddReference("RevitServices")
- import RevitServices
- from RevitServices.Persistence import DocumentManager
- from RevitServices.Transactions import TransactionManager
- doc = DocumentManager.Instance.CurrentDBDocument
- uidoc = DocumentManager.Instance.CurrentUIDocument
- # Import RevitAPI
- clr.AddReference("RevitAPI")
- import Autodesk
- from Autodesk.Revit.DB import *
- import System
- clr.AddReference('RevitAPIUI')
- from Autodesk.Revit.UI import *
- import sys
- pyt_path = r'C:\Program Files (x86)\IronPython 2.7\Lib'
- sys.path.append(pyt_path)
- # Classes
- class FamilyOption(IFamilyLoadOptions):
- def OnFamilyFound(self, familyInUse, overwriteParameterValues):
- overwriteParameterValues = True
- return True
- def OnSharedFamilyFound(self, sharedFamily, familyInUse, familySrc, overwriteParameterValues):
- familySrc = FamilySource.Family
- overwriteParameterValues = True
- return True
- # Definitions
- def family_doc(document, famileis):
- fDoc = document.EditFamily(famileis)
- return fDoc
- def element_types_in_doc(document):
- element_types = FilteredElementCollector(document).OfClass(ElementType).ToElements()
- return element_types
- def category_of_family_in_doc(document):
- List = FilteredElementCollector(document).OfCategory(BuiltInCategory.OST_GenericAnnotation).ToElements()
- return List
- def set_what_you_need_in(doc, f):
- TransactionManager.Instance.ForceCloseTransaction()
- try:
- arr = []
- result.append(f.Name)
- tf = BuiltInParameter.TEXT_FONT
- tsb = BuiltInParameter.TEXT_STYLE_BOLD
- tsi = BuiltInParameter.TEXT_STYLE_ITALIC
- tsu = BuiltInParameter.TEXT_STYLE_UNDERLINE
- tws = BuiltInParameter.TEXT_WIDTH_SCALE
- ts = BuiltInParameter.TEXT_SIZE
- fDoc = family_doc(doc, f)
- ElementTypes = element_types_in_doc(fDoc)
- # family_in_doc = category_of_family_in_doc(fDoc)
- TransactionManager.Instance.EnsureInTransaction(fDoc)
- # Search all ElementTypes for Parameter and set if found
- for i in ElementTypes:
- tArr = []
- try:
- ltf = i.get_Parameter(tf)
- ltf.Set(font)
- lts = i.get_Parameter(ts)
- lts.Set(size)
- ltsb = i.get_Parameter(tsb)
- ltsb.Set(bold)
- ltsi = i.get_Parameter(tsi)
- ltsi.Set(italic)
- ltsu = i.get_Parameter(tsu)
- ltsu.Set(underline)
- ltws = i.get_Parameter(tws)
- ltws.Set(widthscale)
- tArr.append(i.FamilyName)
- tArr.append(i.get_Parameter(tf).AsString())
- tArr.append(i.get_Parameter(ts).AsDouble())
- tArr.append(i.get_Parameter(tsb).AsInteger())
- tArr.append(i.get_Parameter(tsi).AsInteger())
- tArr.append(i.get_Parameter(tsu).AsInteger())
- tArr.append(i.get_Parameter(tws).AsDouble())
- arr.append(tArr)
- except:
- continue
- result.append(arr)
- except Exception, e:
- result.append(s.Name + " Failed:-\n" + e.message)
- return result
- def set_what_you_need_LC(doc, f):
- fDoc = family_doc(doc, f)
- # ElementTypes = element_types_in_doc(fDoc)
- # Load Family back into project and Close Family Document
- TransactionManager.Instance.ForceCloseTransaction()
- fDoc.LoadFamily(doc, FamilyOption())
- fDoc.Close(False)
- TransactionManager.Instance.ForceCloseTransaction()
- # Convert single object to list if not list already
- def tolist(obj1):
- if hasattr(obj1, "__iter__"):
- return obj1
- else:
- return [obj1]
- # Inputs
- run = tolist(IN[0])[0]
- fams = tolist(UnwrapElement(IN[1]))
- font = tolist(IN[2])[0]
- size = tolist(IN[3])[0]
- bold = tolist(IN[4])[0]
- italic = tolist(IN[5])[0]
- underline = tolist(IN[6])[0]
- # widthscale = tolist(IN[7])[0]
- # Outputs
- result = []
- # Main
- if run:
- for f in fams:
- try:
- if not f.IsInPlace:
- set_what_you_need_in(f.Document, f)
- TransactionManager.Instance.ForceCloseTransaction()
- List_family = element_types_in_doc(family_doc(f.Document,f))
- TransactionManager.Instance.ForceCloseTransaction()
- try:
- if len(List_family) > 0:
- for i in List_family:
- set_what_you_need_in(family_doc(i.Document,i), i)
- set_what_you_need_LC(family_doc(i.Document,i), i)
- except Exception, e:
- result.append("Failed:-\n" + e.message)
- set_what_you_need_LC(f.Document,f)
- except Exception, e:
- result.append("Failed:-\n" + e.message)
- uidoc.RefreshActiveView()
- OUT = result
- else:
- OUT = "Set False(Заменить текст в семействах из списка / Replace text in families from the list)"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement