Wavefront Import Scale -still not working



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

    On 23/04/2005 at 18:28, xxxxxxxx wrote:

    User Information:
    Cinema 4D Version:   8.012 
    Platform:   Windows  ; Mac  ;  Mac OSX  ; 
    Language(s) :     C++  ;

    ---------
    Alright, I've tried what 'the developers' suggest through Mikael and I see someone else with a success on his own import/export plugin. But the scaling value is always zero.

      
         // Get Wavefront Import Scale  
         BasePlugin* plug;  
         if (plug = FindPlugin(FORMAT_OBJIMPORT, C4DPL_SCENELOADER))  
         {  
              GePrint("PluginName: "+plug->GetName());  
              scaling = plug->GetDataInstance()->GetReal(OBJIMPORTFILTER_SCALE);  
         }  
         else MessageDialog("Wavefront Import Plug Not Found!");  
      
         GePrint("Scaling: "+RealToString(scaling));  
    

    I never get the MessageDialog. So, what is wrong here?

    Thanks,



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

    On 25/04/2005 at 15:30, xxxxxxxx wrote:

    Anybody?



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

    On 26/04/2005 at 01:12, xxxxxxxx wrote:

    I can confirm that the code above *doesn't* work. I'm currently looking for an alternative method...



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

    On 26/04/2005 at 02:16, xxxxxxxx wrote:

    @kuroyume
    Hard to see what you are trying to do.

    And you never get the MessageDialog because FORMAT_OBJIMPORT is a builtIn Plugin from MAXON and therefor _always_ found. But i am not sure if this is what you really wanted to know?

    developer

    [Edit] havent seen mikaels posting before sending my answer, so maybe its only of little use, dont mind.



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

    On 26/04/2005 at 08:34, xxxxxxxx wrote:

    Well, according to a previous post (some time ago), the developers said that this should work:

      
    BasePlugin *plug = FindPlugin(saver_id);  
    if (plug)  
    {  
    BaseContainer *bc = plug->GetDataInstance();  
    ...  
    }  
    

    And another post, "Info from Dialog", whose title is misleading, concerns doing a similar thing using a written import/export plugin whose settings are stored in the Preferences.

    So, yes, this is a built-in plugin and it is expected to be found. :) But there appears to be no data access to any part of it. I've tried GetDataInstance(), GetParameter(), and GetDescription() as well as using Mikaels 'Print' utilities for GeData/BaseContainer/Description to find anything. There doesn't seem to be any data to access. BaseContainer prints [-1,........] or something like that.

    I would really hate, for a commercial product, to maintain two identical values - one in the Wavefront Import Preferences and another in my plugin - since I cannot do it programmatically. It'd be better if the user could just set Wavefront Import Preferences and my plugin extract that value for its use.

    Fingers crossed... :)



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

    On 26/04/2005 at 10:17, xxxxxxxx wrote:

    Well, duh! ;)

    On a hunch, I tried something completely different (and no larch!).

    Try this:

      
    #include "Fobjimport.h"  
    ...  
    // Get Wavefront Import Scale  
    BaseContainer* bc;  
    if (bc = GetWorldPluginData(FORMAT_OBJIMPORT))  
    {  
         scaling = bc->GetReal(OBJIMPORTFILTER_SCALE);  
    }  
    else  
    {  
         MessageDialog("Wavefront Import Data Not Retrieved!");  
         return FALSE;  
    }  
    GePrint("Scaling: "+RealToString(scaling));  
    

    This works! Solved finally! :)

    Back to real work...



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

    On 26/04/2005 at 12:27, xxxxxxxx wrote:

    "On a hunch, I tried something completely different ..."

    Welcome to the mystical world of confusion and grace,
    leading to wisdom and faith by [ - please insert something useful here - at least i dont know how to get it out of the box]



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

    On 26/04/2005 at 12:42, xxxxxxxx wrote:

    I should probably start a new thread, but this is related.

    What is up with SetWorldPluginData() in 8.012 SDK? When I try to use it and compile, I receive this linker error:

      
    iPLoader.obj : error LNK2001: unresolved external symbol "int __cdecl SetWorldPluginData(long,class BaseContainer &,int)" (?SetWorldPluginData@@YAHJAAVBaseContainer@@H@Z)  
    ./Commercial/interPoser Ltd.cdl : fatal error LNK1120: 1 unresolved externals  
    Error executing link.exe.  
    

    This is in the same place as GetWorldPluginData() is called and no problems with it. The best that I can reckon is that there is a discrepancy between "c4d_general.h" and "OperatingSystem.h" in definition (one uses const BaseContainer&, the other BaseContainer* ). Is this something that may require an api_lib recompilation?



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

    On 26/04/2005 at 13:22, xxxxxxxx wrote:

    That was it. Needed to change "c4d_general.h" by adding the missing 'const'.

    Nonetheless, SetWorldPluginData() doesn't seem to work in this regard, at least not in 8.012 SDK. This is only a test to see if I can have the user set the value with my plugin and temporarily set the Wavefront Import scale when loading files of this type. No such luck.


Log in to reply