Ilogic Case or If, ElseIf, Then.

Ilogic Case or If, ElseIf, Then.

jostroopers
Collaborator Collaborator
1,056 Views
7 Replies
Message 1 of 8

Ilogic Case or If, ElseIf, Then.

jostroopers
Collaborator
Collaborator

I want to make a rule when the parameter 'Diepte' has a value then some parts have to be suppressed.

I did that whit a Case but that dus not work.

The problem is the second case when a value is between to values it dus not change the suppressed state.

Select Case Diepte
Case <1050 mm
	Component.IsActive("10260:1") = True
	Component.IsActive("10260:2") = True
	Component.IsActive("10261:1") = False
	Component.IsActive("10262:1") = False
	Component.IsActive("10261:2") = False
	Component.IsActive("10262:2") = False
Case (Diepte>=1050)  And (Diepte<1550)
	Component.IsActive("10260:1") = False
	Component.IsActive("10260:2") = False
	Component.IsActive("10261:1") = True
	Component.IsActive("10261:2") = True
	Component.IsActive("10262:1") = False
	Component.IsActive("10262:2") = False
Case >=1550 mm 
	Component.IsActive("10260:1") = False
	Component.IsActive("10260:2") = False
	Component.IsActive("10261:1") = False
	Component.IsActive("10261:2") = False
	Component.IsActive("10262:1") = True
	Component.IsActive("10262:2") = True

Now i did the same with a If, ElseIf, Then and then it works.

If Diepte <= 1050 Then
	Component.IsActive("10260:1") = True
	Component.IsActive("10260:2") = True
	Component.IsActive("10261:1") = False
	Component.IsActive("10262:1") = False
	Component.IsActive("10261:2") = False
	Component.IsActive("10262:2") = False
ElseIf Diepte > 1050 And Diepte <= 1550 Then
	Component.IsActive("10260:1") = False
	Component.IsActive("10260:2") = False
	Component.IsActive("10261:1") = True
	Component.IsActive("10261:2") = True
	Component.IsActive("10262:1") = False
	Component.IsActive("10262:2") = False
ElseIf Diepte > 1550 Then 
	Component.IsActive("10260:1") = False
	Component.IsActive("10260:2") = False
	Component.IsActive("10261:1") = False
	Component.IsActive("10261:2") = False
	Component.IsActive("10262:1") = True
	Component.IsActive("10262:2") = True

 What is wrong with the case code?

Mvg Jos
Youre drawings are as good as the symbols that compleet them.....
0 Likes
Accepted solutions (1)
1,057 Views
7 Replies
Replies (7)
Message 2 of 8

Martin-Winkler-Consulting
Advisor
Advisor

@jostroopers 

Try without the ( ) in 

Case (Diepte>=1050)  And (Diepte<1550)
Case Diepte>=1050  And Diepte<1550

 

Martin Winkler
CAD Developer
Did you find this post helpful? Feel free to like this post.
Did your question get successfully answered? Then click on the ACCEPT SOLUTION button.


EESignature

0 Likes
Message 3 of 8

JhoelForshav
Mentor
Mentor

Hi @jostroopers 

Dont use "And", just use a simple "," like this 🙂

 

Select Case Diepte
Case <1050 mm
	Component.IsActive("10260:1") = True
	Component.IsActive("10260:2") = True
	Component.IsActive("10261:1") = False
	Component.IsActive("10262:1") = False
	Component.IsActive("10261:2") = False
	Component.IsActive("10262:2") = False
Case >=1050, <1550
	Component.IsActive("10260:1") = False
	Component.IsActive("10260:2") = False
	Component.IsActive("10261:1") = True
	Component.IsActive("10261:2") = True
	Component.IsActive("10262:1") = False
	Component.IsActive("10262:2") = False
Case >=1550 mm 
	Component.IsActive("10260:1") = False
	Component.IsActive("10260:2") = False
	Component.IsActive("10261:1") = False
	Component.IsActive("10261:2") = False
	Component.IsActive("10262:1") = True
	Component.IsActive("10262:2") = True
End Select
Message 4 of 8

jostroopers
Collaborator
Collaborator

Hi Martin

 

This does not bring the desired result

Mvg Jos
Youre drawings are as good as the symbols that compleet them.....
0 Likes
Message 5 of 8

jostroopers
Collaborator
Collaborator

Hi, JhoelForshav

 

If I start with a depth measure below 1050 it goes well. If I then go to a size between 1100 and 1500 it goes well too. If I now go to a size larger than 1550 then nothing will happen.

 

Select Case Diepte
Case <1050 mm
	Component.IsActive("10260:1") = True
	Component.IsActive("10260:2") = True
	Component.IsActive("10261:1") = False
	Component.IsActive("10262:1") = False
	Component.IsActive("10261:2") = False
	Component.IsActive("10262:2") = False
Case >=1050, <1550
	Component.IsActive("10260:1") = False
	Component.IsActive("10260:2") = False
	Component.IsActive("10261:1") = True
	Component.IsActive("10261:2") = True
	Component.IsActive("10262:1") = False
	Component.IsActive("10262:2") = False
Case >=1550 mm 
	Component.IsActive("10260:1") = False
	Component.IsActive("10260:2") = False
	Component.IsActive("10261:1") = False
	Component.IsActive("10261:2") = False
	Component.IsActive("10262:1") = True
	Component.IsActive("10262:2") = True
	
End Select
Mvg Jos
Youre drawings are as good as the symbols that compleet them.....
0 Likes
Message 6 of 8

JhoelForshav
Mentor
Mentor

You're right... My bad.

The comma is interpreted more like "Or"...

 

This should work though:

Select Case True
Case Diepte < 1050
	Component.IsActive("10260:1") = True
	Component.IsActive("10260:2") = True
	Component.IsActive("10261:1") = False
	Component.IsActive("10262:1") = False
	Component.IsActive("10261:2") = False
	Component.IsActive("10262:2") = False
Case Diepte >= 1050 AndAlso Diepte < 1550
	Component.IsActive("10260:1") = False
	Component.IsActive("10260:2") = False
	Component.IsActive("10261:1") = True
	Component.IsActive("10261:2") = True
	Component.IsActive("10262:1") = False
	Component.IsActive("10262:2") = False
Case Diepte >= 1550
	Component.IsActive("10260:1") = False
	Component.IsActive("10260:2") = False
	Component.IsActive("10261:1") = False
	Component.IsActive("10261:2") = False
	Component.IsActive("10262:1") = True
	Component.IsActive("10262:2") = True
End Select

Or if you change the order a bit you can use "To":

Select Case Diepte
	Case < 1050
		Component.IsActive("10260:1") = True
		Component.IsActive("10260:2") = True
		Component.IsActive("10261:1") = False
		Component.IsActive("10262:1") = False
		Component.IsActive("10261:2") = False
		Component.IsActive("10262:2") = False
	Case >= 1550
		Component.IsActive("10260:1") = False
		Component.IsActive("10260:2") = False
		Component.IsActive("10261:1") = False
		Component.IsActive("10261:2") = False
		Component.IsActive("10262:1") = True
		Component.IsActive("10262:2") = True
	Case 1050 To 1550
		Component.IsActive("10260:1") = False
		Component.IsActive("10260:2") = False
		Component.IsActive("10261:1") = True
		Component.IsActive("10261:2") = True
		Component.IsActive("10262:1") = False
		Component.IsActive("10262:2") = False
End Select
0 Likes
Message 7 of 8

JhoelForshav
Mentor
Mentor
Accepted solution

Because of the order though, this works too... Probably the best solution:

Select Case Diepte
	Case < 1050
		Component.IsActive("10260:1") = True
		Component.IsActive("10260:2") = True
		Component.IsActive("10261:1") = False
		Component.IsActive("10262:1") = False
		Component.IsActive("10261:2") = False
		Component.IsActive("10262:2") = False
	Case < 1550
		Component.IsActive("10260:1") = False
		Component.IsActive("10260:2") = False
		Component.IsActive("10261:1") = True
		Component.IsActive("10261:2") = True
		Component.IsActive("10262:1") = False
		Component.IsActive("10262:2") = False
	Case >= 1550
		Component.IsActive("10260:1") = False
		Component.IsActive("10260:2") = False
		Component.IsActive("10261:1") = False
		Component.IsActive("10261:2") = False
		Component.IsActive("10262:1") = True
		Component.IsActive("10262:2") = True
End Select

 

Message 8 of 8

jostroopers
Collaborator
Collaborator

Thanks JhoelForshav.

 

This sollution works.

Mvg Jos
Youre drawings are as good as the symbols that compleet them.....