var handle = new HandleMate();
handle.Create(new MultiLangString(), new Matrix3D());
oFunction3D.AddMatePersistent(handle);
//create a handle relative to placement area
var transformationToPlacementArea = new Matrix3D();
transformationToPlacementArea.Translate(new Vector3D(50.0, 500.0, 0.0));
var transformation = transformationToPlacementArea * oFunction3D.PlacementArea.RelativeTransformation;
var handle2 = new HandleMate();
handle2.Create(new MultiLangString(), transformation);
oFunction3D.AddMatePersistent(handle2);
//create a handle with extended logic
var handleWithExtendedLogic = new HandleMate();
handleWithExtendedLogic.Create(new[] { "V1", "V2" }, new MultiLangString(), new Matrix3D());
oFunction3D.AddMatePersistent(handleWithExtendedLogic);