public Boolean FiltreFonctionRepetition(Object SelBox, Object selection, int selType, String itemText) { EffacerContraintes(); if (selType == (int)swSelectType_e.swSelBODYFEATURES) { Feature f = selection as Feature; if (f.GetTypeName2() == FeatureType.swTnCurvePattern) { SelectContraintes(); return(true); } } else { try { Face2 face = selection as Face2; Body2 b = face.GetBody(); Entity e = face as Entity; Component2 c = e.GetComponent(); String cNomFonc = _pFonctionRepet.GetValeur <String>(); Feature F = b.eChercherFonction(f => { return(Regex.IsMatch(f.Name, cNomFonc)); }, false); if (F.IsNull()) { F = b.eChercherFonction(f => { return(f.GetTypeName2() == FeatureType.swTnCurvePattern); }, false); } F = c.FeatureByName(F.Name); SelectFonctionRepetition((CtrlSelectionBox)SelBox, F); } catch (Exception e) { this.LogMethode(new Object[] { e }); } } return(false); }
protected override void Command() { try { Face2 face = null; SketchSegment segment = null; if (MdlBase.eSelect_RecupererTypeObjet(1) == e_swSelectType.swSelFACES) { face = MdlBase.eSelect_RecupererObjet <Face2>(1); segment = MdlBase.eSelect_RecupererObjet <SketchSegment>(2); } else { face = MdlBase.eSelect_RecupererObjet <Face2>(2); segment = MdlBase.eSelect_RecupererObjet <SketchSegment>(1); } if (face == null || segment == null) { return; } MdlBase.eEffacerSelection(); Boolean r = false; Boolean reverse = false; var sk = segment.GetSketch(); var xform = (MathTransform)sk.ModelToSketchTransform.Inverse(); if (segment.GetType() != (int)swSketchSegments_e.swSketchLINE) { return; } var sl = (SketchLine)segment; var start = new ePoint(sl.GetStartPoint2()); var end = new ePoint(sl.GetEndPoint2()); start.ApplyMathTransform(xform); end.ApplyMathTransform(xform); WindowLog.Ecrire(start.IsRef() + " " + start.ToString()); WindowLog.Ecrire(end.IsRef() + " " + end.ToString()); var box = (Double[])face.GetBox(); var pt = new ePoint((box[3] + box[0]) * 0.5, (box[4] + box[1]) * 0.5, (box[5] + box[2]) * 0.5); WindowLog.Ecrire(pt.IsRef() + " " + pt.ToString()); if (start.Distance2(pt) > end.Distance2(pt)) { reverse = true; } r = face.eSelectEntite(MdlBase, 4, false); r = segment.eSelect(MdlBase, 1, true); var cp = (Body2)face.GetBody(); r = cp.eSelect(MdlBase, 512, true); var fm = MdlBase.FeatureManager; var featRepetDef = (CurveDrivenPatternFeatureData)fm.CreateDefinition((int)swFeatureNameID_e.swFmCurvePattern); featRepetDef.D1AlignmentMethod = 0; featRepetDef.D1CurveMethod = 0; featRepetDef.D1InstanceCount = 3; featRepetDef.D1IsEqualSpaced = true; featRepetDef.D1ReverseDirection = reverse; featRepetDef.D1Spacing = 0.001; featRepetDef.D2InstanceCount = 1; featRepetDef.D2IsEqualSpaced = false; featRepetDef.D2PatternSeedOnly = false; featRepetDef.D2ReverseDirection = false; featRepetDef.D2Spacing = 0.001; featRepetDef.GeometryPattern = true; var featRepet = fm.CreateFeature(featRepetDef); WindowLog.Ecrire(featRepet != null); } catch (Exception e) { this.LogMethode(new Object[] { e }); WindowLog.Ecrire(new Object[] { e }); } }
protected override void Command() { try { Face2 Face = MdlBase.eSelect_RecupererObjet <Face2>(); if (Face.IsNull()) { WindowLog.Ecrire("Pas de face selectionnée"); return; } Body2 CorpsBase = Face.GetBody(); if (CorpsBase.IsNull()) { WindowLog.Ecrire("Pas de corps selectionnée"); return; } String MateriauxCorpsBase = ""; if (MdlBase.TypeDoc() == eTypeDoc.Piece) { MateriauxCorpsBase = CorpsBase.eGetMateriauCorpsOuPiece(MdlBase.ePartDoc(), MdlBase.eNomConfigActive()); } else { Component2 cpCorpsBase = MdlBase.eSelect_RecupererComposant(); MateriauxCorpsBase = CorpsBase.eGetMateriauCorpsOuComp(cpCorpsBase); } MdlBase.eEffacerSelection(); WindowLog.Ecrire("Matériau : " + MateriauxCorpsBase); var ListeCorpsIdentiques = new List <Body2>(); Action <Body2, String> Test = delegate(Body2 corps, String mat) { if (MateriauxCorpsBase != mat) { return; } if (corps.eComparerGeometrie(CorpsBase) == Sw.Comparaison_e.Semblable) { ListeCorpsIdentiques.Add(corps); } }; if (MdlBase.TypeDoc() == eTypeDoc.Piece) { var Piece = MdlBase.ePartDoc(); foreach (var Corps in Piece.eListeCorps()) { var MateriauCorpsTest = Corps.eGetMateriauCorpsOuPiece(Piece, MdlBase.eNomConfigActive()); Test(Corps, MateriauCorpsTest); } } else { foreach (var comp in MdlBase.eComposantRacine().eRecListeComposant(c => { return(c.TypeDoc() == eTypeDoc.Piece); })) { foreach (var Corps in comp.eListeCorps()) { var MateriauCorpsTest = Corps.eGetMateriauCorpsOuComp(comp); Test(Corps, MateriauCorpsTest); } } } WindowLog.EcrireF("Nb de corps identiques : {0}", ListeCorpsIdentiques.Count); foreach (var corps in ListeCorpsIdentiques) { corps.eSelect(true); } } catch (Exception e) { this.LogErreur(new Object[] { e }); } }