Notifications
Clear all

[Closed] If else by Prefix

I am trying to do a condition in which only an object that starts with a specific prefix will do but i can’t seem to find out how

I know how to select by prefix (select $prefix*) but it doesn’t work

This is what I need

if ($.name == STARTS WITH PREFIX) then
(
do something
)
else
(
do something else
)

Thank You

2 Replies

There are several ways to do it. Here are some examples using matchPattern():

(
	name1 = "car_0001"
	name2 = "Car_0001"
	name3 = "_car_0001"
	name4 = " car_0001"
	
	prefix = "car_"
	
	match1 = matchPattern name1 pattern:(prefix+"*") ignoreCase:true
	match2 = matchPattern name2 pattern:(prefix+"*") ignoreCase:true
	match3 = matchPattern name3 pattern:(prefix+"*") ignoreCase:true
	match4 = matchPattern name4 pattern:(prefix+"*") ignoreCase:true
	
	format "match1:%\n" match1
	format "match2:%\n" match2
	format "match3:%\n" match3
	format "match4:%\n" match4
)

Here is a function that can be used to find the nodes with the specified prefix:

(
	
	fn FindObjectsByPrefix nodes prefix:"" =
	(
		prefix += "*"
		
		result = for j in nodes where matchPattern j.name pattern:prefix ignoreCase:true collect j
		
		return result
	)
	
	obj = FindObjectsByPrefix objects prefix:"NODE_PREFIX_"
	
	select obj
	
)

And here is a last one for just one object:

(
	
	fn ObjectHasPrefix node prefix:"" =
	(
		prefix += "*"
		
		matchPattern node.name pattern:prefix ignoreCase:true
	)
	
	ObjectHasPrefix $ prefix:"NODE_PREFIX_"
	
)

Note that in these examples the string comparison is not case sensitive, but you can turn if off if you need.

That’s amazing!
Thank you very much