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

    Boolean Object

    Scheduled Pinned Locked Moved SDK Help
    8 Posts 0 Posters 680 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

      THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

      On 07/03/2005 at 01:52, xxxxxxxx wrote:

      User Information:
      Cinema 4D Version:   9 
      Platform:   Windows  ;   
      Language(s) :     C++  ;

      ---------
      Hello ...

      Now I'm facing a problem which is somewhat strange.

      I put a boolean first.
      Then I put a cube. Let's say Vector(10,10,1).
      Then another cube. Let's say Vector(2,2,2);

      So I will get a hole in the first cube, if I put them in the right coordinates.
      Yes I get it.
      The problem is when I use a loop to make so many holes in the first cube. I've got no holes , but omly the names in object hierarchy.

      So I use some exits to be sure that the cube(main) and the driller cube is really in the right place.
      They are really at their right place and I can see a hole till I call the MCOMMAND_CURRENTSTATETOOBJECT. After the call, the main cube has got no hole at all.

      Please do a favor for me ... guys!

      Waiting ...
      Zaw Min Tun

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

        THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

        On 07/03/2005 at 09:40, xxxxxxxx wrote:

        Did you group your 'driller' cubes into a Null object so that they can all influence the Boolean together? An example of your hierarchy may help solve this.

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

          THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

          On 07/03/2005 at 19:46, xxxxxxxx wrote:

          Hello ... Robert

          I think I see what you mean ...
          I'm not making the holes simultaneously ...

          Firstly ...
          I put a hole on the MainCube using DrillerCube.
          So the object hierarchy is
          // => Means Parent-Child Relation (like GetUp() ... GetDown() of C4DAtom Class)
          // -> Means (GetNext() ... GetPred())
          Boole=>MainCube->DrillerCube

          Then I call the function MCOMMAND_CURRENTSTATETOOBJECT
          Then the object hierarchy changed to ...
          NullObject=>MainCube(with a hole) -> DrillerCube ( just a thin line along the hole)

          So I got 2 objects.

          If I want to make another hole I take the MainCube again (already got a hole) , then I make the things as I'd shown above again. Then I got a next hole again. I put a button in my dialog and let the user to click that button to get a hole. It's OK and working well. But sometimes I need to do the holes without the user button_click. So I call the function ( I created a function for drilling ) in a looping , but the procees is not drilling many holes simultaneously. Am I understood? Like this ...

          DrillingFunction
          ******************************************************************************
          1. Put a boolean object
          2. Place the MainCube under the boolean
          3. Put a DrillerCube under the boolean so that Boolean=>MainCube->DrillerCube
          4. Call MCOMMAND_CURRENTSTATETOOBJECT using Boolean object
          5. Then the object hierarchy will be
               Boolean=>MainCube->DrillerCube
               Null        =>MainCube(with a hole) -> DrillerCube (along the hole line)
          6. The upper hierarchy is deleted
          7. Drag out the MainCube and DrillerCube
          ******************************************************************************

          I call that function form main() using a loop. The DrillerCube is surely thick enoug to make a drill and the place all I want to make the drills are also true. But no hole. I also used this same function in the button_click function. It is working properly. Even the loop count is one it is not working properly. So I think the Driller may be wrong in size or place. So I exit the drilling function befor calling MCOMMAND_CURRENTSTATETOOBJECT (step 4). I see the MainCube and DrillerCube are at their right place and I can also see a hole because of Boole , but after calling MCOMMAND_... , no hole.

          So I think it's strange ...
          When I do one by one , I got the hole.
          But I do it using the loop, I got no hole (although I use the same function)

          I also use MCOMMAND_MAKEEDITABLE as an alternative. It is also on the same way.
          So I'm facing an unexpectable stop in my development.

          Really thank you ... Robert.
          If you got any idea ... please ...let me know.

          Zaw Min Tun

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

            THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

            On 07/03/2005 at 21:10, xxxxxxxx wrote:

            Hmmm, once you've called CurrentStateToObject, you get two objects in a Null object. The next step after 6. should be to "Connect" the result into one polygonal object. I think that this is MCOMMAND_JOIN with SendModelingCommand(). Use the result as MainCube for the next DrillingFunction.

            DrillingFunction
            ******************************************************************************
            1. Put a boolean object
            2. Place the MainCube under the boolean
            3. Put a DrillerCube under the boolean so that Boolean=>MainCube->DrillerCube
            4. Call MCOMMAND_CURRENTSTATETOOBJECT using Boolean object
            5. Then the object hierarchy will be
                 Boolean=>MainCube->DrillerCube
                 Null        =>MainCube(with a hole) -> DrillerCube (along the hole line)
            6. The upper hierarchy is deleted
            7. Select children of Null
            8. Call MCOMMAND_JOIN on Null
                NewMainCube
                Null=>MainCube(with hole)->DrillerCube(along hole line)
            9. Delete the Null
            ******************************************************************************

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

              THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

              On 08/03/2005 at 00:29, xxxxxxxx wrote:

              Thanks , Robert ...

              But if I call MCOMMAND_JOIN , the two objects will turn into a single one. That's not what I want. I want them seperately. A cube with a hole and another one which looks like a thin box frame.

              The question in my brain is ...
              why it was working properly when it was done one by one by using the user input ( button_click)
              and why it is behaving abnormally when the same code is called from main using a loop.

              Most of my suspicion is on messaging. Do I need to send a certain message? I already try MSG_CHANGE and MSG_UPDATE ,but still minus.

              Thank you so much ... Robert
              Zaw Min Tun

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

                THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                On 08/03/2005 at 00:34, xxxxxxxx wrote:

                Hello Robert

                I find that if I select only the parent object and call MCOMMAND_JOIN then the next output is not a single one. But the output of the step 4 (CurrentStateToObject) is already a wrong one.

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

                  THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                  On 08/03/2005 at 01:45, xxxxxxxx wrote:

                  Should be. If you use the Null object resulting from the CURRENTSTATETOOBJECT call as the object in MCOMMAND_JOIN, it should create a single polygonal object.

                  The problem with keeping all of your boolean->currentstatetoobject results as separate objects is the difficulty in that the boolean acts on two objects only. They can be grouped to 'simulate' two objects, but only two objects can be used at a time (A&B;, A-B, A|B). As with any boolean algebra, to do operations between multiple sets requires they be grouped ((A1,A2,A3,A4)&(B1,B2,B3)).

                  If you want to take the CSTO result and do another boolean operation with it, you will need to move the entire Null group under the Boolean then add your next DrillerCube under it in the Boolean object. Then perform the next CSTO and move the resulting Null object group under another Boolean with DrillerCube to continue the process:

                  DrillingFunction
                  ******************************************************************************
                  1. Put a boolean object
                  2. Place the MainCube under the boolean
                  3. Put a DrillerCube under the boolean so that Boolean=>MainCube->DrillerCube
                  4. Call MCOMMAND_CURRENTSTATETOOBJECT using Boolean object
                  5. Then the object hierarchy will be
                       Boolean=>MainCube->DrillerCube
                       Null        =>MainCube(with a hole) -> DrillerCube (along the hole line)
                  6. The upper hierarchy is deleted
                  7. Use Null group as "MainCube" in 2.
                  ******************************************************************************

                  I hope that makes sense. 🙂

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

                    THE POST BELOW IS MORE THAN 5 YEARS OLD. RELATED SUPPORT INFORMATION MIGHT BE OUTDATED OR DEPRECATED

                    On 08/03/2005 at 23:09, xxxxxxxx wrote:

                    Thank you so much Robert ...

                    With all my respects ...

                    Zaw Min Tun

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