Select objects based on style

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.

@MohamedR.Nasreldeen Is this what you want?

Also, you can use the Camber Package by @mzjensen then use a bool filter.

1 Like

Thanks All for your kind help, I got what I wanted thanks to your thoughts and ideas

here is the final script form