Modify text Style on Dynamo

Is it possible to modify the text style through Dynamo?? I’m trying to get the text property but I’m always getting “Empty List” .

Hi @frodriguezmXYFSS
Is this what you’re trying to do?

Awesome @Kulkul
Where can I check those python scripts?

I remember seeing something looks similar before on this forum, but I cannot get it now.

Hi, can you share the python scripts to make the text style changes please. i am not too familiar with python.

1 Like

This isn’t quite the same as what @Kulkul did, but give it a try. Provide a string input for the name of the text style you want to change to and it will change all Text and MText in model space.

# Load the Python Standard and DesignScript Libraries
import sys
import clr

# Add Assemblies for AutoCAD and Civil3D

# Import references from AutoCAD
from Autodesk.AutoCAD.Runtime import *
from Autodesk.AutoCAD.ApplicationServices import *
from Autodesk.AutoCAD.EditorInput import *
from Autodesk.AutoCAD.DatabaseServices import *
from Autodesk.AutoCAD.Geometry import *
from Autodesk.AutoCAD.GraphicsInterface import TextStyle

# Import references from Civil3D
from Autodesk.Civil.ApplicationServices import *
from Autodesk.Civil.DatabaseServices import *

adoc = Application.DocumentManager.MdiActiveDocument
editor = adoc.Editor

errorReport = None

def set_all_texts_style(style):
	global adoc
	output = []
	with adoc.LockDocument():
		with adoc.Database as db:
			with db.TransactionManager.StartTransaction() as t:
				bt = t.GetObject(db.BlockTableId, OpenMode.ForWrite)
				btr = t.GetObject(bt[BlockTableRecord.ModelSpace], OpenMode.ForWrite)
				text_styles = t.GetObject(db.TextStyleTableId, OpenMode.ForRead)
					if text_styles.Has(style):
						for oid in btr:
							obj = t.GetObject(oid, OpenMode.ForWrite)
							if isinstance(obj, (DBText, MText)):
								obj.TextStyleId = text_styles[style]
					elif not style:
						return "No input"
						return 'The text style "{}" does not exist.'.format(style)
					import traceback
					errorReport == traceback.format_exc()

	if errorReport == None:
		return output
		return errorReport
OUT = set_all_texts_style(IN[0])

Adapted and modified slightly from @Paolo_Emilio_Serra1’s original script here:

1 Like