Tạo shared parameter với 1 groupname và nhiều parameter

Mình làm theo các hướng dẫn từ autodesk. Nhưng mỗi lần tạo chỉ được 1 shared pararameter và gán được 1 project parameter tương ứng.
Thực tế mình muốn tạo 1 biến shared parameter gồm group name là Zone và các parameter như sau:

  • Zone ( gồm các parameter: level, hạng mục, location,…) và áp dụng bindingmap cho các category (cột, dầm, sàn, wall).
    Nhờ các bạn trên forum hướng dẫn mình cách làm. Xin cảm ơn!

Bạn thử cái này xem nhé
public static void SetNewParameter(this UIApplication app, DefinitionFile myDefinitionFile, Category Pick_category)
{
// create a new group in the shared parameters file

        DefinitionGroups myGroups = myDefinitionFile.Groups;

        DefinitionGroup myGroup = null;
        Definition Defin = null;

        bool check_DefinitionGroup = false;

        bool check_Defi = false;
        // create an instance definition in definition group MyParameters
        

        foreach (DefinitionGroup dg in myGroups)
        {
            if (dg.Name == "Matrixdata")
            {
                check_DefinitionGroup = true;
                myGroup = dg;
            }
        }

        if (check_DefinitionGroup == false)
        { 
            myGroup = myGroups.Create("Matrixdata");
        }
    
        Definitions My_Definitions = myGroup.Definitions;

        foreach (var Ele_Defin in My_Definitions)
        {
            if (Ele_Defin.Name == "Hạng mục")
            {
                check_Defi = true;
                Defin = Ele_Defin;
            }
        }

        if (check_Defi == false)
        {

            ExternalDefinitionCreationOptions option = new ExternalDefinitionCreationOptions("Hạng mục", ParameterType.Text);
           
            Defin = myGroup.Definitions.Create(option);
        }           
        // create a category set and insert category of wall to it

        //CategorySet mootj cai contains co the chua ca category khac
        CategorySet myCategories = app.Application.Create.NewCategorySet();

        // use BuiltInCategory to get category of wall


        myCategories.Insert(Pick_category);

        //Create an instance of InstanceBinding

        InstanceBinding instanceBinding = app.Application.Create.NewInstanceBinding(myCategories);

        // Get the BingdingMap of current document.

        BindingMap bindingMap = app.ActiveUIDocument.Document.ParameterBindings;

        //Bind the definitions to the document

        bindingMap.Insert(Defin, instanceBinding, BuiltInParameterGroup.PG_DATA);
        

    }
1 Like

Thanks bạn, đọc qua code của bạn mình nghỉ là sẽ chạy được.
cảm ơn bạn rất nhiều!