Change Text Font Type using Dynamo
Помечено: Change Text Font Dynamo
- В этой теме 25 ответов, 6 участников, последнее обновление 7 лет, 3 месяца назад сделано txt.
-
АвторСообщения
-
Так получилось, что возник вопрос по этой теме и на данный момент не могу найти решение – тема: https://forum.dynamobim.com/t/change-parameter-of-elements-into-family/14695
Если в кратце, то получается изменить Text Font внутри проекта, но не получается внутри семейств. Когда заходишь в документ семейства он видити все отфильтрованные елементы, но не может произвести изменения нужного параметра (в данном случае Text Font )
Там выложен код скрипта, может быть у кого-то будут мысли?
Шрифт текста (для метки в семействе марок) изменить можно через
но вначале нужно открыть семейство а затем запустить Динамо (в противном случае напишет нет ссылки на этот документ – ну , вы знаете), но открывать так каждое семейство это трэш
Может быть кому понадобиться – у меня немного другой код для изменения 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()
Denis,
спасибо за решение
твой код изменяет в проекте шрифт текста для текстовых примечаний и размерного текста в том числе )
Вопрос с редактированием шрифтов меток внутри семейств марок остается открытым, может кто и найдет решение , было бы здорово
На данный момент есть продвижение, проблема с редактором смейств. Надеюсь в ближайшие дни выложу решение. В любом случае отпишусь в данной теме)
Попробовал изменить 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. Буду рад помощи, если у кого-то есть идеи давайте обсуждать)
пытался применить скрипт выше к маркам пространств (необходимо получить из них familyInstanse ? но у этих марок их получается нет?) в чем ошибка?
Судя по ошибке и логике:
Space Tag Type – это сам Type. Тебе нужно убрать “.Symbol” в s и d.
Т.е.:
setWhatYouNeed(UnwrapElement(symbol).Family.Document, UnwrapElement(symbol).Family)
не вышло:
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 SpaceTag = FilteredElementCollector(doc).OfClass(SpaceTag).ToElements() TransactionManager.Instance.EnsureInTransaction(doc) for i in SpaceTag: for j in i.Parameters: if j.Definition.Name == "Choose your parameter": i.LookupParameter("Choose your parameter").Set(IN[0]) TransactionManager.Instance.TransactionTaskDone()
Найди свой параметер и замени им в коде “Choose your parameter”. Если Text Font, то “Text Font”, как и в примере выше.
в целях уведомления спешу всех нас обрадовать что решение все таки нашлось на заграничном форуме:
https://forum.dynamobim.com/t/change-parameter-of-elements-into-family/14695/16
-
АвторСообщения
- Для ответа в этой теме необходимо авторизоваться.