Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush GoZ API
      • Code Examples on Github
    • Forum
    • Downloads
    • Support
      • Support Procedures
      • Registered Developer Program
      • Plugin IDs
      • Contact Us
    • Categories
      • Overview
      • News & Information
      • Cinema 4D SDK Support
      • Cineware SDK Support
      • ZBrush 4D SDK Support
      • Bugs
      • General Talk
    • Unread
    • Recent
    • Tags
    • Users
    • Register
    • Login

    Python Generator: how to access 'self' object?

    PYTHON Development
    0
    5
    1.5k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • H
      Helper
      last edited by

      On 22/08/2018 at 14:56, xxxxxxxx wrote:

      In my Python Generator code I want to create an Object Selection tag and actually insert it in the Generator object itself, so the user can see it in the Object Manager.

      But "self is not defined". How to do this?

      1 Reply Last reply Reply Quote 0
      • H
        Helper
        last edited by

        On 23/08/2018 at 08:39, xxxxxxxx wrote:

        Hi,

        actually a Python Generator is not allowed to modify the scene, but only to generate "something" and return it. More precisely, this is true for the generator's main() function, which is called inside of the execution pipeline. The creation of a tag on the generator itself is a modification of the scene (cloning the tag onto the result of your main() is fine, though).
        See Threading Information for more.

        But you could add a user data button to the generator. In reaction to this button you'd create the tag (button press/UI happens in main thread). How this is achieved is described in Call Command thread, see my first post a bit further down.
        Then in the generator's main() you can clone the selection tag onto your result, applying modifications as needed (and described in your Animated user data for Python Generator - how? thread).

        The generator itself is referenced via op.

        1 Reply Last reply Reply Quote 0
        • H
          Helper
          last edited by

          On 23/08/2018 at 12:28, xxxxxxxx wrote:

          Thanks for the clarification.

          I think it makes more sense to require the user to add a Texture tag to the Python Generator object - then the user can maintain complete control over the tag attributes (scale, offset, etc).

          However, I don't want the texture tag to be applied to all geometry created by the Generator - I want to restrict it to just one specific poly, which is why I was inquiring about the Selection Object.

          Is there any way for the Generator to implement this restriction? I assume it cannot add a Selection Object to the Texture tag added by the user, since that would be "changing the scene."

          If I clone the Texture tag and add a Selection Object to my clone, I still need to prevent the original tag from affecting the other polys created in the Generator.

          1 Reply Last reply Reply Quote 0
          • H
            Helper
            last edited by

            On 24/08/2018 at 05:39, xxxxxxxx wrote:

            How about doing it slightly different? Just add a link user data parameter to the Python Generator, where the user can drag a material to. Then you generate your polys, add a selection tag and a texture tag to them, assigning the linked material to the texture tag. The restriction to certain polygons is simply done via the name of the selection tag, set for the respective parameter of the texture tag.

            1 Reply Last reply Reply Quote 0
            • H
              Helper
              last edited by

              On 26/08/2018 at 13:19, xxxxxxxx wrote:

              Thanks for the info 🙂

              1 Reply Last reply Reply Quote 0
              • First post
                Last post