Hi
is there a way to select objects based on its style ?
Could you be more specific here. What type of objects you’re trying to select based on which style?
Civil objects or Autocad objects?
Read this forum guidelines:
Precisely pipe networks objects (Structures and pipes) … I need to select them based on the assigned style … Given that there are many of which having different styles
Apologize if I wasn’t clear
HI
TRY
import sys
import clr
clr.AddReference('AcMgd')
clr.AddReference('AcDbMgd')
clr.AddReference('AeccDbMgd')
clr.AddReference('ProtoGeometry')
from Autodesk.AutoCAD.ApplicationServices import *
from Autodesk.AutoCAD.DatabaseServices import *
from Autodesk.AutoCAD.Geometry import *
from Autodesk.Civil.ApplicationServices import *
from Autodesk.Civil.DatabaseServices import *
from System.Collections.Generic import Dictionary
adoc = Application.DocumentManager.MdiActiveDocument
cdoc = CivilApplication.ActiveDocument
from Autodesk.DesignScript.Geometry import *
def get_sample_line_info(sampleLines):
global adoc
global cdoc
output = []
if not sampleLines:
return
if not isinstance(sampleLines, list):
sampleLines = [sampleLines]
with adoc.LockDocument():
with adoc.Database as db:
with db.TransactionManager.StartTransaction() as t:
for sampleLine in sampleLines:
vals = []
sampleLineId = sampleLine.InternalObjectId
obj = t.GetObject(sampleLineId, OpenMode.ForRead)
output.append(obj.StyleName)
#if isinstance(obj, SampleLine):
#output.append(obj)
t.Commit()
return output
OUT = get_sample_line_info(IN[0])
OR
import sys
import clr
clr.AddReference('AcMgd')
clr.AddReference('AcDbMgd')
clr.AddReference('AeccDbMgd')
clr.AddReference('ProtoGeometry')
from Autodesk.AutoCAD.ApplicationServices import *
from Autodesk.AutoCAD.DatabaseServices import *
from Autodesk.AutoCAD.Geometry import *
from Autodesk.Civil.ApplicationServices import *
from Autodesk.Civil.DatabaseServices import *
from System.Collections.Generic import Dictionary
adoc = Application.DocumentManager.MdiActiveDocument
cdoc = CivilApplication.ActiveDocument
from Autodesk.DesignScript.Geometry import *
def get_sample_line_info(sampleLines,SS):
global adoc
global cdoc
output = []
if not sampleLines:
return
if not isinstance(sampleLines, list):
sampleLines = [sampleLines]
with adoc.LockDocument():
with adoc.Database as db:
with db.TransactionManager.StartTransaction() as t:
for sampleLine in sampleLines:
vals = []
sampleLineId = sampleLine.InternalObjectId
obj = t.GetObject(sampleLineId, OpenMode.ForRead)
#output.append(obj.StyleName)
if obj.StyleName == SS:
output.append(obj)
t.Commit()
return output
OUT = get_sample_line_info(IN[0],IN[1])
One way to do this is to select all of the objects first, then get their styles and filter out the objects with the unwanted styles using List.FilterByBoolMask.