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
    1. Home
    2. kangddan
    • Profile
    • Following 1
    • Followers 3
    • Topics 7
    • Posts 19
    • Best 1
    • Controversial 0
    • Groups 0

    kangddan

    @kangddan

    1
    Reputation
    20
    Profile views
    19
    Posts
    3
    Followers
    1
    Following
    Joined Last Online

    kangddan Unfollow Follow

    Best posts made by kangddan

    • RE: How to Undo Switching Between Modes?

      @ferdinand Thank you for letting me know that switching between modes is irreversible! My initial thought was that when I generate an empty object in edit mode, if I undo the action, I could return to edit mode. Thanks again for your explanation 🙂

      posted in Cinema 4D SDK
      kangddanK
      kangddan

    Latest posts made by kangddan

    • How to call other object's button attribute by a tag and simulate clicking?

      Hello everyone, I want to simulate clicking buttons on other objects through a custom button. Is this possible?
      Thank you!c981a2679efc788cb33ee5312fb5f3a.png

      posted in Cinema 4D SDK 2024 windows python
      kangddanK
      kangddan
    • RE: Frozen Matrix different

      @i_mazlov said in Frozen Matrix different:

      象,并且没有其

      I found that it's very similar to the offsetParentMatrix attribute introduced in Maya 2020.:)

      posted in Cinema 4D SDK
      kangddanK
      kangddan
    • RE: How to Undo Switching Between Modes?

      @ferdinand My English isn't very good, sorry😣 about that. What I mean is that when I am in edit mode and select points/edges/polygons, create a null object, and then switch back to object mode, if I want to undo, it would be more 'user-friendly' if I could return to the previous edit mode instead of object mode
      It's good to know that calling doc.SetMode(c4d.Mmodel) is non-undoable; I struggled with this for a while😬

      posted in Cinema 4D SDK
      kangddanK
      kangddan
    • RE: How to Undo Switching Between Modes?

      @ferdinand Thank you for letting me know that switching between modes is irreversible! My initial thought was that when I generate an empty object in edit mode, if I undo the action, I could return to edit mode. Thanks again for your explanation 🙂

      posted in Cinema 4D SDK
      kangddanK
      kangddan
    • How to Undo Switching Between Modes?

      Hello all, my script needs to work in point, edge, and polygon modes (edit modes). At the end of the script, I will switch it back to model mode, but I'm not sure how to undo the mode switching. When I run the code in point mode, I can't return to point mode when undoing

      import c4d
      
      def main():
          sel = doc.GetActiveObjects(c4d.GETACTIVEOBJECTFLAGS_CHILDREN)
          if not sel or not doc.IsEditMode(): return # edit mode
      
          doc.StartUndo()
          for obj in sel:
              doc.SetSelection(obj, c4d.SELECTION_SUB)
              joint = c4d.BaseObject(c4d.Ojoint)
              doc.AddUndo( c4d.UNDOTYPE_NEWOBJ, joint)
              doc.InsertObject(joint, None, obj, True)
              doc.SetSelection(joint, c4d.SELECTION_ADD)
              ...
      
          doc.SetMode(c4d.Mmodel) # set model mode
          doc.EndUndo()
          c4d.EventAdd()
      
      if __name__ == '__main__':
          main()
      
      posted in Cinema 4D SDK windows 2024 python
      kangddanK
      kangddan
    • RE: How to Use Button Properties in an XPresso Python Node?

      @ferdinand Thank you !

      posted in Cinema 4D SDK
      kangddanK
      kangddan
    • How to Use Button Properties in an XPresso Python Node?

      I hope to do something by clicking the update button on the Python node. I’m not sure if this is possible
      4b0ca80107218634c86c8e1c51b0bb0.png

      posted in Cinema 4D SDK python 2024 windows
      kangddanK
      kangddan
    • RE: Calling the button to create an object cannot add it to the undo queue

      Thank you @m_adam It seems that the best approach is to manually create a null object and calculate its correct rotation matrix through certain methods to achieve the same effect. Once again, thank you for your code; it has been very useful to me!

      posted in Cinema 4D SDK
      kangddanK
      kangddan
    • Calling the button to create an object cannot add it to the undo queue

      Hello everyone, when creating a splineIK tag, I dynamically call c4d.CallButton to create an IkHandle. At this point, an empty object is generated. I am now able to correctly retrieve it, but I can't add it to the undo queue. Since c4d.CallButton has no return value, I retrieve the empty object from the current scene each time I create an IkHandle. I'm not sure if there's a more proper way to do this

      import c4d
      
      def createJoints(jointCount):
          jntList = []
          for i in range(jointCount):
              jnt = c4d.BaseObject(c4d.Ojoint)
              jnt.SetName('splineIK_{}'.format(i))
              doc.InsertObject(jnt)
              doc.AddUndo(c4d.UNDOTYPE_NEW, jnt)
              jntList.append(jnt)
              if i > 0:
                  jnt.InsertUnder(jntList[i-1])
          return jntList
      
      def getAllNulls():
          return [obj for obj in doc.GetObjects() if obj.GetType() == c4d.Onull]
      
      def addSplineTag(startJnt, endJnt, spline):
          tag = c4d.BaseTag(1019862)
          doc.AddUndo(c4d.UNDOTYPE_NEW, tag)
          startJnt.InsertTag(tag)
          tag[c4d.ID_CA_IKSPLINE_TAG_TYPE] = 2
          tag[c4d.ID_CA_IKSPLINE_TAG_TWIST_TYPE] = 1
          tag[c4d.ID_CA_IKSPLINE_TAG_SPLINE] = spline
          tag[c4d.ID_CA_IKSPLINE_TAG_END] = endJnt
          
          splineIkHandles = []
          for i in range(spline.GetPointCount()):
              c4d.CallButton(tag, c4d.ID_CA_IKSPLINE_HANDLE_ADD)
              c4d.CallButton(tag, c4d.ID_CA_IKSPLINE_HANDLE_CREATE)
              
              null = getAllNulls()[0]
              doc.AddUndo(c4d.UNDOTYPE_NEW, null) # add undo
              splineIkHandles.append(null)
              
          return splineIkHandles
      
      def createSplineIK(jointCount=10):
          sel = doc.GetSelection()
          if not sel: return
          spline = sel[0] if sel[0].CheckType(c4d.Ospline) else None
          if spline is None: return
      
          doc.StartUndo()
          # ---------------------------------
          jnts = createJoints(jointCount)
          splineIkHandles = addSplineTag(jnts[0], jnts[-1], spline)
          for i in splineIkHandles:
              print(i.GetName())
          # ---------------------------------
          doc.EndUndo()
          c4d.EventAdd()
      
      if __name__ == '__main__':
          createSplineIK(jointCount=10)
      
      posted in Cinema 4D SDK python
      kangddanK
      kangddan
    • RE: Adding a Morph Deformer Causes Pose Morph Tag to Stop Working

      Thank u @i_mazlov
      I appreciate you pointing me in the right direction. I will try to understand the workings behind the posemorph tag! 😊

      posted in Cinema 4D SDK
      kangddanK
      kangddan