0

我从表单实例调用 Revit 类没有任何问题。当我尝试将一个列表分配给 Revit 类的函数 categoryList() 时,我得到一个变量不存在于上下文错误中。我尝试为表单类“Form UF = new Form;”的实例的引用添加前缀 这行不通。

    //The Revit Class

    public Result Execute(ExternalCommandData commandData, ref string message,....)
    {
        User_Form UF = new User_Form(commandData);
        UF.ShowDialog();


    public List<BuiltInCategory> categoryList(Document doc, int intSwitch)
    {
        //list built in categories for built in filter_1
        builtInCats_List = new List<BuiltInCategory>();

        switch (intSwitch)
        {
            case (1):
            ...
            case (3):
            ...             
            case (4):
                {
                    builtInCats_List = newStateCb1;
                    return builtInCats_List;
                }
            default:
                {
                    builtInCats_List = newStateCb1;
                    return builtInCats_List;
                }
        }
    }



   using Form = System.Windows.Forms.Form;
   using WS = ModelAuditor_2014.WorksetSorter_2014;
   using ModelAuditor_2014;
   using System.Threading;









   //The Form
   namespace ModelAuditor_2014
    {
   public partial class User_Form : Form
     {

        //Constructor
       WorksetSorter_2014 WS = new WorksetSorter_2014();

    //Revit references
        public Autodesk.Revit.UI.UIApplication rvtUiApp;
        public Autodesk.Revit.UI.UIDocument rvtUiDoc;
        public Autodesk.Revit.ApplicationServices.Application rvtApp;



    //Global Variables
    public List<BuiltInCategory> Filter01_CategoryList;
    public List<BuiltInCategory> Filter02_CategoryList;
    public int intSwitch;
    public List<BuiltInCategory> newStateCb1;




    public User_Form(ExternalCommandData commandData)
    {
        //Revit references
        rvtUiApp = commandData.Application;
        rvtUiDoc = rvtUiApp.ActiveUIDocument;
        rvtApp = rvtUiApp.Application;
        InitializeComponent();
    }


    public void User_Form_Load(object sender, EventArgs e)
    {
        //use rvtDoc = Doc
        Autodesk.Revit.DB.Document rvtDoc = .....                         

        //CheckedListBox for filter01
        checkedListBox1.DataSource = WS.categoryList(rvtDoc, intSwitch = 1);

        Filter01_CategoryList = new List<BuiltInCategory>();
        Filter01_CategoryList = WS.RetrieveSchema(rvtDoc, false);


        foreach (BuiltInCategory ChkedB1 in Filter01_CategoryList)
       {
           for (int i = 0; i < checkedListBox1.Items.Count; i++)
            {
                if (checkedListBox1.Items[i].ToString() == ChkedB1.ToString())
                 {
                     checkedListBox1.SetItemChecked(i, true);
                 }
             }
          }



        public List<BuiltInCategory> returnNewStateCB1()
          {
        newStateCb1 = checkedListBox1.CheckedItems.Cast
        <BuiltInCategory>().ToList<BuiltInCategory>();

        return newStateCb1;
          }
4

1 回答 1

0

我将列表从 win 表单传递到 revit 应用程序中的另一个公共函数,我能够访问此函数返回的列表。

于 2014-05-27T00:58:05.183 回答