private void AddMateCylinderLocator(IComponent2 cylinderLocator, IFace2 cylinderBase) { IFeature firstFeature = cylinderLocator.FeatureByName(configuration[Property.MOUNTING_CYLINDER_PLANE_NAME_1]); IFeature secondFeature = cylinderLocator.FeatureByName(configuration[Property.MOUNTING_CYLINDER_PLANE_NAME_2]); mounter.AddMate(firstFeature, cylinderBase, (int)swMateType_e.swMateTANGENT, (int)swMateAlign_e.swAlignSAME); mounter.AddMate(secondFeature, cylinderBase, (int)swMateType_e.swMateTANGENT, (int)swMateAlign_e.swAlignSAME); }
private void AlignWithPlane(IComponent2 component, IFeature baseFace) { IFeature face = component.FeatureByName(TOP_PLANE_NAME_RU); face = face == null ? component.FeatureByName(TOP_PLANE_NAME_EN) : face; mounter.AddMate(baseFace, face, (int)swMateType_e.swMatePARALLEL, (int)swMateAlign_e.swAlignNONE); }
private void SetExtrudeDepth(IAssemblyDoc assy, IComponent2 comp, string extrudeFeatName, double depth) { if (comp != null) { if (comp.GetSuppression() == (int)swComponentSuppressionState_e.swComponentLightweight || comp.GetSuppression() == (int)swComponentSuppressionState_e.swComponentFullyLightweight) { if (comp.SetSuppression2((int)swComponentSuppressionState_e.swComponentResolved) != (int)swSuppressionError_e.swSuppressionChangeOk) { throw new InvalidOperationException("Failed to set component state to resolved"); } } else if (comp.GetSuppression() == (int)swComponentSuppressionState_e.swComponentSuppressed) { throw new NotSupportedException("Suppressed component is not supported"); } var feat = comp.FeatureByName(extrudeFeatName); if (feat == null) { throw new MissingMemberException("Feature is not found in the component"); } if (comp.Select4(false, null, false)) { int info = -1; if (assy.EditPart2(true, false, ref info) == (int)swEditPartCommandStatus_e.swEditPartSuccessful) { var featData = feat.GetDefinition() as IExtrudeFeatureData2; if (featData != null) { if (featData.AccessSelections(assy, comp)) { featData.SetDepth(true, depth); if (feat.ModifyDefinition(featData, assy, comp)) { (assy as IModelDoc2).ClearSelection2(true); assy.EditAssembly();//Exit edit part mode } else { throw new Exception("Failed to set the depth to the feature"); } } else { throw new InvalidOperationException("Failed to access feature"); } } else { throw new InvalidCastException("Selected feature is not an extrude feature"); } } else { throw new InvalidOperationException("Failed to edit part"); } } else { throw new InvalidOperationException("Failed to select component"); } } else { throw new Exception("Select component"); } }