Community
Navisworks API
Welcome to Autodesk’s Navisworks API Forums. Share your knowledge, ask questions, and explore popular Navisworks API topics.
cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Search with "OR"

2 REPLIES 2
SOLVED
Reply
Message 1 of 3
jordanmarr
1701 Views, 2 Replies

Search with "OR"

I have a Search with multiple SearchCondition objects added.  By default, conditions added create an "AND" style search.

Is there a way to do an "OR" style search?


More specifically, I have a list of element ids, and I want to know if it is possible to search for them all at once.

 

If not, then I suppose I could create a speparate search for each element.

 

 

2 REPLIES 2
Message 2 of 3
xiaodong_liang
in reply to: jordanmarr

Hi,

 

I assume you are using .NET API. This needs SearchCondition group. It is "AND” within one group. It is "OR"  among groups.  The code below is tested with the SDK sample model:  gatehouse.nwd.

 

//Create a new search

Search s = new Search();

s.Selection.SelectAll();

//SearchCondition1 of group1:the item is required

SearchCondition oGroup1_SC1 = SearchCondition.HasPropertyByDisplayName("Item", "Required");

oGroup1_SC1 = oGroup1_SC1.EqualValue( VariantData.FromBoolean(true));

//SearchCondition2 of group1:the item's DWG handle is 16C17

SearchCondition oGroup1_SC2 = SearchCondition.HasPropertyByDisplayName("Entity Handle", "Value");

oGroup1_SC2= oGroup1_SC2.EqualValue( VariantData.FromDisplayString("16C17"));

//SearchCondition1 of group2: the item is NOT required

SearchCondition oGroup2_SC1= SearchCondition.HasPropertyByDisplayName("Item", "Required");

oGroup2_SC1 = oGroup2_SC1.EqualValue(VariantData.FromBoolean(false));

//SearchCondition2 of group2: the item's DWG handle is 17C2E

SearchCondition oGroup2_SC2 = SearchCondition.HasPropertyByDisplayName("Entity Handle", "Value");

oGroup2_SC2 = oGroup2_SC2.EqualValue(VariantData.FromDisplayString("17C2E"));

//create group1

System.Collections.Generic.List<SearchCondition> oG1 = new System.Collections.Generic.List<SearchCondition>();

oG1.Add(oGroup1_SC1);

oG1.Add(oGroup1_SC2);

//create group2

System.Collections.Generic.List<SearchCondition> oG2 = new System.Collections.Generic.List<SearchCondition>();

oG2.Add(oGroup2_SC1);

oG2.Add(oGroup2_SC2);

// add groups to SearchConditions

s.SearchConditions.AddGroup(oG1);

s.SearchConditions.AddGroup(oG2);

//highlight the items

ModelItemCollection searchResults = s.FindAll(Autodesk.Navisworks.Api.Application.ActiveDocument

 

Regards,

Xiaodong Liang

Developer Technical Services

Tags (1)
Message 3 of 3
jordanmarr
in reply to: xiaodong_liang

Great!  Thank you very much.

 

Jordan

 

Can't find what you're looking for? Ask the community or share your knowledge.

Post to forums  

Rail Community


 

Autodesk Design & Make Report