こちらの続きです。
指定した平面から、穴の中心点を作成する1 - C#ATIA
C#化です。
まずは、いつも通りのCATIAの主要なオブジェクトを維持しておく
CatiaContainerクラスです。 何とか標準化したいところです。
//cs class CatiaContainer { public CatiaContainer(INFITF.Application cat) { Catia = cat; Setting(); } public void Setting() { PartDoc = Catia.ActiveDocument as PartDocument; Selection = PartDoc.Selection; Part = PartDoc.Part; HybridShapeFactory = Part.HybridShapeFactory as HybridShapeFactory; } public INFITF.Application Catia { get; set; } public Selection Selection { get; private set; } public PartDocument PartDoc { get; private set; } public Part Part { get; private set; } public HybridShapeFactory HybridShapeFactory { get; private set; } public HybridBody HybridBody { get; set; } }
続いて拡張メソッドを維持するCatExtensionクラスです。
//cs static class CatExtension { public static IEnumerable<T> AsEnumerable<T>(this INFITF.Selection sel) {//① if (sel.Count2 < 1) { yield break; } for (int i = 1; i <= sel.Count2; i++) { yield return (T)sel.Item2(i).Value; } } public static Reference AsReference(this AnyObject Any) {//② return CatHelper.State.Part.CreateReferenceFromObject(Any); } }
①:こちらでは
CATIAのコレクションクラスで、お手軽にLinqを使いたい - C#ATIA
"ToEnumerable
"AsEnumerable
又、前回はコレクションクラス用でしたが、Selection用にしました。
②:今回は頻繁にReference化の必要があるため用意しました。
残りの部分は次回以降にしたいと思います。