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

onModelChange3dc Error

27 REPLIES 27
SOLVED
Reply
Message 1 of 28
jonsX942W
40245 Views, 27 Replies

onModelChange3dc Error

I get this Error all the time. I usually ignore it but this time it is stopping a new script I am using from working. Any Ideas how to fix this? I am using Advanced skeleton

// Execute Step:1 : Prep
// Face step:1 complete.
// Execute Step:2 : CtrlBox
// Face step:2 complete.
// Execute Step:3 : EyeBall
// Face step:3 complete.
// Execute Step:4 : EyeLid
// Face step:4 complete.
// Execute Step:5 : EyeBrow
select -r eyeBrowCage.e[0:2] eyeBrowCage.e[4] eyeBrowCage.e[6] eyeBrowCage.e[8] eyeBrowCage.e[13:17] eyeBrowCage.e[20:21] eyeBrowCage.e[24:25] eyeBrowCage.e[28:29] eyeBrowCage.e[31:33] ;
// Face step:5 complete.
// Execute Step:6 : Lip
// Error: file: C:/Users/x9-ws/Documents/maya/2017/scripts/AutoRig_Skeleton/AdvancedSkeleton5.mel line 13385: Command attachCurve failed. Open Script Editor for details. //
// Error: line 1: Cannot find procedure "onModelChange3dc". //
// Error: line 1: Cannot find procedure "onModelChange3dc". //
// Error: line 1: Cannot find procedure "onModelChange3dc". //
// Error: line 1: Cannot find procedure "onModelChange3dc". //

 

// Error: line 1: Cannot find procedure "onModelChange3dc".

Thanks

Jon

27 REPLIES 27
Message 21 of 28
giovanniakp
in reply to: Anonymous

 

Try again with this code (it's a python script btw, so it needs import statement). I cannot edit my previous post so I'll just repost it again :

 

 

 

 

import maya.cmds as cmds
import maya.mel as mel

def removeRogueModelPanelChangeEvents():

    # add any missing procedure error in here
    EVIL_METHOD_NAMES = ['DCF_updateViewportList', 'CgAbBlastPanelOptChangeCallback','onModelChange3dc']

    capitalEvilMethodNames = [name.upper() for name in EVIL_METHOD_NAMES]
    modelPanelLabel = mel.eval('localizedPanelLabel("ModelPanel")')
    processedPanelNames = []
    panelName = cmds.sceneUIReplacement(getNextPanel=('modelPanel', modelPanelLabel))
    while panelName and panelName not in processedPanelNames:
        editorChangedValue = cmds.modelEditor(panelName, query=True, editorChanged=True)
        parts = editorChangedValue.split(';')
        newParts = []
        changed = False
        for part in parts:
            for evilMethodName in capitalEvilMethodNames:
                if evilMethodName in part.upper():
                    changed = True
                    break
            else:
                newParts.append(part)
        if changed:
            cmds.modelEditor(panelName, edit=True, editorChanged=';'.join(newParts))
            print("Model panel error fixed!"),
        processedPanelNames.append(panelName)
        panelName = cmds.sceneUIReplacement(getNextPanel=('modelPanel', modelPanelLabel))


removeRogueModelPanelChangeEvents()

 

 

 


or this (credit: https://forums.autodesk.com/t5/maya-forum/maya2018-error-line-1-cannot-find-procedure-quot/td-p/8651... )

 

 

 

from maya import cmds

def removeCallbackError():	

    for model_panel in cmds.getPanel(typ="modelPanel"):
        
        # Get callback of the model editor
        callback = cmds.modelEditor(model_panel, query=True, editorChanged=True)
        
        # If the callback is the erroneous `CgAbBlastPanelOptChangeCallback`
        # or other callback error (add any missing procedure here)

        if callback == "CgAbBlastPanelOptChangeCallback" or callback == "onModelChange3dc" :
            
            # Remove the callbacks from the editor
            cmds.modelEditor(model_panel, edit=True, editorChanged="")

removeCallbackError()

 

 

 

 

 

Open the problematic scene file, run the script, make any edits (zoom the camera or whatever) so Maya considers the scene as "dirty" or edited, then save the file. You need to clean AND then save each infected files (either by script or manually editing .MA file with text editor), because every time you open other problematic scene and you don't clean it, the error will keep spreading because it latches onto each scene via script node.

Any missing procedure error is embedded by default in uIConfigurationScriptNode. I guess that's how in the last few months there have been actual malware infections with far more severity than this error in Maya, because someone really put an effort and exploit this vulnerability. Must really hate Autodesk, don't they...

Message 22 of 28
chaneyx
in reply to: jonsX942W

What is the original source of all of this? Some think it is Advanced Skeleton? 

Message 23 of 28
Anonymous
in reply to: jonsX942W

We are using Maya 2020.4, and this error is still coming up. What is the original source of this issue? We keep cleaning our files with the scripts mentioned before, yet we come across the same error again in a new scene.

Message 24 of 28
chaneyx
in reply to: Anonymous

I believe the uiConfigurationScriptNode is corrupt but no word from Autodesk on this problem. If it is indeed this node you need to have a TD figure out how to edit it which I did through the ExpressionEditor right click Select Filter->By Script Node Name.


You may be able to delete your preferences but I am not sure. My problem came from some file somebody sent me. Not sure how they got it. I did find this python script online which cleans up individual bad scenes



def removeRogueModelPanelChangeEvents():
EVIL_METHOD_NAMES = ['DCF_updateViewportList', 'CgAbBlastPanelOptChangeCallback','onModelChange3dc']
capitalEvilMethodNames = [name.upper() for name in EVIL_METHOD_NAMES]
modelPanelLabel = mel.eval('localizedPanelLabel("ModelPanel")')
processedPanelNames = []
panelName = cmds.sceneUIReplacement(getNextPanel=('modelPanel', modelPanelLabel))
while panelName and panelName not in processedPanelNames:
editorChangedValue = cmds.modelEditor(panelName, query=True, editorChanged=True)
parts = editorChangedValue.split(';')
newParts = []
changed = False
for part in parts:
for evilMethodName in capitalEvilMethodNames:
if evilMethodName in part.upper():
changed = True
break
else:
newParts.append(part)
if changed:
cmds.modelEditor(panelName, edit=True, editorChanged=';'.join(newParts))
print("Model panel error fixed!"),
processedPanelNames.append(panelName)
panelName = cmds.sceneUIReplacement(getNextPanel=('modelPanel', modelPanelLabel))




removeRogueModelPanelChangeEvents()



Message 25 of 28
kelly_hynes
in reply to: jonsX942W

Hello,

 

I see we have this logged and fixed in upcoming public releases: 

 

MAYA-86309 Error (cannot find procedure "onModelChange3dc") when loading a specific scene

 

There appears to be an odd error message happening in Maya 2018. Once you start seeing it, it seems to infect the Maya session and any file saved during that session (even after file new) will exhibit the error until restarting Maya. 

// Error: line 1: Cannot find procedure "onModelChange3dc". //

 

This should get rid of the problem: 

  • Run Maya (if Maya is already open then quit and re-open)
  • Select File > Open Scene option box.
  • Turn off the "Execute script nodes" check box. Click "Save and Close" button.
  • Open the problematic scene. You should no longer see the "Cannot find procedure" error.
  • Restore the "Execute script nodes" check box in Open Scene option box.
  • Save your scene.

Hope this helps.

Regards,

Kelly

 



Kelly Hynes
Manager, Software QA Engineering
Installation & Licensing forums | Contact product support | Autodesk AREA


Message 26 of 28
mishominas
in reply to: giovanniakp

it's even happened when Maya scenes are empty, even when I delete Maya default folder and it create new

Message 27 of 28
dynuke
in reply to: giovanniakp

This should be selected as the solution I guess...
Message 28 of 28
francois.debue
in reply to: Anonymous

for theses errors :

// Error: line 1: Cannot find procedure "onModelChange3dc". //
// Error: line 1: Cannot find procedure "CgAbBlastPanelOptChangeCallback". //

I've added this line of code ( in MEL ) in my usersetup.mel

global proc onModelChange3dc(string $s0) {};
global proc CgAbBlastPanelOptChangeCallback(string $s0) {};

Ef!

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

Post to forums  

Technology Administrators


Autodesk Design & Make Report