Exemplo n.º 1
0
            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);
            }
Exemplo n.º 2
0
        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 });
            }
        }
Exemplo n.º 3
0
        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 });
            }
        }