Maxon Developers Maxon Developers
    • Documentation
      • Cinema 4D Python API
      • Cinema 4D C++ API
      • Cineware API
      • ZBrush Python 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
    • Recent
    • Tags
    • Users
    • Login

    Can't execute a plugin twice

    Scheduled Pinned Locked Moved PYTHON Development
    16 Posts 0 Posters 1.3k Views
    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 Offline
      Helper
      last edited by

      On 01/10/2013 at 13:02, xxxxxxxx wrote:

      no code no proper answer.

      CommandData.Execute() doesn't seem to return the correct return value type in all cases.
      C4d does expect a boolean indicating the success of the command. None is the return value
      type for void alike methods in python.

      > def foo() :
      >
      > pass
      >
      >
      >
      >
      > def moo() :
      >
      > return None
      >
      >
      >
      >
      > print foo()
      >
      > print moo()
      >
      >
      >
      >
      > >> None
      >
      > >> None

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

        On 01/10/2013 at 13:18, xxxxxxxx wrote:

        My code is like this:

        class my_plugin(plugins.CommandData) :

        dialog = None

        def Execute(self, doc) :
                if self.dialog is None:
                    self.dialog = my_dialog()

        return self.dialog.Open(dlgtype=c4d.DLG_TYPE_ASYNC, pluginid=PLUGIN_ID, defaultw=256, defaulth=150, xpos=-1, ypos=-1)

        def RestoreLayout(self, sec_ref) :
                if self.dialog is None:
                   self.dialog = my_dialog()

        return self.dialog.Restore(pluginid=PLUGIN_ID, secret=sec_ref)

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

          On 01/10/2013 at 13:19, xxxxxxxx wrote:

          That name sounds like my code. I have a plugin using that name.
          At the time. I used to call GeDialog plugins "menu" plugins. Because they were launched from the plugins menu.
          But I stopped using that naming scheme. Because it can be easily confused with sub menu plugins.
          And could also possibly get confused with CommandData plugins too.

          If it is my code that you're looking at. It was actually for a GeDialog plugin that uses the .res file.
          Something that we don't have any examples of from Maxon.
          It's not for a CommandData plugin.

          Without seeing your code. It's hard to say what's causing the problem in your plugin.
          But as a comparison example that might possibly be realted. In the old COFFEE 9.6 SDK examples. There's a plugin called "AsyncBounce.cof" that also has the same problem where it only runs once.
          The problem in that old coffee example is coming from the "RestoreLayout" code.
          When that code is removed. It runs fine no matter how many times you run it.
          I remember how surprised I was when I found the culprit. It wasn't a very obvious error that would jump out at you when looking at the code.

          Without seeing the code. It's really hard to help.

          -ScottA

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

            On 01/10/2013 at 13:26, xxxxxxxx wrote:

            Yes, I believe it is your code, Scott.
            And yes, I'm using a .res file to create my dialog.
            I will try deleting the RestoreLayout code and see if it works.
            Isn't this RestoreLayout stuff for the case of a docked interface that gets saved in a layout?

            Rui Batista

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

              On 01/10/2013 at 13:29, xxxxxxxx wrote:

              Nope... even without the RestoreLayout stuff, it still returns the same error 😞

              Is there any frameword for a CommandData plugin that uses .res files to create a dialog around?

              Rui Batista

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

                On 01/10/2013 at 13:45, xxxxxxxx wrote:

                I have one posted on my plugins site: https://sites.google.com/site/scottayersmedia/plugins
                In the python section. Called "Dialog Using Resources".

                -ScottA

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

                  On 01/10/2013 at 13:48, xxxxxxxx wrote:

                  Thank you, Scott. But it is for C++. Isn't there anything available for python?

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

                    On 01/10/2013 at 14:03, xxxxxxxx wrote:

                    Scroll down.
                    There's a python plugins section below the C++ plugins section.

                    That reminds me. I gotta update that website.
                    It's pretty ugly.

                    -ScottA

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

                      On 01/10/2013 at 14:32, xxxxxxxx wrote:

                      Ok, ok... found it.

                      My Execute code had a tab too much. Damn! the whole problem was just a tab.
                      Thank you for all the help.

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

                        On 01/10/2013 at 15:00, xxxxxxxx wrote:

                        Lol!

                        Been there. Done that. Got the T-Shirt.
                        I like Python a lot. But that tabbed spacing stuff is a royal P.I.T.A. And burned me more times than I care to admit.
                        After dealing with a few spacing errors like that. You don't mind typing {} braces in other languages anymore.

                        -ScottA

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

                          On 01/10/2013 at 17:40, xxxxxxxx wrote:

                          It does help to use a proper editor which can enforce PEP8 rules to your code. It won't
                          be able to fix really fundamental formatting syntax errors, but most of them. PEP8 are
                          the official python code formatting guidelines ( x = foo(y=5) instead of x = foo(y = 5) 
                          for example).

                          https://github.com/hhatto/autopep8

                          There also many (unofficial) branches specifically fitted into the various editors / IDEs.
                          Eclipse does come with some rock solid PEP8 enforcing, personally I am using SublimeText3
                          with

                          https://github.com/wistful/SublimeAutoPEP8.

                          There is also CodeIntel for ST3 which can highlight various (possible) code problems for you,
                          including PEP8 violations.

                          https://github.com/SublimeCodeIntel/SublimeCodeIntel

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

                            On 02/10/2013 at 06:30, xxxxxxxx wrote:

                            I do have an excellent editor. I use Sublime Text 2.
                            This is one of those errors that can only be attributed to me. Code that could be executed nevertheless was only being executed if a condition was true.

                            Rui Batista

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

                              On 02/10/2013 at 08:28, xxxxxxxx wrote:

                              Not sure which version of Sublime supports it, but version 3 or even version 2 has an option to use
                              spaces instead of tabs. You won't have this problem when using tabs only, and sublime will automatically
                              convert tabs to spaces with the right options.

                              Best,
                              -Niklas

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

                                On 02/10/2013 at 08:35, xxxxxxxx wrote:

                                Sublime Text 2 can convert spaces into tabs and vice-versa.
                                And I always use tabs, instead of spaces 🙂
                                However, when I copy/paste code from the SDK pages, sometimes the pasted code comes with spaces. But I always convert spaces to tabs.

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

                                  On 02/10/2013 at 10:00, xxxxxxxx wrote:

                                  All three links work with ST2/.3 The first link is the original PEP8 Autoformat script, which is kind 
                                  of the official python autoformat and will obviously work on any text file. Link two and three are 
                                  specific ST2/3 plugins.

                                  I like autoformatting and I think it is a good idea to follow PEP8, considering the way python 
                                  does define its syntax. CodeIntel also adds things like some sort of intellisense, displaying your 
                                  classes and methods with its docstrings and parameters in the autocomplete dropdown. You can 
                                  also hook it up with the great fake c4d lib from here :

                                  http://www.smart-page.net/blog/2012/11/04/python-cinema-4d-api-auto-completion-fake-modules/

                                  About spaces and tabs, I think it is actually a PEP rule to use spaces ( edit : just looked it up, it is 
                                  not a  rule, it is just a guideline, but still worth following for various reasons imho). With an editor 
                                  like ST you won't recognize any difference in the workflow, as you can just use tab like you are 
                                  used to.

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