//find duct object in project
DMObjectsFinder oFinder = new DMObjectsFinder(oProject);
Duct oDuct = oFinder.GetFunctions3D(null).OfType<Duct>().First();
//get all drilling objects from duct
Drilling[] arrDrillings = new Placement3DService().GetDrillingsFromDrillingPattern(oDuct);
foreach (Drilling oDrilling in arrDrillings)
{
Console.WriteLine("------- Drilling -------");
//write the relative position on parent
Console.WriteLine(
String.Format(
"Relative position: ({0}, {1}, {2})",
oDrilling.RelativeTransformation.OffsetX,
oDrilling.RelativeTransformation.OffsetY,
oDrilling.RelativeTransformation.OffsetZ));
//write the type of drilling
Console.WriteLine(
String.Format(
"Type of drilling: {0}",
oDrilling.FunctionDefinition.Id));
}