RUS  ENG 

Станислав Павловицкий (Все сообщения пользователя)

Выбрать дату в календареВыбрать дату в календаре

Страницы: 1
Создание слоя по данным из текстового файла локально и на сервере
 
Здравствуйте!
Пытаюсь создать слой локально
Не меняется режим и тип полилинии.

Написал метод, который добавляет к слою полилинию
[CODE]public static void AddPipeToLayer(double xStartCoodinate, double yStartCoordinate,
           double xEndCoodinate, double yEndCoordinate, Layer zuluLayer)
       {
           //Создаю полилинию
           var elemStyle = new ElemStyle();
           elemStyle.PatColor = 1;
           var oPolyline = new PolyLine();
           oPolyline.AddPoint(xStartCoodinate, yStartCoordinate);
           oPolyline.AddPoint(xEndCoodinate, yEndCoordinate);

           int plId = zuluLayer.AddPolyLine(oPolyline, elemStyle, 8, 1);

           //Добавляю полилинию к слою
           Element plElement = zuluLayer.Elements[plId];

           //Режим и тип не меняется
           bool isChanged = plElement.ChangeTypeMode(8, 1);

       }
[/CODE]Хочу выставить режим 8 и тип 1, а графический тип - участок.


Полилинии создаются, но режим и тип не присваиваются.
Графический тип: Простая полилиния
Тип: -1
Режим: -1


В поиске по данному форуму говорилось о том, что чтобы изменить тип и режим, надо создавать файл слоя на сервере.
Попробовал создавать его на сервере.

При добавлении полилинии к слою появляется ошибка.
[B]System.AccessViolationException: 'Попытка чтения или записи в защищенную память. Это часто свидетельствует о том, что другая память повреждена.'[/B]
Изменено: Станислав Павловицкий - 27.09.2019 16:31:59
Не возвращается значение от IZbDataset.FieldDisplayValue[i]
 
[QUOTE]Станислав Павловицкий написал:
Здравствуйте!
Пишу WPF-приложение на C# для вывода данных из Zulu в текстовый файл.
Подключил библиотеки ZB и ZuluLib для 8-ой версии.

Хочу получить все данные по определённому элементу. Название поля выводит, но вместо значения - пустая строка.
Привожу код
[CODE] public static Dictionary<string, string> GetAllTheValues(this Element oElement, Layer oLayer)
       {
           //создаём словарь для занесения названия поля и значения
           var definitionAndValueDict = new Dictionary<string, string>();
           var db = new ZbDatabase();
           bool isDbOpen = db.Open(oLayer.ObjectTypes.GetItemByIndex(oElement.TypeID).BaseName);
           var dataSet = db.SelectByKey(oElement.Key);
           dataSet.MoveFirst();
           for (int fieldIndex = 0; fieldIndex < dataSet.FieldCount; fieldIndex++)
           {
               //здесь возвращает название поля, например, "Наименование"
               var fieldName = dataSet.GetFieldInfo(fieldIndex).UserName;
               //а здесь вместо значения - пустая строка ("")
               var fieldDisplayValue = dataSet.FieldDisplayValue[fieldIndex];
               definitionAndValueDict.Add(fieldName, fieldDisplayValue);
           }
           return definitionAndValueDict;
       } [/CODE][/QUOTE]
Спасибо, всё заработало :)
Никак не мог найти метод Item, оказывается нужно обращаться к нему через квадратные скобки.[CODE]db.Open(oLayer.ObjectTypes[oElement.TypeID].BaseName);
[/CODE]
Не возвращается значение от IZbDataset.FieldDisplayValue[i]
 
Здравствуйте!
Пишу WPF-приложение на C# для вывода данных из Zulu в текстовый файл.
Подключил библиотеки ZB и ZuluLib для 8-ой версии.

Хочу получить все данные по определённому элементу. Название поля выводит, но вместо значения - пустая строка.
Привожу код
[CODE]public static Dictionary<string, string> GetAllTheValues(this Element oElement, Layer oLayer)
       {
           //создаём словарь для занесения названия поля и значения
           var definitionAndValueDict = new Dictionary<string, string>();
           var db = new ZbDatabase();
           bool isDbOpen = db.Open(oLayer.ObjectTypes.GetItemByIndex(oElement.TypeID).BaseName);
           var dataSet = db.SelectByKey(oElement.Key);
           dataSet.MoveFirst();
           for (int fieldIndex = 0; fieldIndex < dataSet.FieldCount; fieldIndex++)
           {
               //здесь возвращает название поля, например, "Наименование"
               var fieldName = dataSet.GetFieldInfo(fieldIndex).UserName;
               //а здесь вместо значения - пустая строка ("")
               var fieldDisplayValue = dataSet.FieldDisplayValue[fieldIndex];
               definitionAndValueDict.Add(fieldName, fieldDisplayValue);
           }
           return definitionAndValueDict;
       }[/CODE]
Страницы: 1