Hi I am just breaking my head in creating the Catia product structure into a treeview which shows the hierarchical structure just as in the opened document. I dont get idea how to recursively implement the same though have tried  

 Can anyone point wat i am missing. My part of code: 
private void GetLinks(ProductStructureTypeLib.Product ProdPar, TreeNode rootnode)
    {
            MytreeView.Nodes.Add(rootnode);
            MytreeView.Nodes.Add(rootnode);
if (ProdPar.Products.Count > 0)
                {
                foreach (ProductStructureTypeLib.Product child in ProdPar.Products)
                {
                    INFITF.Document childDoc = (INFITF.Document)child.ReferenceProduct.Parent;
                    TreeNode childnode = new TreeNode();
                    childnode.Text = childDoc.get_Name();
                    treeList.Add(childDoc.get_Name());
                    rootnode.Nodes.Add(childnode);//childnode added--level 1                       
                    if (!IsDocumentAPart(childDoc))
                    {
                        ProductStructureTypeLib.Product prodRoot;
                        ProductStructureTypeLib.ProductDocument prodDoc;
                        prodDoc = (ProductStructureTypeLib.ProductDocument)childDoc;
                        prodRoot = prodDoc.Product;
                        if (prodRoot.Products.Count > 0)
                        {
                            ReadLinksChild(prodRoot, childnode);
                        }
                    }
                }
            }
private void ReadLinksChild(ProductStructureTypeLib.Product ProdPar, TreeNode node)
    {
        try
        {
            foreach (ProductStructureTypeLib.Product child in ProdPar.Products)
            {
                INFITF.Document childDoc = (INFITF.Document)child.ReferenceProduct.Parent;
                TreeNode childnode = new TreeNode();
                childnode.Text = childDoc.get_Name();
                node.Nodes.Add(childnode);//childnode added--level 1 
                if (!IsDocumentAPart(childDoc))
                {
                    ProductStructureTypeLib.Product prodRoot;
                    ProductStructureTypeLib.ProductDocument prodDoc;
                    prodDoc = (ProductStructureTypeLib.ProductDocument)childDoc;
                    prodRoot = prodDoc.Product;
                    if (prodRoot.Products.Count > 0)
                    {
                        ReadLinkedDocsProductChild(prodRoot, childnode);
                    }
                }
            }
        }
        catch (Exception ex)
        {
            logs.Info(ex.ToString());
        }
    }
Eine Antwort auf diesen Beitrag verfassen (mit Zitat/Zitat des Beitrags) IP