Touching Input object which has input [SOLVED]

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

On 13/09/2012 at 06:57, xxxxxxxx wrote:

User Information:
Cinema 4D Version:    
Platform:      
Language(s) :

---------
I have a generator plugin that generates a spline based on an input-spline. The plugin implements caching, so when nothing on the input-object has changed, the previously generated spline is returned (by calling BaseObject::GetCache() on the ObjectData's host).

It all works fine when the spline is generated the first time. But when nothing has changed and just the cache is returned, the children that are not direct input objects for my plugin are not touched at all because

  1. My plugin does not know about them.
  2. The child-object which serves as input for my object is not invoked and therefore does not touch its input-objects.
    An example hierarchy would be
- My Plugin Object  
  - Splinemask (input object for my plugin)  
      - Circle (input object 1 for splinemask)  
      - Circle (input object 2 for splinemask)

How can I fix this issue?

Thanks in advance,
Niklas

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

On 14/09/2012 at 08:16, xxxxxxxx wrote:

*bump*

No one? Should I just remove the caching from my plugin? :nauseated_face:
Or maybe just touch any object below my plugin object?

-Niklas

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

On 14/09/2012 at 09:12, xxxxxxxx wrote:

The spline-mask object seems to do caching as well (is it?), but all of its input objects seem to touch their input objects correctly.

For example:

- Spline Mask  
  - Spline Mask  
      - Circle  
      - Circle  
  - Spline Mask  
      - Circle  
      - Circle

This does not show the "Circle" splines in the editor, although (it seems like) the Spline Mask object is doing caching. They must be touched somewhere..

But when I do

- My Plugin  
  - Spline Mask  
      - Circle  
      - Circle

The two "Circle" splines are shown in the editor because I do never touch them, and when caching, the "Spline Mask"'s GetContour(), which would hide the two "Circle" splines, is not called.

Does anyone know how to proceed?

Thanks,
-Niklas

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

On 14/09/2012 at 11:32, xxxxxxxx wrote:

http://imm.io/Eloi
i got it only trough csto or SendModelingCommand: Join, in python

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

On 24/09/2012 at 09:26, xxxxxxxx wrote:

Ilya, I don't think you have understood my question, or I just missunderstand you. :) But the
conversion is not the problem, it's the touching so that the input-objects are hidden (when you put a
cube into a HyperNURBS, you don't see the cube any-more, but its smoothed version).

*bump*

Thanks in advance,
-Niklas

On 22/11/2016 at 15:50, xxxxxxxx wrote:

@NiklasR were you ever able to resolve this issue?

On 28/11/2016 at 02:04, xxxxxxxx wrote:

A general solution to a similar topic has been posted on this thread with a plugin example provided here.

On 28/11/2016 at 12:05, xxxxxxxx wrote:

Hello knickknack,

I am sorry but I don't see this example showing how to solve the problem mentioned here.

  • It supports only "raw" spline objects, no procedural splines as inputs
  • Even the first input input child is visible, not speaking of the initial problem where children of input objects are still visible

@Donovan: unfortunately I have not been able to find a solution for this yet.

Kind regards,
Niklas

On 28/11/2016 at 21:42, xxxxxxxx wrote:

Thanks for responding @Niklas!

On 02/12/2016 at 09:30, xxxxxxxx wrote:

Thanks Niklas, for spotting out the issue.

In the last days I've been able to work on a solution that supports both procedural spline generators and hiding input object are properly working now.

The code will be available beginning next week after some other corner cases will be verified.

Best, Riccardo

On 15/12/2016 at 13:12, xxxxxxxx wrote:

Hi Niklas, I apologize for getting late here but  here you can find a new updated code which should fix the issue you've reported above.

Let me know if/how the example fits with your needs.

Best, Riccardo
_<_!--endfragment--_>_

On 15/12/2016 at 17:45, xxxxxxxx wrote:

Hi knickknack, thanks for the example. It would be nice if you could include all the resource files as well so
we don't have to write them down manually before testing the plugin :)

Your example seems to work well, fixing the above mentioned points. I'm not sure exactly how  though. Is
it the use of  GetHierarchyClone()  or  GetAndCheckHierarchyClone()? Or is it important at what point to call
Touch()  on the input child object?

Thanks

Kind regards

Niklas

PS: Just for reference so some1 else doesn't have to skim through the other thread first, here's the link
to the code: http://pastebin.com/LHsjdg8f -- And here in this Gist I put the resource files as well.

On 15/12/2016 at 21:13, xxxxxxxx wrote:

@Niklas, thanks for making the resource files. Makes it much easier to test!

Also, for those using Niklas example. You'll need the following directory structure.

- OffsetSpline
----- offsetspline.pyp (<- NOTE: This needs to be *.pyp not *.py as in the gist)
----- res
----------- c4d_symbols.h
----------- description
------------------ OoffsetYspline.h
------------------ OoffsetYSpline.res
----------- strings_us
------------------- description
------------------------- OoffsetYspline.str

On 16/12/2016 at 11:49, xxxxxxxx wrote:

Uups, yes it needs to be .pyp. My mistake :)