Add an Annotation FeatureClass from a Personal Geodatabase to ArcMap with ArcObjects
Procedure
- Start ArcMap.
- Create a new UIButtonControl.
- Right-click the UIButtonControl and select View Source.
- Copy below code into the UIButtonControl's click event.
Dim strPathName As String
![]()
strPathName = "D:"temp"yellowstone.mdb" ' Replace with the name of your Personal Geodatabase
- Modify the value of strPathName to reflect the location of your Personal Geodatabase.
- Copy the code below into the UIButtonControl's click event, immediately after the code you entered in Step 4.
Dim strData As String
![]()
strData = "AnnoRoad" ' Replace with the name of your annotation FeatureClass
- Modify the value of strData to point to the annotation Feature Class in your Personal Geodatabase.
- Copy the code below into the UIButtonControl's click event, immediately after the code you entered in Step 6.
' Set up the WorkspaceFactory
![]()
Dim pWorkspaceName As IWorkspaceName
Set pWorkspaceName = New WorkspaceName
![]()
pWorkspaceName.WorkspaceFactoryProgID = "esricore.AccessWorkspaceFactory"
pWorkspaceName.PathName = strPathName
![]()
![]()
Dim pDatasetName As IDatasetName
Set pDatasetName = New FeatureClassName
![]()
pDatasetName.Name = strData
![]()
Set pDatasetName.WorkspaceName = pWorkspaceName
![]()
![]()
' Use a lightweight Name object to open the table.
![]()
Dim pName As IName
Set pName = pDatasetName ' QI
![]()
Dim pTable As ITable
Set pTable = pName.Open
![]()
Dim pFeatClass As IDataset
Set pFeatClass = ptable
![]()
Dim pFeatLay As IFeatureLayer
![]()
'IFDOGraphicsLayerFactory::OpenGraphicsLayer IS THE KEY to accessing the data!
![]()
Dim pFDOGraphicsLayerFactory As IFDOGraphicsLayerFactory
Set pFDOGraphicsLayerFactory = New FDOGraphicsLayerFactory
![]()
![]()
'*****************************************
![]()
' Modify this line of code
![]()
Set pFeatLay = pFDOGraphicsLayerFactory.OpenGraphicsLayer(pfeatclass.Workspace, Nothing, "AnnoRoad")
![]()
'*****************************************
![]()
'Assign the name in the Table of Contents
pFeatLay.Name = pFeatClass.Name
![]()
' Add the annotation to ArcMap
![]()
Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument
![]()
Dim pMap As IMap
Set pMap = pMxDoc.ActiveView
![]()
pMap.AddLayer pFeatLay
![]()
Dim pAV As IActiveView
Set pAV = pMap
![]()
pAV.Refresh
- Modify the third argument passed to the OpenGraphicsLayer method to point to the input annotation Feature Class.
- Test the code.
-----------------------------------------------------------
佛对我说:你心里有尘。我用力的拭擦。

浙公网安备 33010602011771号