Getting the full pathname of a bitmap



  • On 28/04/2014 at 15:00, xxxxxxxx wrote:

    I'm getting the bitmap filename from a color channel of a material with c4d.BITMAPSHADER_FILENAME
    When the bitmap is in any of the default search paths, I only get a filename. For example, stripes.jpg
    But the file stripes.jpg could be in doc_folder/tex or simply in doc_folder, or in Cinema 4D folder or in C4D folder, inside a tex folder, or inside the prefs folder or inside the prefs folder, inside a tex folder, etc.
    All of these are default search paths.
    But getting the filename is not enough for me because I need to access the file to, for example, duplicate it inside another folder.
    So, how can I get a full pathname for any bitmap that is inside the color channel, even if the bitmap is inside any of the default search paths?
    Must I check for all of them?



  • On 28/04/2014 at 15:45, xxxxxxxx wrote:

    Well, just coded some code that seems to work fine.

    I check to see if the filename is simply a filename or a full path with:

    if filename == os.path.basename(filename) :

    And, if it is a simple filename, I reconstruct the full path name with:

      
    def GetFullPath(doc,filename) :   
        # check for doc_folder/filename   
        full_path=os.path.join(doc.GetDocumentPath(),filename)   
        if os.path.exists(full_path) :return full_path   
           
         # check for doc_folder/tex/filename   
        full_path=os.path.join(doc.GetDocumentPath(),"tex",filename)   
        if os.path.exists(full_path) :return full_path   
           
        # check for app_folder/filename   
        tex_path,dummy=os.path.split(c4d.storage.GeGetStartupApplication())   
        full_path=os.path.join(tex_path,filename)   
        if os.path.exists(full_path) :return full_path   
           
        # check for app_folder/tex/filename   
        full_path=os.path.join(tex_path,"tex",filename)   
        if os.path.exists(full_path) :return full_path   
           
        # check for prefs_folder/filename   
        tex_path=c4d.storage.GeGetC4DPath(c4d.C4D_PATH_PREFS)   
        full_path=os.path.join(tex_path,filename)   
        if os.path.exists(full_path) :return full_path   
      
        # check for prefs_folder/tex/filename   
        full_path=os.path.join(tex_path,"tex",filename)   
        if os.path.exists(full_path) :return full_path   
           
        for i in range(10) :   
            tex_path=c4d.GetGlobalTexturePath(i)   
            if tex_path != "":   
                full_path=os.path.join(tex_path,filename)   
                if os.path.exists(full_path) :return full_path   
           
        return filename   
    


  • On 02/05/2014 at 06:24, xxxxxxxx wrote:

    Funny someone asked the same question few days later. Didn't see yours before.

    http://www.plugincafe.com/forum/forum_topics.asp?FID=7

    -Niklas


Log in to reply