Python script to list label style names

Hi … Please do not refer this post to a package.
How do I get the name property of label styles in a python script, referencing .Net?
The following script results in error OnExit …
Thx for your patience, Kevin.

import sys
import clr

clr.AddReference('AcMgd')
clr.AddReference('AcCoreMgd')
clr.AddReference('AcDbMgd')
clr.AddReference('AecBaseMgd')
clr.AddReference('AecPropDataMgd')
clr.AddReference('AeccDbMgd')

from Autodesk.AutoCAD.ApplicationServices import *
from Autodesk.AutoCAD.EditorInput import *
from Autodesk.AutoCAD.Runtime import *
from Autodesk.AutoCAD.DatabaseServices import *

from Autodesk.Civil.ApplicationServices import *
from Autodesk.Civil.DatabaseServices import *

adoc = Application.DocumentManager.MdiActiveDocument
cdoc = CivilApplication.ActiveDocument

o = []

with adoc.LockDocument():
    with adoc.Database as db:
        with db.TransactionManager.StartTransaction() as t:
            for id in cdoc.Styles.LabelStyles.GeneralLineLabelStyles:        
                s = t.GetObject(id, OpenMode.ForRead)
                o.append(s.Name)
            t.Commit()

OUT = o

hi,

here some workarounds with PythonNet 2.5.x
if you can, use IronPython3 directly (via package Manager), ipy3 solved this issue that ipy2 and PythonNet 2.5.x can’t


import sys
import clr

clr.AddReference('AcMgd')
clr.AddReference('AcCoreMgd')
clr.AddReference('AcDbMgd')
clr.AddReference('AecBaseMgd')
clr.AddReference('AecPropDataMgd')
clr.AddReference('AeccDbMgd')

from Autodesk.AutoCAD.ApplicationServices import *
from Autodesk.AutoCAD.EditorInput import *
from Autodesk.AutoCAD.Runtime import *
from Autodesk.AutoCAD.DatabaseServices import *

from Autodesk.Civil.ApplicationServices import *
from Autodesk.Civil.DatabaseServices import *

adoc = Application.DocumentManager.MdiActiveDocument
cdoc = CivilApplication.ActiveDocument

o = []

with adoc.LockDocument():
    with adoc.Database as db:
        with db.TransactionManager.StartTransaction() as t:
            for id in cdoc.Styles.LabelStyles.GeneralLineLabelStyles:        
                s = t.GetObject(id, OpenMode.ForRead)
                nameA = s.GetType().BaseType.BaseType.GetProperty('Name').GetValue(s)
                # or 
                nameB = s.get_Name()
                # or 
                nameC = clr.GetClrType(s.GetType()).GetMethod('get_Name').Invoke(s, None)
                # append result
                o.append([nameA, nameB, nameC])
            t.Commit()

OUT = o
2 Likes

TNANK YOU! That’s really good learning you provided … You’re a Star! Have a great day.