Hi, Let me try this again with extra clarifications to my questions...

On Sat, Jan 19, 2019 at 4:23 PM delibrax <adien.den...@gmail.com> wrote:

> On regex, I would like to create that if the object with '_ + without
> string on dictionary' then it won't do repeat again. So the result still
> keep on '_+ without string on dictionary' not '_+ without value on
> dictionary + _ + value dictionary'.
>

You are using re.match() in your code. This anchors the search to the start
of the string. The regular expression pattern that you are using is saying
"match on a string that starts with an underscore". So that is the same as
if you had done sN.startswith('_'). My question was about the regex. I
understand perfectly that when you do this:

        if sN.endswith('_' + suffix):
            continue

you want to skip names that already have the suffix applied.

But when you do this:

        if re.match(regex, sN):
            continue

it is just skipping names that start with an underscore. So my question was
whether you meant that, but your answer only explained the endswith(). The
regex doesn't seem to be doing what you expected. Maybe you just wanted to
skip any name that has underscores in it? If so, you just want something
like

    if '_'' in sN:
        continue

It doesn't seem like you need the regex so far.


> Let say I have 'mesh_ply' then i wanna keep on 'mesh_ply'. I don't wanna
> it comes to 'mesh_ply_geo'
>

Yes I understand that bit. The problem I proposed to you is that if 'ply'
is not in your dictionary, then you don't know whether you need to add your
suffix unless you define more rules.
If any object name has an underscore, do you consider it to already have a
suffix and it should be skipped? This could be related to my previous
question. If you are just trying to skip names that have any underscore in
it, you dont really need the regex. You *could* have a regex that looks
for  re.search(r'_.+', sN)  which means to a string that has an underscore
and 1 or more characters anywhere in the string. But it seems kind of
pointless since you could just skip anything that contains an underscore.

Skipping underscores is a pretty course filter, so if its valid to have
"mesh_thing" as a valid name and you want it to be renamed to
"mesh_thing_geo", then it wouldn't work.


>
> Any advice?!
>
>
> On Friday, January 18, 2019 at 10:51:18 PM UTC+7, delibrax wrote:
>>
>> Hi there,
>>
>> I would like to adding the suffix regarding the object type. So here my
>> py:
>>
>> import maya.cmds as mc
>> import re
>>
>> SUFFIXES = {
>>     'mesh' : 'geo',
>>     'joint' : 'jnt',
>>     'follicle' : 'fol',
>>     'nurbsCurve' : 'crv',
>> }
>> GROUP = 'grp'
>>
>> def renameObject(object):
>>
>>     for obj in object:
>>         sN = obj.split('|')[-1]
>>
>>         lR = mc.listRelatives(sN, s=1)
>>
>>         if lR == None:
>>             objType = mc.objectType(obj)
>>         else:
>>             objType = mc.objectType(lR)
>>
>>         suffix = SUFFIXES.get(objType, GROUP)
>>
>>         regex = r'_.*'
>>
>>         if not suffix:
>>             continue
>>
>>         if sN.endswith('_' + suffix):
>>             continue
>>
>>         if re.match(regex, sN):
>>             continue
>>
>>         newName = "%s_%s" % (sN, suffix)
>>
>>         mc.rename(sN, newName)
>>
>>         index = object.index(obj)
>>
>>         object[index] = obj.replace(sN, newName)
>>
>>     return object
>>
>>
>> so the result is :
>>
>> when the 'joint' or 'mesh' (without have any suffix) been selected then
>> it will has 'joint_jnt' and 'mesh_geo'. Otherwise if it is re-run then
>> WON'T be 'joint_jnt_jnt' (we know it happened by statements endswith)
>>
>> My problem is when the object has suffix without on list dictionary (let
>> say 'mesh_ply') then become 'mesh_ply_geo'. As you can see I wanna that
>> every object with suffix will 'continue'. Any advice?! Thanks in advance.
>>
>>
>> --
> You received this message because you are subscribed to the Google Groups
> "Python Programming for Autodesk Maya" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to python_inside_maya+unsubscr...@googlegroups.com.
> To view this discussion on the web visit
> https://groups.google.com/d/msgid/python_inside_maya/9df1940a-9331-4434-a50c-6e683e167e11%40googlegroups.com
> <https://groups.google.com/d/msgid/python_inside_maya/9df1940a-9331-4434-a50c-6e683e167e11%40googlegroups.com?utm_medium=email&utm_source=footer>
> .
> For more options, visit https://groups.google.com/d/optout.
>

-- 
You received this message because you are subscribed to the Google Groups 
"Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to python_inside_maya+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA3CYkq01OB_nELZgRDnRbTgDJjweY%3Dn7RGFsc5GNRnG3g%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to