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
    • Unread
    • Recent
    • Tags
    • Users
    • Login

    Please Correct my code! SUBOBJECTS

    Scheduled Pinned Locked Moved PYTHON Development
    5 Posts 0 Posters 703 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 20/04/2017 at 08:10, xxxxxxxx wrote:

      I need two nulls in my plugin.
      What i`m doing wrong? Sorry for that, but i just starting learning.)))))
      In python many underwater rocks or .....))) I'm just stupid for this. It is not enough information how to make subobjects in the plugin, even fewer code examples. (Sorry for my English))))))))))
      )

      class NullObject(plugins.ObjectData) :

      def __init__(self, PosiX = 0, PosiZ = 0) :
              self.PosiX = PosiX
              self.PosiZ = PosiZ

      def Build(self) :

      self.null = c4d.BaseObject(c4d.Onull)
              self.null.SetName('null 1 ')
              doc.InsertObject(self.null)

      self.null_t = c4d.BaseObject(c4d.Onull)
              self.null_t.SetName('null 2 ')
              doc.InsertObject(self.null_t, self.null)

      return self.null.GetClone()

      def Init(self, op) :
              op.SetName("NullObject")
              return True

      def GetVirtualObjects(self, op, hierarchyhelp) :
              op = c4d.BaseObject(c4d.Onull)

      ret = self.Build()  
              ret.InsertUnder(op)

      return ret

      if __name__ == "__main__":
          c4d.EventAdd()
          dir, file = os.path.split(__file__)
          icon = bitmaps.BaseBitmap()
          icon.InitWith(os.path.join(dir, "res", "icon.png"))
          plugins.RegisterObjectPlugin(id=PLUGIN_ID, str="NullObject",
                                      g=NullObject,
                                      description="NullObject", icon=icon,
                                      info=c4d.OBJECT_GENERATOR | c4d.OBJECT_INPUT,)

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

        On 20/04/2017 at 21:28, xxxxxxxx wrote:

        Nope.

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

          On 20/04/2017 at 23:01, xxxxxxxx wrote:

          I found a solution

          class NullObject(plugins.ObjectData) :

          def __init__(self, PosiX = 0, PosiZ = 0) :
                  self.PosiX = PosiX
                  self.PosiZ = PosiZ
                  self.SetOptimizeCache(True)

          def Build(self) :
                  doc = c4d.documents.GetActiveDocument()
                  doc.StartUndo()

          self.null = c4d.BaseObject(c4d.Onull)
                  self.null.SetName('Box ')
                  doc.InsertObject(self.null)

          self.lowpolyIn = c4d.BaseObject(c4d.Onull)
                  self.lowpolyIn.SetName('Em Lowpoly model (Collider)')
                  doc.InsertObject(self.lowpolyIn,self.null)

          self.highpolyIn = c4d.BaseObject(c4d.Onull)
                  self.highpolyIn.SetName('Em Highpoly model')
                  doc.InsertObject(self.highpolyIn,self.null)

          self.wheelsIn = c4d.BaseObject(c4d.Onull)
                  self.wheelsIn.SetName('Em Wheels')
                  doc.InsertObject(self.wheelsIn,self.null)

          return self.null
                  doc.EndUndo()

          def Init(self, op) :
                  op.SetName("NullObject")
                  return True

          def GetVirtualObjects(self, op, hierarchyhelp) :
                  dirty = op.CheckCache(hierarchyhelp) or op.IsDirty(c4d.DIRTY_DATA)
                  if dirty is False:
                      return op.GetCache(hierarchyhelp)

          ret = self.Build()  
                  ret.InsertUnder(op)

          return ret

          def Execute(self, op, doc, bt, priority, flags) :
                  return True

          But here's how it works: https://drive.google.com/file/d/0B6LsRuoqyxhTQVA1WFh4ZWVNbnM/view?usp=sharing

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

            On 21/04/2017 at 05:30, xxxxxxxx wrote:

            Hi,

            I'm glad your problem is solved.

            I'd just like to remind about some rules in these forums. MAXON's SDK Team does not debug code, usually. The line is fuzzy here, because often questions get asked, where it's not clear if it's a problem with Cinema's SDKs or a bug. But we will certainly never do so without a description of the actual goal, a description of the problem and where it goes wrong in the code. Of course you can still post questions like this here in the forums, I just want to point out you will need the help of our community in these cases. And in order to get that, it might be a good idea to ask a bit more politely. While this might be a simple language issue, "Correct my code!" sounds a bit harsh to me (neither being a native speaker myself), maybe an additional "please" could help a long way...

            I hope, you don't mind.

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

              On 21/04/2017 at 18:23, xxxxxxxx wrote:

              Ok. Sorry if i be too harsh

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