public TransCAD.IFeature GetFeatureFromReference(TransCAD.Reference reference) { // Reference 형식으로 저장 된 특징형상을 Feature 형식으로 리턴 if (!isSubAssemblyPart) { IEnumerator tFeatureList = tFeatures.GetEnumerator(); while (tFeatureList.MoveNext()) { TransCAD.IFeature tFeature = (TransCAD.IFeature)tFeatureList.Current; if (tFeature.Name == reference.ReferenceeName) { return(tFeature); } } } else { tFeatures = tAssemDoc.Assem.Component[0].Part[partNum + 1].Features; for (int i = 1; i < tFeatures.Count; i++) { TransCAD.IFeature tFeature = (TransCAD.IFeature)tFeatures[i]; if (tFeature.Name == reference.ReferenceeName) { return(tFeature); } } } return(null); }
public void UninitializeTransCAD() { tApp = null; tDocs = null; tPartDoc = null; tPart = null; tAssemDoc = null; tFeatures = null; }
//// //// TransCAD 관련 함수 public bool InitializeTransCAD(int mode) { try { tApp = (TransCAD.Application)Marshal.GetActiveObject("TransCAD.Application"); } catch { tApp = (TransCAD.Application)Activator.CreateInstance(Type.GetTypeFromProgID("TransCAD.Application")); } if (tApp == null) { return(false); } tDocs = tApp.Documents; if (mode == 0) //pre일때 사용 PartDocument 추가 { tPartDoc = tDocs.AddPartDocument(); } else if (mode == 1) //post일때 사용 이미 열려있는 것을 Active { tPartDoc = (TransCAD.PartDocument)tApp.ActiveDocument; } else if (mode == 2) //Assembly document에서 part 번역을 위한 initialization { tAssemDoc = (TransCAD.AssemDocument)tApp.ActiveDocument; isSubAssemblyPart = true; return(true); } tApp.Visible = true; tPart = tPartDoc.Part; tFeatures = tPart.Features; if (ReferenceManager == null) { ReferenceManager = new Reference(this); } //tAssemDoc.Update(); return(true); }
public void TranslateT2C(TransCAD.IPart tPart) { //IEnumerator tFeatureList = tPart.Features.GetEnumerator(); TransCAD.Features tFeatures = tPart.Features; //TransCAD.IFeature tFeature = (TransCAD.IFeature)tFeatureList.Current; for (int i = 1; i <= tFeatures.Count; i++) { TransCAD.IFeature tFeature = (TransCAD.IFeature)tFeatures[i]; try { Feature pFeature = null; if (tFeature.Type == TransCAD.FeatureType.StdSolidProtrusionExtrudeFeature) { pFeature = new FeaturePad(this); } else if (tFeature.Type == TransCAD.FeatureType.StdSolidCutExtrudeFeature) { pFeature = new FeaturePocket(this); } else if (tFeature.Type == TransCAD.FeatureType.StdSolidFilletConstantFeature) { pFeature = new FeatureEdgeFillet(this); } else if (tFeature.Type == TransCAD.FeatureType.StdSolidProtrusionSweepFeature) { pFeature = new FeatureRib(this); } else if (tFeature.Type == TransCAD.FeatureType.StdSolidCutSweepFeature) { pFeature = new FeatureSlot(this); } else if (tFeature.Type == TransCAD.FeatureType.StdSolidProtrusionRevolveFeature) { pFeature = new FeatureShaft(this); } else if (tFeature.Type == TransCAD.FeatureType.StdSolidChamferFeature) { pFeature = new FeatureChamfer(this); } else if (tFeature.Type == TransCAD.FeatureType.StdSolidCutRevolveFeature) { pFeature = new FeatureGroove(this); } else if (tFeature.Type == TransCAD.FeatureType.StdSolidOperatePatternRectangularFeature) { pFeature = new FeatureRectPattern(this); } else if (tFeature.Type == TransCAD.FeatureType.StdSolidOperatePatternCircularFeature) { pFeature = new FeatureCircPattern(this); } else if (tFeature.Type == TransCAD.FeatureType.StdSolidHoleCounterboredFeature || tFeature.Type == TransCAD.FeatureType.StdSolidHoleCountersunkFeature || tFeature.Type == TransCAD.FeatureType.StdSolidHoleSimpleFeature) { pFeature = new FeatureHole(this); } if (pFeature != null) { pFeature.TranslateT2C(tFeature); } } catch (Exception e) { MessageBox.Show("-Feature Name: " + tFeature.Name + "\n-Error Message: " + e.Message, "Failed to create a feature!"); } cPart.Update(); // CATIA Part 업데이트 } }