RUS  ENG 

Преобразование типа объекта

Страницы: 1
RSS
Преобразование типа объекта
 
Здравствуйте.
Подскажите пожалуйста как все объекты слоя различных типов (контуры, линии, полилинии) преобразовать к типу "Символ" с сохранением существующего IDобъекта.
 
Так не преобразовать. Можно удалить, добавить новый и установить ему старый ID
Примерно так:
DeleteElement(oldElemID)
newElemID = AddSimpleSymbol(X, Y, 0, SymbolID, 100, 1)
ChangeElemID(newElemID, oldElemID, FALSE)
А X,Y символа самим определить нужно
 
Сработает ли такой код: (в слое только полилинии и контуры)
Private Sub Command3_Click()

Dim elem As Element
Dim elems As Elements
Dim k As Double
Dim Xcoord As Double
Dim Ycoord As Double
Dim oldElemID As Long
Dim newElemID As Long
Set elems = MapCtrl1.Map.Layers.Active.Elements
Set elem = elems.FirstItem
Do
If elem.GraphType = eGraphTypePrimSquare Then
k = elem.Contour.NumTops
Xcoord = 0
Ycoord = 0
For j = 1 To k
Xcoord = Xcoord + elem.Contour.GetX(j)
Ycoord = Ycoord + elem.Contour.GetY(j)
Next j
Xcoord = Xcoord / (k)
Ycoord = Ycoord / (k)
oldElemID = elem.key
DeleteElement(oldElemID)
newElemID = AddSimpleSymbol(Xcoord, Ycoord, 0, 1, 100, 1)
ChangeElemID(newElemID, oldElemID, FALSE)
Else
If elem.GraphType = eGraphTypePrimPolyline Then
k = elem.PolyLine.NumTops
Xcoord = 0
Ycoord = 0
For j = 1 To k
Xcoord = Xcoord + elem.PolyLine.GetX(j)
Ycoord = Ycoord + elem.PolyLine.GetY(j)
Next j
Xcoord = Xcoord / (k)
Ycoord = Ycoord / (k)
oldElemID = elem.key
DeleteElement(oldElemID)
newElemID = AddSimpleSymbol(Xcoord, Ycoord, 0, 1, 100, 1)
ChangeElemID(newElemID, oldElemID, FALSE)
End If
End If
Set elem = elems.NextItem
If elem.Key = -1 Then Exit Do
Loop
MsgBox "Преобразование закончено", vbInformation
End Sub

Код на основе примера про "Экспорт".
 
Не знаю. Попробуйте. Если что-то не сработает, спросите конкретно.
Страницы: 1