Denis

Ответы в темах

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)
  • Автор
    Сообщения
  • #6707 Score: 2
    Denis
    Участник
    4 pts

    Попробовал изменить Text Font у элементов внутри семейств, но не получилось. Скрипт меняет параметры, но не получается перезаписать семейства, в которых произведены изменения.

    Код:

    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
    
    # 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)
    
    class FamilyOption(IFamilyLoadOptions):
    	def OnFamilyFound(self,familyInUse,overwriteParameterValues):
    		overwriteParameterValues = True
    		return True
    		
    	def OnSharedFamilyFound(self, sharedFamily, familyInUse, FamilySource, overwriteParameterValues):
    		overwriteParameterValues = True
    		return True
    
    NameOfType = IN[0]
    result = []
    def setWhatYouNeed(d, s):
    	TransactionManager.Instance.ForceCloseTransaction()
    	familyDoc = doc.EditFamily(s)
    #	owner = familyDoc.OwnerFamily
    	ElementTypes = FilteredElementCollector(d).OfClass(ElementType).ToElements()
    	TransactionManager.Instance.EnsureInTransaction(d)
    	for i in ElementTypes:
    		for j in i.Parameters:
    			if j.Definition.Name == "Text Font":
    				i.LookupParameter("Text Font").Set(IN[0])
    				result.append(i.LookupParameter("Text Font").AsString())
    	TransactionManager.Instance.TransactionTaskDone()
    	TransactionManager.Instance.ForceCloseTransaction()
    	familyDoc.LoadFamily(doc, FamilyOption())
    	familyDoc.Close(False)
    
    for symbol in IN[1]:
    	setWhatYouNeed(UnwrapElement(symbol).Symbol.Family.Document, UnwrapElement(symbol).Symbol.Family)
    
    OUT = result

    Сам скрипт:

    P.S. Буду рад помощи, если у кого-то есть идеи давайте обсуждать)

    #6696 Score: 1
    Denis
    Участник
    4 pts

    Может быть кому понадобиться – у меня немного другой код для изменения Text Font в проекте (IN[0] – название стиля):

    import clr
    clr.AddReference('RevitAPI')
    from Autodesk.Revit.DB import *
    clr.AddReference("RevitServices")
    import RevitServices
    from RevitServices.Persistence import DocumentManager
    from RevitServices.Transactions import TransactionManager
    from System.Collections.Generic import *
    
    doc = DocumentManager.Instance.CurrentDBDocument
    
    ElementTypes = FilteredElementCollector(doc).OfClass(ElementType).ToElements()
    
    TransactionManager.Instance.EnsureInTransaction(doc)
    for i in ElementTypes:
    	for j in i.Parameters:
    		if j.Definition.Name == "Text Font":
    			i.LookupParameter("Text Font").Set(IN[0])
    TransactionManager.Instance.TransactionTaskDone()
    
    #7821 Score: 1
    Denis
    Участник
    4 pts

    Несколько дней назад начал заниматься данной темой. Сейчас все работает (PAS, FAS, Power, PLC). Все логично, но требуется создание дополнительных параметров.
    Патч панели используются для RJ45?
    Я не проверял ваши скрипты, но, у моей програмки логика простая – создаете класс для каждой панели, после этого каждая цепь находит свобю панель и обритает свой номер. Задает максимальное количество патч портов. После этого переносите параметры с цепи в семейство и делаете теги.
    Все намного интереснее, когда делаете автоматику внутри revit, там уже не получится “в лоб”

    #7386 Score: 0
    Denis
    Участник
    4 pts

    Недавно столкнулся с такой задачей. И самое универсальное, что смогу придумать это доставать из ревита образующие каждой комнаты, а после этого все сводится к простой математической задаче нахождения точки в замкнутом пространстве.
    По поводу образующих – советую использовать Faces или Edges. Лично я использовал Edges.
    Результатом доволен полностью.

Просмотр 4 сообщений - с 1 по 4 (из 4 всего)