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.
interop.CimServicesAPI
Cimatron 2024 or later
Get |
double[] |
|
Get |
double[] |
void |
( double, double, double ) |
|
void |
( double, double, double ) |
|
void |
( double, double, double, double ) |
|
void |
( ) |
None
Transformation data relates to the main UCS.
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