Message 1 of 3
Layer Swap Error
Not applicable
01-27-2009
12:24 AM
- Mark as New
- Bookmark
- Subscribe
- Mute
- Subscribe to RSS Feed
- Permalink
- Report
Hi, all.
Below is the way to get error.
What do I have to check and fix it completely?
Thanks in advance.
How to Get Error
1.Create "SourceLayer" layer-------> Layer1
2.Create "TargetLayer" Layer-------> Layer2
3.Erase "SourceLayer" Layer
4.Create "SourceLayer" Layer
5.Excute Below Code
Then we can get "eDuplicateRecordName" error
6. Dim ltr As LayerTableRecord = tr.GetObject(lt.Item(Layer1), OpenMode.ForWrite, True, True)------> rewrite True to False
Then we can get "eWasErased" error
Shared Sub SwapLayers(ByVal Layer1 As String, ByVal Layer2 As String)
Using db As Database = HostApplicationServices.WorkingDatabase
Using tr As Transaction = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction
Using lt As LayerTable = tr.GetObject(db.LayerTableId, OpenMode.ForWrite, True, True)
lt.UpgradeOpen()
If lt.Has(Layer1) AndAlso lt.Has(Layer2) Then
Dim ltr As LayerTableRecord = tr.GetObject(lt.Item(Layer1), OpenMode.ForWrite, True, True)
Dim ltr2 As LayerTableRecord = tr.GetObject(lt.Item(Layer2), OpenMode.ForWrite, True, True)
ltr.Name = "SwapLayers_temp"
ltr2.Name = Layer1
ltr.Name = Layer2
tr.Commit()
Application.DocumentManager.MdiActiveDocument.Editor.Regen()
End If
End Using
End Using
End Using
End Sub
Below is the way to get error.
What do I have to check and fix it completely?
Thanks in advance.
How to Get Error
1.Create "SourceLayer" layer-------> Layer1
2.Create "TargetLayer" Layer-------> Layer2
3.Erase "SourceLayer" Layer
4.Create "SourceLayer" Layer
5.Excute Below Code
Then we can get "eDuplicateRecordName" error
6. Dim ltr As LayerTableRecord = tr.GetObject(lt.Item(Layer1), OpenMode.ForWrite, True, True)------> rewrite True to False
Then we can get "eWasErased" error
Shared Sub SwapLayers(ByVal Layer1 As String, ByVal Layer2 As String)
Using db As Database = HostApplicationServices.WorkingDatabase
Using tr As Transaction = HostApplicationServices.WorkingDatabase.TransactionManager.StartTransaction
Using lt As LayerTable = tr.GetObject(db.LayerTableId, OpenMode.ForWrite, True, True)
lt.UpgradeOpen()
If lt.Has(Layer1) AndAlso lt.Has(Layer2) Then
Dim ltr As LayerTableRecord = tr.GetObject(lt.Item(Layer1), OpenMode.ForWrite, True, True)
Dim ltr2 As LayerTableRecord = tr.GetObject(lt.Item(Layer2), OpenMode.ForWrite, True, True)
ltr.Name = "SwapLayers_temp"
ltr2.Name = Layer1
ltr.Name = Layer2
tr.Commit()
Application.DocumentManager.MdiActiveDocument.Editor.Regen()
End If
End Using
End Using
End Using
End Sub