DisplayManagement.Element has two properties to describe the data source for the element:
- AcquisitionCriteriaString
- AcquisitionCriteria
AcquisitionCriteriaString contains a string representation of the data source, as described in the following table:
Element type | AcquisitionCriteriaString value |
---|---|
LayerElement | AutoCAD layer name |
FeatureElement | Object classification class name |
TopologyElement | Topology name |
AttachedDwgsQueryElement | |
TopologyQueryElement |
AcquisitionCriteria is of type DisplayManagement.DataSourceDescriptor. It contains additional data about the source. Each element type has a corresponding data source descriptor type, subclassed from DataSourceDescriptor. For example, the AcquisitionCriteria property for a LayerElement is of type LayerDataSourceDescriptor.
For LayerElement, FeatureElement, and TopologyElement, AcquisitionCriteria.AcquisitionStatement is the same as AcquisitionCriteriaString. AttachedDwgsQueryDataSourceDescriptor and TopologyQueryDataSourceDescriptor define additional methods and properties, as described in the following table.
Method or property | Description |
---|---|
GetDrawingList() | Gets the list of attached drawings used in the query |
SetDrawingList() | Sets the list of attached drawings used in the query |
Query | A result buffer containing the query definition, from the QueryModel.FileOut property |
TopologyName | For TopologyQueryDataSourceDescriptor only, the topology name used in the query |
To add a new element, create the element and its associated data source descriptor, then add it to the map. The following example adds a LayerElement that references an AutoCAD layer named “Layer1”. For other element types, create the appropriate data source descriptor.
Dim activeProject As Project.ProjectModel = _
HostMapApplicationServices.Application.ActiveProject
Dim docs As DocumentCollection = Application.DocumentManager
Dim activeDoc As Document = docs.MdiActiveDocument
Dim trans As Transaction = Nothing
Try
trans = activeDoc.TransactionManager.StartTransaction()
' Get the Object Id for the current Map
Dim managerId As ObjectId
managerId = _
DisplayManager.Create(activeProject).MapManagerId( _
activeProject, True)
Dim manager As MapManager = trans.GetObject(managerId, _
OpenMode.ForRead)
Dim currentMapId = manager.CurrentMapId
Dim currentMap As Map = trans.GetObject(currentMapId, _
OpenMode.ForWrite)
' Create the Layer element and set its
name
Dim element As LayerElement = LayerElement.Create()
element.Name = "NewLayer"
' Create the Layer Descriptor
Dim descriptor As LayerDataSourceDescriptor = Nothing
descriptor = LayerDataSourceDescriptor.Create()
descriptor.AcquisitionStatement = "Layer1"
' Now Add the new element to the current
Map
Dim iterator As IEnumerator = _
currentMap.NewIterator(True, True)
Dim elementId As ObjectId = _
currentMap.AddItem(element, iterator)
trans.AddNewlyCreatedDBObject(element, True)
element = trans.GetObject(elementId, OpenMode.ForWrite)
element.AcquisitionCriteria = descriptor
trans.Commit()
trans = Nothing
Catch e As Autodesk.AutoCAD.Runtime.Exception
' Handle exception
Finally
If Not trans Is Nothing Then
trans.Abort()
trans = Nothing
End If
End Try