IModelTransformation

Use this interface to get and set transformation data for objects that support transformation. For example, UCS's, planes, assembly instances, sketcher objects, display figures.

Namespace

interop.CimServicesAPI

Compatibility

Cimatron 2024 or later

Properties

Get

Vector

double[]

Get

Matrix

double[]

Methods

void

Move

( double, double, double )

void

ScaleFactor

( double, double, double )

void

Rotate

( double, double, double, double )

void

Inverse

( )

Events

None 

Remarks

Transformation data relates to the main UCS. 

Example

string assemblyFile = @"C:\Ganesh\Cimatron\Feat-0255223_4_4 -API_DOC_HelpUpdate_Model\IModelTranformation Testing\Assembly3.elt";
string aPartFile = @"C:\Ganesh\Cimatron\Feat-0255223_4_4 -API_DOC_HelpUpdate_Model\IModelTranformation Testing\Part4.elt";
interop.CimatronE.IApplication CimApp = null;
interop.CimAppAccess.AppAccess CimAppAcc = new interop.CimAppAccess.AppAccess();
while (CimApp == null)
{
CimApp = (interop.CimatronE.IApplication)CimAppAcc.GetApplication();
}
interop.CimatronE.IPdm pdm = CimApp.GetPdm();
var aCimDocument = pdm.OpenDocument(assemblyFile);
interop.CimBaseAPI.ICimDocument aDOC = (interop.CimBaseAPI.ICimDocument)CimApp.GetActiveDoc();
interop.CimMdlrAPI.IModelContainer aModelCont = (interop.CimMdlrAPI.IModelContainer)aDOC;
interop.CimMdlrAPI.AssemblyModel aAssemblyMode = (interop.CimMdlrAPI.AssemblyModel)aModelCont.Model;
var aModel = pdm.GetModel(aPartFile);
interop.CimMdlrAPI.IModel partFileModel = aModel as interop.CimMdlrAPI.IModel;
interop.CimMdlrAPI.IMdProcedure aBaseProc = (interop.CimMdlrAPI.IMdProcedure)aAssemblyMode.CreateProcedure(interop.CimMdlrAPI.AssProcedureType.cmAddProcedure);
interop.CimMdlrAPI.IAddModel aAddProc = (interop.CimMdlrAPI.IAddModel)aBaseProc;
aAddProc.AddModel = partFileModel;
List<double> aPosition = new List<double>();
aPosition.Add(0); aPosition.Add(0); aPosition.Add(0);
aAddProc.Position = aPosition.ToArray();
// Apply your transformation
interop.CimMdlrAPI.IModelTransformation aOrgTran = aAddProc.Transformation;
interop.CimMdlrAPI.ModelTransformation aTrans = aOrgTran as interop.CimMdlrAPI.ModelTransformation;
double[] aMatrix1 = (double[])aTrans.Matrix;
double[] aVector1 = (double[])aTrans.Vector;
aTrans.Move(300, 300, 0);
aTrans.Rotate(90, 0, 0, 1);
aTrans.Inverse();
aTrans.ScaleFactor(2, 2, 2);
aAddProc.Transformation = aTrans;
aBaseProc.Execute();

interop.CimMdlrAPI.ICimEntityList aList = aAssemblyMode.ModelProcedures;
int aNo = 2;
interop.CimMdlrAPI.IMdProcedure aProc1 = (interop.CimMdlrAPI.IMdProcedure)aList[aNo];
interop.CimMdlrAPI.IAddModel aAddModelProc = aProc1 as interop.CimMdlrAPI.IAddModel;
interop.CimMdlrAPI.IModelTransformation aOrgTran1 = aAddModelProc.Transformation;
interop.CimMdlrAPI.ModelTransformation aTransformation = aOrgTran1 as interop.CimMdlrAPI.ModelTransformation;
double[] aMatrix = (double[])aTransformation.Matrix;
double[] aVector = (double[])aTransformation.Vector;

import clr
clr.AddReference("interop.CimAppAccess")
clr.AddReference("interop.CimatronE")
clr.AddReference("interop.CimServicesAPI")
clr.AddReference("interop.CimBaseAPI")
clr.AddReference("interop.CimMdlrAPI")
clr.AddReference("interop.CimNcAPI")
import interop.CimAppAccess
import interop.CimatronE
import interop.CimServicesAPI
import interop.CimBaseAPI
import interop.CimMdlrAPI
import interop.CimNcAPI
import System

assemblyFile = r'C:\Ganesh\Cimatron\Feat-0255223_4_4 -API_DOC_HelpUpdate_Model\IModelTranformation Testing\Assembly3.elt'
aPartFile = r'C:\Ganesh\Cimatron\Feat-0255223_4_4 -API_DOC_HelpUpdate_Model\IModelTranformation Testing\Part4.elt'

CimApp = None
CimAppAcc = interop.CimAppAccess.AppAccess()
while CimApp is None :
CimApp = interop.CimatronE.IApplication(CimAppAcc.GetApplication())

pdm = CimApp.GetPdm()
aCimDocument = pdm.OpenDocument(assemblyFile)
aDOC = interop.CimBaseAPI.ICimDocument(CimApp.GetActiveDoc())
aModelCont = interop.CimMdlrAPI.IModelContainer(aDOC)
aAssemblyModel = interop.CimMdlrAPI.AssemblyModel(aModelCont.Model)
aModel = pdm.GetModel(aPartFile)
partFileModel = interop.CimMdlrAPI.IModel(aModel)

aBaseProc = interop.CimMdlrAPI.IMdProcedure(aAssemblyModel.CreateProcedure(interop.CimMdlrAPI.AssProcedureType.cmAddProcedure))
aAddProc = interop.CimMdlrAPI.IAddModel(aBaseProc)
aAddProc.AddModel = partFileModel

aPosition = System.Array[System.Double](3)
aPosition[0] = 0
aPosition[1] = 0
aPosition[2] = 0
aAddProc.Position = aPosition

# Apply your transformation
aOrgTran = aAddProc.Transformation
aTrans = interop.CimMdlrAPI.ModelTransformation(aOrgTran)
aMatrix1 = aTrans.Matrix
aVector1 = aTrans.Vector
aTrans.Move(300, 300, 0)
aTrans.Rotate(90, 0, 0, 1)
aTrans.Inverse()
aTrans.ScaleFactor(2, 2, 2)
aAddProc.Transformation = aTrans
aBaseProc.Execute()

aList = aAssemblyModel.ModelProcedures
aNo = 2
aProc1 = aList[aNo]
aAddModelProc = interop.CimMdlrAPI.IAddModel(aProc1)
aOrgTran1 = aAddModelProc.Transformation
aTransformation = interop.CimMdlrAPI.ModelTransformation(aOrgTran1)
aMatrix = aTransformation.Matrix
aVector = aTransformation.Vector