Get list of styles

@keith.sowinski thanks for sharing your code. @Paolo_Emilio_Serra1 This is very interesting for me as I’m only familiar with .NET API, for those interested here’s the Python accessing the COM API. Is there a reason as to why certain objects are only exposed in COM API and not .NET?

# Load Python standard libraries
import clr

# Add Assemblies for AutoCAD and Civil 3D APIs
clr.AddReference('acmgd')
clr.AddReference('acdbmgd')
clr.AddReference('accoremgd')
clr.AddReference('AecBaseMgd')
clr.AddReference('AecPropDataMgd')
clr.AddReference('AeccDbMgd')
clr.AddReference('AeccPressurePipesMgd')
clr.AddReference('acdbmgdbrep')
clr.AddReference('System.Windows.Forms')
clr.AddReference('Civil3DNodes')

# Add standard Python references
import sys
sys.path.append('C:\Program Files (x86)\IronPython 2.7\Lib')
import os
import math

# Add references to manage arrays, collections and interact with the user
from System import *
from System.IO import *
from System.Collections.Specialized import *
from System.Windows.Forms import MessageBox

# Create an alias to the Autodesk.AutoCAD.ApplicationServices.Application class
import Autodesk.AutoCAD.ApplicationServices.Application as acApp

# Import references for Civil 3D
from Autodesk.Civil.ApplicationServices import *
from Autodesk.Civil.DatabaseServices import *
from Autodesk.Civil.DatabaseServices.Styles import *

# 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 *

# Import references for PropertySets
from Autodesk.Aec.PropertyData import *
from Autodesk.Aec.PropertyData.DatabaseServices import *

# Declare global variables
aDoc = acApp.DocumentManager.MdiActiveDocument
ed = aDoc.Editor
cDoc = CivilApplication.ActiveDocument

# Functions

def get_alignment_styles():
    """
    This method creates gets the alignment style names in the current document.
    :return: A list of alignment style names
    """
       	
    result = []
    
    # Get the active document in the AutoCAD session:
    with aDoc.LockDocument():
        with aDoc.Database as db:

            with db.TransactionManager.StartTransaction() as t:
                styleCol = cDoc.Styles.AlignmentStyles

                for i in styleCol:
                    styleObj = t.GetObject(i, OpenMode.ForRead)
                    result.append(styleObj.AcadObject.Name)
    return result

# Output	
OUT = get_alignment_styles()
2 Likes