Advertisement
darksideofsun

fonts

Mar 24th, 2018
88
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.17 KB | None | 0 0
  1. import clr
  2.  
  3. clr.AddReference('RevitNodes')
  4. import Revit
  5.  
  6. clr.ImportExtensions(Revit.Elements)
  7.  
  8. # Import DocumentManager and TransactionManager
  9. clr.AddReference("RevitServices")
  10. import RevitServices
  11. from RevitServices.Persistence import DocumentManager
  12. from RevitServices.Transactions import TransactionManager
  13.  
  14. doc = DocumentManager.Instance.CurrentDBDocument
  15. uidoc = DocumentManager.Instance.CurrentUIDocument
  16.  
  17. # Import RevitAPI
  18. clr.AddReference("RevitAPI")
  19. import Autodesk
  20. from Autodesk.Revit.DB import *
  21. import System
  22.  
  23. clr.AddReference('RevitAPIUI')
  24. from Autodesk.Revit.UI import *
  25.  
  26. import sys
  27.  
  28. pyt_path = r'C:\Program Files (x86)\IronPython 2.7\Lib'
  29. sys.path.append(pyt_path)
  30.  
  31.  
  32. # Classes
  33.  
  34. class FamilyOption(IFamilyLoadOptions):
  35.     def OnFamilyFound(self, familyInUse, overwriteParameterValues):
  36.         overwriteParameterValues = True
  37.         return True
  38.  
  39.     def OnSharedFamilyFound(self, sharedFamily, familyInUse, familySrc, overwriteParameterValues):
  40.         familySrc = FamilySource.Family
  41.         overwriteParameterValues = True
  42.         return True
  43.  
  44.  
  45. # Definitions
  46.  
  47. def family_doc(document, famileis):
  48.     fDoc = document.EditFamily(famileis)
  49.     return fDoc
  50.  
  51. def element_types_in_doc(document):
  52.     element_types = FilteredElementCollector(document).OfClass(ElementType).ToElements()
  53.     return element_types
  54.  
  55. def category_of_family_in_doc(document):
  56.     List = FilteredElementCollector(document).OfCategory(BuiltInCategory.OST_GenericAnnotation).ToElements()
  57.     return List
  58.  
  59.  
  60.  
  61. def set_what_you_need_in(doc, f):
  62.     TransactionManager.Instance.ForceCloseTransaction()
  63.     try:
  64.         arr = []
  65.         result.append(f.Name)
  66.         tf = BuiltInParameter.TEXT_FONT
  67.         tsb = BuiltInParameter.TEXT_STYLE_BOLD
  68.         tsi = BuiltInParameter.TEXT_STYLE_ITALIC
  69.         tsu = BuiltInParameter.TEXT_STYLE_UNDERLINE
  70.         tws = BuiltInParameter.TEXT_WIDTH_SCALE
  71.         ts = BuiltInParameter.TEXT_SIZE
  72.  
  73.         fDoc = family_doc(doc, f)
  74.         ElementTypes = element_types_in_doc(fDoc)
  75.         # family_in_doc = category_of_family_in_doc(fDoc)
  76.         TransactionManager.Instance.EnsureInTransaction(fDoc)
  77.  
  78.         # Search all ElementTypes for Parameter and set if found
  79.         for i in ElementTypes:
  80.             tArr = []
  81.             try:
  82.                 ltf = i.get_Parameter(tf)
  83.                 ltf.Set(font)
  84.                 lts = i.get_Parameter(ts)
  85.                 lts.Set(size)
  86.                 ltsb = i.get_Parameter(tsb)
  87.                 ltsb.Set(bold)
  88.                 ltsi = i.get_Parameter(tsi)
  89.                 ltsi.Set(italic)
  90.                 ltsu = i.get_Parameter(tsu)
  91.                 ltsu.Set(underline)
  92.                 ltws = i.get_Parameter(tws)
  93.                 ltws.Set(widthscale)
  94.                 tArr.append(i.FamilyName)
  95.                 tArr.append(i.get_Parameter(tf).AsString())
  96.                 tArr.append(i.get_Parameter(ts).AsDouble())
  97.                 tArr.append(i.get_Parameter(tsb).AsInteger())
  98.                 tArr.append(i.get_Parameter(tsi).AsInteger())
  99.                 tArr.append(i.get_Parameter(tsu).AsInteger())
  100.                 tArr.append(i.get_Parameter(tws).AsDouble())
  101.                 arr.append(tArr)
  102.             except:
  103.                 continue
  104.  
  105.         result.append(arr)
  106.  
  107.  
  108.     except Exception, e:
  109.         result.append(s.Name + " Failed:-\n" + e.message)
  110.  
  111.     return result
  112.  
  113.  
  114. def set_what_you_need_LC(doc, f):
  115.     fDoc = family_doc(doc, f)
  116.     # ElementTypes = element_types_in_doc(fDoc)
  117.     # Load Family back into project and Close Family Document
  118.     TransactionManager.Instance.ForceCloseTransaction()
  119.     fDoc.LoadFamily(doc, FamilyOption())
  120.     fDoc.Close(False)
  121.     TransactionManager.Instance.ForceCloseTransaction()
  122.  
  123.  
  124. # Convert single object to list if not list already
  125. def tolist(obj1):
  126.     if hasattr(obj1, "__iter__"):
  127.         return obj1
  128.     else:
  129.         return [obj1]
  130.  
  131.  
  132. # Inputs
  133.  
  134. run = tolist(IN[0])[0]
  135. fams = tolist(UnwrapElement(IN[1]))
  136. font = tolist(IN[2])[0]
  137. size = tolist(IN[3])[0]
  138. bold = tolist(IN[4])[0]
  139. italic = tolist(IN[5])[0]
  140. underline = tolist(IN[6])[0]
  141. # widthscale = tolist(IN[7])[0]
  142.  
  143. # Outputs
  144.  
  145. result = []
  146.  
  147. # Main
  148. if run:
  149.     for f in fams:
  150.         try:
  151.             if not f.IsInPlace:
  152.                 set_what_you_need_in(f.Document, f)
  153.                 TransactionManager.Instance.ForceCloseTransaction()
  154.                 List_family = element_types_in_doc(family_doc(f.Document,f))
  155.                 TransactionManager.Instance.ForceCloseTransaction()
  156.                 try:
  157.                     if len(List_family) > 0:
  158.                         for i in List_family:
  159.                             set_what_you_need_in(family_doc(i.Document,i), i)
  160.                             set_what_you_need_LC(family_doc(i.Document,i), i)
  161.                 except Exception, e:
  162.                     result.append("Failed:-\n" + e.message)
  163.  
  164.                 set_what_you_need_LC(f.Document,f)
  165.         except Exception, e:
  166.             result.append("Failed:-\n" + e.message)
  167.     uidoc.RefreshActiveView()
  168.     OUT = result
  169. else:
  170.     OUT = "Set False(Заменить текст в семействах из списка / Replace text in families from the list)"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement