Returning CAD transformation settings
To return transformation settings to a CAD file, follow these steps:
-
Instantiate a CAD Workspace Factory.
-
Get the file workspace by accessing the directory that contains the CAD file.
-
Cast the IWorkspace interface to IFeatureWorkspace.
-
Get the feature classes present in the CAD file. In this example, the Point feature class is obtained from IFeatureWorkspace.
-
Cast the IFeatureLayer interface to the ICadTransformations interface.
-
Set the transformation mode using the TransformMode property. In this example, the mode is set to esriCadTransformByWorldFile.
-
Set the world file name for the CadLayer. World files are used to apply a common coordinate system and a common transformation to CAD files.
See the following code:
[C#]
// Set variables for the path and filename.
String nameOfPath = "C:\\data\\CAD";
String nameOfCADFile = "PARCELS.DWG";
//Instantiate a CADWorkspaceFactory.
ESRI.ArcGIS.Geodatabase.IWorkspaceFactory pWorkspaceFact = new
ESRI.ArcGIS.DataSourcesFile.CadWorkspaceFactory();
//Get the file's workspace.
ESRI.ArcGIS.Geodatabase.IWorkspace pWorkspace = pWorkspaceFact.OpenFromFile
(nameOfPath, 0);
//Get the feature's workspace.
ESRI.ArcGIS.Geodatabase.IFeatureWorkspace pFeatureWorkspace;
pFeatureWorkspace = (ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)pWorkspace;
//Open the Feature Class interface.
ESRI.ArcGIS.Geodatabase.IFeatureClass pFeatClass =
pFeatureWorkspace.OpenFeatureClass(System.String.Concat(nameOfCADFile, ":Point"))
;
//Get the CAD Feature Layer interface.
ESRI.ArcGIS.Carto.IFeatureLayer pFeatLayer = new ESRI.ArcGIS.Carto.CadFeatureLayer()
as ESRI.ArcGIS.Carto.IFeatureLayer;
pFeatLayer.FeatureClass = pFeatClass;
//Get the CadTransformations interface.
ESRI.ArcGIS.DataSourcesFile.ICadTransformations pCadTrans =
(ESRI.ArcGIS.DataSourcesFile.ICadTransformations)pFeatLayer;
//Enable transformations for CadLayer and print result.
pCadTrans.EnableTransformations = true;
Console.WriteLine("EnableTransformations = {0}", pCadTrans.EnableTransformations);
//Set the transform mode for CadLayer and print result.
pCadTrans.TransformMode =
ESRI.ArcGIS.DataSourcesFile.esriCadTransform.esriCadTransformByWorldFile;
Console.WriteLine("TransformMode = {0}", pCadTrans.TransformMode);
//Set the world file name for CadLayer and print result.
pCadTrans.WorldFileName = System.String.Concat(nameOfPath, "\\Parcels.wld");
Console.WriteLine("WorldFileName = {0} ", pCadTrans.WorldFileName);
[VB.NET]
'Set variables for filename and feature class.
Dim nameOfPath As String = "c:\\data\\CAD"
Dim nameOfCADFile As String = "PARCELS.DWG"
'This sample gets the CAD transformation settings.
'Instantiate a CADWorkspaceFactory.
Dim pWorkspaceFact As ESRI.ArcGIS.Geodatabase.IWorkspaceFactory = New ESRI.ArcGIS.DataSourcesFile.CadWorkspaceFactory()
'Get the file's workspace.
Dim pWorkspace As ESRI.ArcGIS.Geodatabase.IWorkspace = pWorkspaceFact.OpenFromFile(nameOfPath, 0)
'Get the feature's workspace.
Dim pFeatureWorkspace As ESRI.ArcGIS.Geodatabase.IFeatureWorkspace
pFeatureWorkspace = DirectCast(pWorkspace, ESRI.ArcGIS.Geodatabase.IFeatureWorkspace)
'Open the Feature Class interface.
Dim pFeatClass As ESRI.ArcGIS.Geodatabase.IFeatureClass = pFeatureWorkspace.OpenFeatureClass(System.String.Concat(nameOfCADFile, ":Point"))
'Get the CAD Feature Layer interface.
Dim pFeatLayer As ESRI.ArcGIS.Carto.IFeatureLayer = TryCast(New ESRI.ArcGIS.Carto.CadFeatureLayer(), ESRI.ArcGIS.Carto.IFeatureLayer)
pFeatLayer.FeatureClass = pFeatClass
'Get the CadTransformations interface.
Dim pCadTrans As ESRI.ArcGIS.DataSourcesFile.ICadTransformations = DirectCast(pFeatLayer, ESRI.ArcGIS.DataSourcesFile.ICadTransformations)
'Enable transformations for CadLayer and print result.
pCadTrans.EnableTransformations = True
Console.WriteLine("EnableTransformations = {0}", pCadTrans.EnableTransformations)
'Set the transform mode for CadLayer and print result.
pCadTrans.TransformMode = ESRI.ArcGIS.DataSourcesFile.esriCadTransform.esriCadTransformByWorldFile
Console.WriteLine("TransformMode = {0}", pCadTrans.TransformMode)
'Set the world file name for CadLayer and print result.
pCadTrans.WorldFileName = "c:\\data\\Parcels.wld"
Console.WriteLine("WorldFileName = {0} ", pCadTrans.WorldFileName)
To use the code in this topic, reference the following assemblies in your Visual Studio project. In the code files, you will need using (C#) or Imports (VB .NET) directives for the corresponding namespaces (given in parenthesis below if different from the assembly name):
ESRI.ArcGIS.System (ESRI.ArcGIS.esriSystem)ESRI.ArcGIS.Version (ESRI.ArcGIS)ESRI.ArcGIS.Carto ESRI.ArcGIS.DataSourcesFile ESRI.ArcGIS.Display ESRI.ArcGIS.Geodatabase
Development licensing | Deployment licensing |
---|---|
ArcGIS for Desktop Basic | ArcGIS for Desktop Basic |
ArcGIS for Desktop Standard | ArcGIS for Desktop Standard |
ArcGIS for Desktop Advanced | ArcGIS for Desktop Advanced |