De-constructing a hierarchy



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

    On 26/11/2010 at 17:25, xxxxxxxx wrote:

    I need to create an algorithm that goes through a hierarchy of objects and rebuilds the list in a way that is would be able to rebuild the same hierarchy, later. Lets say:

    Cube1
    -Platonic1
    --SweepNURBS1
    ---Spline1
    ---Spline2
    --Cube2
    ---Platonic2
    ----Sphere1

    The order of creation is (I believe) :

    Cube1
    Platonic1 (insert_under Cube1)
    Cube2 ( (insert_under Platonic1)
    Platonic2 ( (insert_under Cube2)
    Sphere1 (insert_under Platonic2)
    SweepNURBS (insert_under Platonic1)
    Spline2 (insert_under SweepNURBS)
    Spline1 (insert_under SweepNURBS)

    This is because each time I InsertUnder, the inserted object ends up being the first child of its parent.
    Is there any algorithm that goes through a hierarchy and returns a list of objects in the correct order so that a new scene could be reconstructed?
    I already tried a few times to code such a thing but I'm having no luck :(
    Anyone? Please...

    Rui Batsita



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

    On 27/11/2010 at 02:29, xxxxxxxx wrote:

    Then why don´t you use InsertAfter instead? ;) Insert the SweepNurbs with InsertUnder, then user InsertAfter(sweepnurbs) for cube2. Then go through that hierarchy level again and start doing the same to sweep and cube2 for their children.



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

    On 27/11/2010 at 06:35, xxxxxxxx wrote:

    I need to automate the process. If I make it by hand, of course I would make it differently.
    But I need to be able to provide any hierarchy to my code and it must create a list in the correct order so that it could all be solved with InsertUnder.
    If there was an algorithm that would do what I need listing the objects in the correct order and having a flag telling that I should insert it with InsertUnder or InsertAfter, that would also be fine.



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

    On 27/11/2010 at 06:44, xxxxxxxx wrote:

    I don´t see why you wouldn´t be able to make a recursive function out of my suggestion.



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

    On 29/11/2010 at 16:44, xxxxxxxx wrote:

    Me neither ;-)



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

    On 04/12/2010 at 16:39, xxxxxxxx wrote:

    The problem with InsertAfter is that it doesn't seem to work in Python. For example, the following code doesn't work inside a Python Generator:

    def main() :
        parent=c4d.BaseObject(c4d.Osweep)
        profile=c4d.BaseObject(c4d.Osplinecircle)
        path=c4d.BaseObject(c4d.Osplinestar)
        profile.InsertUnder(parent)
        path.InsertAfter(profile)
        return parent

    However, the following code does work:

    def main() :
        parent=c4d.BaseObject(c4d.Osweep)
        profile=c4d.BaseObject(c4d.Osplinecircle)
        path=c4d.BaseObject(c4d.Osplinestar)
        path.InsertUnder(parent)
        profile.InsertUnder(parent)
        return parent

    But I need to insert the path before and then the profile, to create a sweep. This is harder than I thought :-(


Log in to reply