RUS  ENG 

преобразование типового элемента

Страницы: 1
RSS
преобразование типового элемента
 
Здравствуйте.
Подскажите, пожалуйста, как преобразовать типовой элемент (символьный, площадной, линию) в примитив. Есть участок кода:
Код
var
   el:IElement;
begin
.......
key := Layer.CurrentID;
el := Layer.Elements.GetElement(key);
if el.Key = -1 then exit;
//Преобразование в примитив с сохранением прежнего изображения
el.ChangeTypeMode(-1,-1); //не срабатывает - элемент сохраняет свой прежний тип и режим
.......
//а так работает, получаем новое отображение элемента с key
Type_ID := 2; Mode_ID = 1;
el.ChangeTypeMode(Type_ID,Mode_ID);
Подскажите, может быть существует другой метод?
 
https://politerm.com/zuludoc/index.html#zuluax/Layer_ConvertTypeToPrimitive.html
 
Здравствуйте, Алексей.
Метод, что вы подсказали, не работает по крайней мере в коде:
Код
var
   el:IElement;
   bres:Boolean;
begin
.......
key := Layer.CurrentID;
el := Layer.Elements.GetElement(key);
if el.Key = -1 then exit;

//Преобразование в примитив с сохранением прежнего изображения стиля el.ElemStyle и графического типа el.GraphType 
bres := Layer.ConvertTypeToPrimitive(key,el.ElemStyle,el.GraphType); //возвращает всегда FALSE

if bres then
begin
...
end;
Что не так?
Изменено: Kostya_LeoG - 15.12.2017 12:09:37
 
Как минимум, преобразуете один графический тип в другой, а в качестве другого указываете тот же самый.

https://politerm.com/zuludoc/index.html#zuluax/eElemGraphType_enum.html
 
Теперь преобразует в примитив, но этот примитивы выглядят не так как были исходные элементы: символ - как точка, полилиния - как линия с графическим обозначением типом линии из набора взятой по умолчанию...
Код
case el.GraphType of
             eGraphTypeTypedPolyline: grType := eGraphTypePrimPolyline; // 0 => 4  Типовой ломаная
             eGraphTypeTypedSquare:grType := eGraphTypePrimSquare;      //1 => 5  Типовой площадной
             eGraphTypeTypedSymbol:grType := eGraphTypePrimSymbol;      //2 => 3 Типовой символ
             else grType := -1;
         end;
         if grType >= 0 then
         begin
           bres := Layer.ConvertTypeToPrimitive(key,el.ElemStyle,grType);
           if bres then zMapMain.Redraw();
         end;
 
Исходные типовые элементы берут стиль у стиля режима. От туда его и надо взять для примитива.
Страницы: 1