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
    • Login

    How to use bridge tool in Python script

    PYTHON Development
    0
    3
    1.4k
    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 16/08/2018 at 13:30, xxxxxxxx wrote:

      To automate some of my modelling workflows, I am currently trying to execute some bridge commands via scripts. Specifically, I try to bridge two polygons. How can I do this with a python script? I have two objects and the selected polygons to bridge. I tried:

      c4d.CallCommand(450000008) # Bridge
          tool()[c4d.MDATA_BRIDGE_OBJINDEX1] = doc.SearchObject("Test2")
          tool()[c4d.MDATA_BRIDGE_OBJINDEX2] = doc.SearchObject("Test")
          tool()[c4d.MDATA_BRIDGE_ELEMENT1] = 0
          tool()[c4d.MDATA_BRIDGE_ELEMENT2] = 0
          tool()[c4d.MDATA_BRIDGE_DELETE] = True
          tool()[c4d.MDATA_BRIDGE_ISO] = False
       
          c4d.CallButton(tool(), c4d.MDATA_APPLY)

      But I had no luck so far. Honestly, I have no clue what MDATA_BRIDGE_OBJINDEX1 and MDATA_BRIDGE_ELEMENT1 really should be. There is also no real documentation how this should work.

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

        On 20/08/2018 at 06:23, xxxxxxxx wrote:

        Hi TraceCat, first of all, welcome in the plugincafe community!

        Here is a quick example to demonstrate how to use the BridgeTool in PolygonMode. One important thing is that polygon has to be selected in order to do the correct operation.

        import c4d
          
        def main() :
            firstObj = doc.GetFirstObject()
            secondObj =  doc.GetFirstObject().GetNext()
            if not firstObj and not secondObj and not firstObj.CheckType(c4d.Opolygon) and not secondObj.CheckType(c4d.Opolygon) :
                return
          
            # Select the polygon
            polyId1 = 5
            polyId2 = 0
          
            sel1 = firstObj.GetPolygonS()
            sel2 = secondObj.GetPolygonS()
          
            sel1.DeselectAll()
            sel2.DeselectAll()
          
            sel1.Select(polyId1)
            sel2.Select(polyId2)
          
            # Use the command
            settings = c4d.BaseContainer()
            settings[c4d.MDATA_BRIDGE_ELEMENT1] = polyId1 # The polygon id for the first obj
            settings[c4d.MDATA_BRIDGE_ELEMENT2] = polyId2 # The polygon id for the second obj
          
            settings[c4d.MDATA_BRIDGE_OBJINDEX1] = firstObj # Define the first obj
            settings[c4d.MDATA_BRIDGE_OBJINDEX2] = secondObj # Defien the second obj
            c4d.utils.SendModelingCommand(command = c4d.ID_MODELING_BRIDGE_TOOL,
                                        list = [firstObj, secondObj],
                                        mode = c4d.MODELINGCOMMANDMODE_POLYGONSELECTION,
                                        bc = settings,
                                        doc = doc,
                                        flags = c4d.MODELINGCOMMANDFLAGS_CREATEUNDO)
          
          
            c4d.EventAdd()
          
        if __name__=='__main__':
            main()
        

        Sadly there is no way to affect the order of the vertex. So you may end up with a result which is not what you expected.

        If you have any question, please let me know.
        Cheers,
        Maxime!

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

          On 21/08/2018 at 05:40, xxxxxxxx wrote:

          Hi Maxime!

          Thx for the warm welcome and of course the help! Just tested it and it works nice, at least for straigtforward bridging (as you mentioned the vertex order needs to fit). Thank you very much! This helps a lot!

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