Refresh Generator Object

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

On 08/09/2009 at 08:03, xxxxxxxx wrote:

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

---------
Hi,

in the GetVirtualObject-method i create a PolgonObject with some values.
If i change the values, the viewport doesn't refresh. I have to click somewhere in the interface and then it refreshs.
I tried it with something like this.

> \> op->Message(MSG_UPDATE);//and MSG_CHANGE \> EventAdd(EVENT_FORCEREDRAW); \>

I also tried

> DrawViews(DA_ONLY_ACTIVE_VIEW|DA_NO_THREAD|DA_NO_ANIMATION); //DrawViews(DA_NO_THREAD|DA_FORCEFULLREDRAW);

I even overwrote the Message-method of the GeneratorObject without success.

If i catch the MSG_GETCUSTOMICON-message in the Message-method and call EventAdd(EVENT_FORCEREDRAW); there, it works. But i don't like this dirty hack and i don't want to refresh everytime.

Anybody an idea what i could try else?

Thanks!

cheers,
Oli

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

On 08/09/2009 at 08:07, xxxxxxxx wrote:

It's hard to say, please post some simplified code showing the problem.

cheers,
Matthias

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

On 09/09/2009 at 02:17, xxxxxxxx wrote:

Ok, here some codesnips

> \> //GetVirtualObjects \> BaseObject\* AixObject::GetVirtualObjects(PluginObject \*op, HierarchyHelp \*hh){ \>       \>      Bool dirty = op->CheckCache(hh) || op->IsDirty(DIRTY_DATA); \>       \>      if (!dirty){ \>            \>           return op->GetCache(hh); \>      } \>       \>      BaseContainer \*objectData = op->GetDataInstance(); \> \>      BaseObject \*ret = BaseObject::Alloc(Onull); \>       \>      if (!ret){ \> \>           blDelete(ret); \>           return NULL; \>      } \> \>         //...create PolygonObjects or SplineObjects \> \>      Free(polygonObject); \>      Free(splineObject); \>      segmentPoints.Free(); \>       \>      //refresh \>      EventAdd(EVENT_FORCEREDRAW); \>      DrawViews(DA_ONLY_ACTIVE_VIEW|DA_NO_THREAD|DA_NO_ANIMATION); //Tried this too DrawViews(DA_NO_THREAD|DA_FORCEFULLREDRAW); \>       \>      return ret; \> }      \>

I also tried this.

> \> //GetVirtualObjects \> BaseObject\* AixObject::GetVirtualObjects(PluginObject \*op, HierarchyHelp \*hh){ \>      //same as above \> \>     //refresh \>     op->Message(MSG_UPDATE); //tried also MSG_CHANGE \> \>    return ret; \> } \> \> //Message \> Bool AixObject::Message(GeListNode \*node, LONG type, void \*t_data){ \>       \>           if (type == MSG_UPDATE) \>      { \>           EventAdd(EVENT_FORCEREDRAW); \>       DrawViews(DA_ONLY_ACTIVE_VIEW|DA_NO_THREAD|DA_NO_ANIMATION);           \>           //DrawViews(DA_NO_THREAD|DA_FORCEFULLREDRAW); \>      } \> \> } \>

cheers,
Oli

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

On 10/09/2009 at 05:37, xxxxxxxx wrote:

You have to send the MSG_UPDATE message to the polygon object. Also please check the RoundedTube SDK example as this is a parametric generator which creates a polygon object.

cheers,
Matthias