Reloading Dialog??



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 12/12/2012 at 08:06, xxxxxxxx wrote:

    Trying to build a custom tool with the GeDialog functions inside a script instead of a plugin. The problem is I have to close and reopen C4D if I want to see any updates to the Dialog for some reason. Not sure why.

    Tried importing script as a module, but C4D won't recognize the script as a module either; so reload() is out of the question I guess.

    Is there a reload function I am not seeing here in the help docs?

    Thanks for the help.

    Rick



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 12/12/2012 at 08:46, xxxxxxxx wrote:

    I didn't understand where you are building the dialog. In a separate file?



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 12/12/2012 at 12:52, xxxxxxxx wrote:

    Originally posted by xxxxxxxx

    Tried importing script as a module, but C4D won't recognize the script as a module either; so reload() is out of the question I guess.

    i am also not quite sure what you do mean, but you are aware of sys.path or  modules folder 
    at user/blahblah/ ... Cinema4d/... blah ... /python/modules ? you can't add modules add 
    runtime,  but you can for sure create a Desktop/myModule.py and use it in c4d, you have just 
    add the Desktop to your sys.path list.

    http://docs.python.org/2/library/sys.html#sys.path



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 12/12/2012 at 13:05, xxxxxxxx wrote:

    Sorry I am building the Dialog inside the Script Manager and saving it out to the scripts folder for C4D.

    Importing, reloading and running with the following syntax:

    import [script name]
    reload[script name]
    script name . run function

    I just keep getting an error saying 'No module named [script name here]'. Coming from the scripting world in Maya, this was all I ever had to do, was save it inside the scripts folder. I am going to look into the sys.path stuff more though, I just figured it would be built in for C4D to read modules from its own scripts folder.



  • THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

    On 12/12/2012 at 13:36, xxxxxxxx wrote:

    it is still not 100% clear to me what you want. since you are talking about modules, 
    i assume you are talking about multiple files. lets assume you have got 2 files.

    c://myModule.py
    myScriptfile.py

    myScriptfile.py doens't have to be physically on your hardrive you can also create just in
    the memory within the document. the import statements for myScriptfile.py would be :

    import sys, os
    __mypath__ = 'c:\\'
    if __myPath__ not in sys.path: sys.path.insert(0, __myPath__)
      
    import c4d, myModule
    ...
    

    however, i am 100% sure one of the more experienced guys here will come arround 
    and tell us, that absolute paths are bad. so normally you would do something like that :

    import sys, os
    # that line is just working in a script/tag or node, for a plugin we had to use c4d.documents 
    # and so o. also the document has to be saved at leasst once, otherwise doc.GetDocumentPath()
    # will be "".
    if doc.GetDocumentPath() not in sys.path: sys.path.insert(0, doc.GetDocumentPath())
      
    import c4d, myModule
      
    or like this
      
    __currdir__ = os.path.join(os.path.dirname(__file__) , 'modules')
    if __currdir__ not in sys.path: sys.path.insert(0, __currdir__)
      
    import c4d, myModule
    

    you can also just drop the script into the c4d usersettings python modules folder.

    ps : also note that python sometimes needs a __init__.py file (no content)
    in the folder you want to become a module folder. i also never understood when 
    they have to be created and when not, so i just drop them here and there :)

    pps: just to make it really clear. myModule.py has to exist before c4d has been started.
    Any changes made to myModule.py while C4d is running , won't take any effect before 
    C4D has been restarted again.


Log in to reply