ADN Club > Revit API

Параметры в спецификации

<< < (7/8) > >>

Виктор Чекалин:
Прямо мистика какая то.

Последнее что еще могу предложить, выполните простую команду, в которой не производится больше никаких действий, кроме как обновление параметра:

--- Код - C# [Выбрать] ---        public Result Execute(          ExternalCommandData commandData,          ref string message,          ElementSet elements)        {            UIApplication uiapp = commandData.Application;            UIDocument uidoc = uiapp.ActiveUIDocument;            Application app = uiapp.Application;            Document doc = uidoc.Document;             FilteredElementCollector filteredElementCollectorWall = new FilteredElementCollector(doc);            var wall = filteredElementCollectorWall.OfClass(typeof(Wall)).FirstElement() as Wall;            Parameter widthParam = wall.get_Parameter("Ширина2");            double widthValue = widthParam.AsDouble();            Parameter heightParam = wall.get_Parameter("Длина2");            double heightValue = heightParam.AsDouble();            double areaValue = widthValue * heightValue;            using (Transaction t = new Transaction(doc, "Обновление параметра"))            {                t.Start();                var res = wall.get_Parameter("Площадь_стены2").Set(areaValue);                t.Commit();                 TaskDialog.Show("Запись значения в параметр", res.ToString());            }                         return Result.Succeeded;        }
Также после выполнения команды вышлите мне файл журнала.
Он находится в папке C:\Users\<username>\AppData\Local\Autodesk\Revit\<Ваша версия ревит>\Journals. Мне нужен текстовый файл вида journal.XXXX.txt, где XXXX самый последний порядковый номер.

Есть ли у вас возможность проверить выполнение команды на другой версии Revit или еще лучше на другом компьютере?

Alexander:
Код возвратил true.
Также я вставил TaskDialog в свой проект и он тоже возвратил true. Но в параметр ответ не записывает(в моём проекте).

Виктор Чекалин:

--- Цитата: Alexander от 10-12-2013, 15:08:23 ---Код возвратил true.

--- Конец цитаты ---
Параметр при этом изменился в интерфейсе? Если в вашем не изменился, то изменился ли в моем простеньком проекте?

Alexander:
В моём нет,пустое поле.
В вашем да. 0 или больше, если увеличить ширину и длину.

В моём проекте несколько стен,у каждой Ширина2 = 5, Длина2= 6.

Так же , если я открываю другие проекты(примеры Ревит), и присваиваю такие же параметры для стен, то и там параметр не меняется в интерфейсе.

Виктор Чекалин:

--- Цитата: Alexander от 10-12-2013, 15:28:52 ---В моём проекте несколько стен,у каждой Ширина2 = 5, Длина2= 6.

Так же , если я открываю другие проекты(примеры Ревит), и присваиваю такие же параметры для стен, то и там параметр не меняется в интерфейсе.

--- Конец цитаты ---

Так ведь код то меняет значение площади только для одной, первой попавшейся стены, а не у всех стен. А вы в интерфейсе выбираете скорее всего другую стену, не ту у которой меняли параметр.

Чтобы изменить параметр у всех стен вам нужен вот такой код:

--- Код - C# [Выбрать] ---             FilteredElementCollector filteredElementCollectorWall = new FilteredElementCollector(doc);            var walls = filteredElementCollectorWall.OfClass(typeof(Wall));            using (Transaction t = new Transaction(doc, "Обновление параметра"))            {                t.Start();                 foreach (Wall wall in walls)                {                    Parameter widthParam = wall.get_Parameter("Ширина2");                    double widthValue = widthParam.AsDouble();                    Parameter heightParam = wall.get_Parameter("Длина2");                    double heightValue = heightParam.AsDouble();                    double areaValue = widthValue * heightValue;                                        var res = wall.get_Parameter("Площадь_стены2").Set(areaValue);                                        Debug.Print("Стена: {0}; Результат: {1}", wall.Id, res);                }                 t.Commit();            }

Навигация

[0] Главная страница сообщений

[#] Следующая страница

[*] Предыдущая страница

Перейти к полной версии