public static void PlierTole(this Body2 Tole, ModelDoc2 mdl, String nomConfigPliee) { var tmpTole = Tole; if (tmpTole.IsNull()) { tmpTole = mdl.ePartDoc().eChercherCorps(CONSTANTES.NOM_CORPS_DEPLIEE, false); if (tmpTole.IsNull()) { return; } } Feature FonctionDepliee = tmpTole.eFonctionEtatDepliee(); FonctionDepliee.eModifierEtat(swFeatureSuppressionAction_e.swSuppressFeature, nomConfigPliee); mdl.eEffacerSelection(); FonctionDepliee.eParcourirSousFonction( f => { if ((f.Name.ToLowerInvariant() == CONSTANTES.LIGNES_DE_PLIAGE.ToLowerInvariant()) || (f.Name.ToLowerInvariant() == CONSTANTES.CUBE_DE_VISUALISATION.ToLowerInvariant())) { f.eSelect(true); } return(false); } ); mdl.BlankSketch(); mdl.eEffacerSelection(); }
private Boolean AppliquerOptions(ModelDoc2 mdlBase, Feature f, View vue, String nomEsquisse, Boolean afficher) { if (f.Name == nomEsquisse) { f.eSelectionnerById2Dessin(mdlBase, vue); if (afficher) { mdlBase.UnblankSketch(); } else { mdlBase.BlankSketch(); } return(true); } return(false); }
private void cmdMasquerEsquisses(ModelDoc2 mdl) { mdl.eParcourirFonctions( f => { if (f.GetTypeName2() == FeatureType.swTnFlatPattern) { return(true); } else if (f.GetTypeName2() == FeatureType.swTnProfileFeature) { f.eSelect(false); mdl.BlankSketch(); mdl.eEffacerSelection(); } return(false); }, true ); }
private Boolean AppliquerOptionsPliage(ModelDoc2 mdlBase, Feature f, View vue) { if (f.Name.StartsWith(CONSTANTES.LIGNES_DE_PLIAGE)) { f.eSelectionnerById2Dessin(mdlBase, vue); // Attention à l'ordre pour l'affichage des notes de pliage if (AfficherLignePliage) { mdlBase.UnblankSketch(); vue.ShowSheetMetalBendNotes = AfficherNotePliage; } else { vue.ShowSheetMetalBendNotes = false; mdlBase.BlankSketch(); } return(true); } return(false); }
private Feature EsquisseRepere(ModelDoc2 mdl, Boolean creer = true) { // On recherche l'esquisse contenant les parametres Feature Esquisse = mdl.eChercherFonction(fc => { return(fc.Name == CONSTANTES.NOM_ESQUISSE_NUMEROTER); }); if (Esquisse.IsNull() && creer) { var SM = mdl.SketchManager; // On recherche le chemin du bloc String cheminbloc = CheminBlocEsquisseNumeroter(); if (String.IsNullOrWhiteSpace(cheminbloc)) { return(null); } // On supprime la definition du bloc SupprimerDefBloc(mdl, cheminbloc); // On recherche le plan de dessus, le deuxième dans la liste des plans de référence Feature Plan = mdl.eListeFonctions(fc => { return(fc.GetTypeName2() == FeatureType.swTnRefPlane); })[1]; // Selection du plan et création de l'esquisse Plan.eSelect(); SM.InsertSketch(true); SM.AddToDB = false; SM.DisplayWhenAdded = true; mdl.eEffacerSelection(); // On récupère la fonction de l'esquisse Esquisse = mdl.Extension.GetLastFeatureAdded(); // On insère le bloc MathUtility Mu = App.Sw.GetMathUtility(); MathPoint Origine = Mu.CreatePoint(new double[] { 0, 0, 0 }); var def = SM.MakeSketchBlockFromFile(Origine, cheminbloc, false, 1, 0); // On récupère la première instance // et on l'explose var Tab = (Object[])def.GetInstances(); var ins = (SketchBlockInstance)Tab[0]; SM.ExplodeSketchBlockInstance(ins); // Fermeture de l'esquisse SM.AddToDB = false; SM.DisplayWhenAdded = true; SM.InsertSketch(true); //// On supprime la definition du bloc //SupprimerDefBloc(mdl, cheminbloc); // On renomme l'esquisse Esquisse.Name = CONSTANTES.NOM_ESQUISSE_NUMEROTER; mdl.eEffacerSelection(); // On l'active dans toutes les configurations Esquisse.SetSuppression2((int)swFeatureSuppressionAction_e.swUnSuppressFeature, (int)swInConfigurationOpts_e.swAllConfiguration, null); } if (Esquisse.IsRef()) { // On selectionne l'esquisse, on la cache // et on la masque dans le FeatureMgr // elle ne sera pas du tout acessible par l'utilisateur Esquisse.eSelect(); mdl.BlankSketch(); Esquisse.SetUIState((int)swUIStates_e.swIsHiddenInFeatureMgr, true); mdl.eEffacerSelection(); mdl.EditRebuild3(); } return(Esquisse); }
private GeomVue AppliquerOptionsVue(DrawingDoc dessin, PartDoc piece, View vue) { vue.ShowSheetMetalBendNotes = AfficherNotePliage; MathUtility SwMath = App.Sw.GetMathUtility(); var liste = piece.eListeFonctionsDepliee(); if (liste.Count == 0) { return(null); } Feature FonctionDepliee = liste[0]; GeomVue g = null; var Liste = FonctionDepliee.eListeSousFonction(); Feature f = Liste[0]; // Les fonctions "Lignes de pliage" et "Cube de visualisation" ne sont pas toujours correctement // nommées donc ont considère que la première fonction = Ligne de pliage et la deuxième = Cube de visualisation if (f.GetTypeName2() == FeatureType.swTnProfileFeature) { ModelDoc2 mdlBase = dessin.eModelDoc2(); f.eSelectionnerById2Dessin(mdlBase, vue); if (AfficherLignePliage) { mdlBase.UnblankSketch(); } else { mdlBase.BlankSketch(); } mdlBase.eEffacerSelection(); } f = Liste[1]; if (f.GetTypeName2() == FeatureType.swTnProfileFeature) { try { f.eModifierEtat(swFeatureSuppressionAction_e.swUnSuppressFeature); Sketch Esquisse = f.GetSpecificFeature2(); if (OrienterDvp) { Double Angle = AngleCubeDeVisualisation(vue, Esquisse); // On oriente la vue switch (OrientationDvp) { case eOrientation.Portrait: if (Math.Abs(Angle) != MathX.eRad90D) { Double a = MathX.eRad90D - Math.Abs(Angle); vue.Angle = (Math.Sign(Angle) == 0 ? 1 : Math.Sign(Angle)) * a; } break; case eOrientation.Paysage: if (Math.Abs(Angle) != 0 || Math.Abs(Angle) != MathX.eRad180D) { Double a = MathX.eRad90D - Math.Abs(Angle); vue.Angle = ((Math.Sign(Angle) == 0 ? 1 : Math.Sign(Angle)) * a) - MathX.eRad90D; } break; default: break; } } g = new GeomVue(vue, Esquisse); } catch { WindowLog.EcrireF("Impossible d'orienter la vue : {0}", vue.Name); } } //FonctionDepliee.eParcourirSousFonction( // f => // { // if (f.Name.StartsWith(CONSTANTES.LIGNES_DE_PLIAGE)) // { // //String NomSelection = f.Name + "@" + vue.RootDrawingComponent.Name + "@" + vue.Name; // //Dessin.Extension.SelectByID2(NomSelection, "SKETCH", 0, 0, 0, false, 0, null, 0); // ModelDoc2 mdlBase = dessin.eModelDoc2(); // f.eSelectionnerById2Dessin(mdlBase, vue); // if (AfficherLignePliage) // mdlBase.UnblankSketch(); // else // mdlBase.BlankSketch(); // mdlBase.eEffacerSelection(); // } // else if (f.Name.StartsWith(CONSTANTES.CUBE_DE_VISUALISATION)) // { // try // { // f.eModifierEtat(swFeatureSuppressionAction_e.swUnSuppressFeature); // Sketch Esquisse = f.GetSpecificFeature2(); // if (OrienterDvp) // { // Double Angle = AngleCubeDeVisualisation(vue, Esquisse); // // On oriente la vue // switch (OrientationDvp) // { // case eOrientation.Portrait: // if (Math.Abs(Angle) != MathX.eRad90D) // { // Double a = MathX.eRad90D - Math.Abs(Angle); // vue.Angle = (Math.Sign(Angle) == 0 ? 1 : Math.Sign(Angle)) * a; // } // break; // case eOrientation.Paysage: // if (Math.Abs(Angle) != 0 || Math.Abs(Angle) != MathX.eRad180D) // { // Double a = MathX.eRad90D - Math.Abs(Angle); // vue.Angle = ((Math.Sign(Angle) == 0 ? 1 : Math.Sign(Angle)) * a) - MathX.eRad90D; // } // break; // default: // break; // } // } // g = new GeomVue(vue, Esquisse); // } // catch // { // WindowLog.EcrireF("Impossible d'orienter la vue : {0}", vue.Name); // } // return true; // } // return false; // } // ); return(g); }
/// <summary> /// 这里提供获取当前装配体的 bounding box /// </summary> /// <returns>返回 LxWxH</returns> private string GetActionAssemlbyBOX() { BoxSize newboxSize = new BoxSize(); ModelDoc2 swModel = default(ModelDoc2); double L = 0; double W = 0; double H = 0; double[] BoxFeatureDblArray = new double[7]; double[] BoxFaceDblArray = new double[7]; SketchPoint[] swSketchPt = new SketchPoint[9]; SketchSegment[] swSketchSeg = new SketchSegment[13]; swModel = (ModelDoc2)iswApp.IActiveDoc2; AssemblyDoc assemblyDoc = (AssemblyDoc)swModel; BoxFeatureDblArray = (double[])assemblyDoc.GetBox((int)swBoundingBoxOptions_e.swBoundingBoxIncludeRefPlanes); L = (BoxFeatureDblArray[3] - BoxFeatureDblArray[0]) * 1000; W = (BoxFeatureDblArray[4] - BoxFeatureDblArray[1]) * 1000; H = (BoxFeatureDblArray[5] - BoxFeatureDblArray[2]) * 1000; List <double> myList = new List <double> { L, W, H }; myList.Sort(); newboxSize.Length = myList[2]; newboxSize.Weigth = myList[1]; newboxSize.Height = myList[0]; bool b = swModel.Extension.SelectByID2("Size", "SKETCH", 0, 0, 0, false, 0, null, 0); if (b == false) { swModel.Insert3DSketch2(true); swModel.SetAddToDB(true); swModel.SetDisplayWhenAdded(false); SketchManager swSketchMgr = default(SketchManager); swSketchMgr = (SketchManager)swModel.SketchManager; // Draw points at each corner of bounding box swSketchPt[0] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[1], BoxFeatureDblArray[5]); swSketchPt[1] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[1], BoxFeatureDblArray[5]); swSketchPt[2] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[1], BoxFeatureDblArray[2]); swSketchPt[3] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[1], BoxFeatureDblArray[2]); swSketchPt[4] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[4], BoxFeatureDblArray[5]); swSketchPt[5] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[4], BoxFeatureDblArray[5]); swSketchPt[6] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[4], BoxFeatureDblArray[2]); swSketchPt[7] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[4], BoxFeatureDblArray[2]); // Now draw bounding box swSketchSeg[0] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[0].X, swSketchPt[0].Y, swSketchPt[0].Z, swSketchPt[1].X, swSketchPt[1].Y, swSketchPt[1].Z); swSketchSeg[1] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[1].X, swSketchPt[1].Y, swSketchPt[1].Z, swSketchPt[2].X, swSketchPt[2].Y, swSketchPt[2].Z); swSketchSeg[2] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[2].X, swSketchPt[2].Y, swSketchPt[2].Z, swSketchPt[3].X, swSketchPt[3].Y, swSketchPt[3].Z); swSketchSeg[3] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[3].X, swSketchPt[3].Y, swSketchPt[3].Z, swSketchPt[0].X, swSketchPt[0].Y, swSketchPt[0].Z); swSketchSeg[4] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[0].X, swSketchPt[0].Y, swSketchPt[0].Z, swSketchPt[4].X, swSketchPt[4].Y, swSketchPt[4].Z); swSketchSeg[5] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[1].X, swSketchPt[1].Y, swSketchPt[1].Z, swSketchPt[5].X, swSketchPt[5].Y, swSketchPt[5].Z); swSketchSeg[6] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[2].X, swSketchPt[2].Y, swSketchPt[2].Z, swSketchPt[6].X, swSketchPt[6].Y, swSketchPt[6].Z); swSketchSeg[7] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[3].X, swSketchPt[3].Y, swSketchPt[3].Z, swSketchPt[7].X, swSketchPt[7].Y, swSketchPt[7].Z); swSketchSeg[8] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[4].X, swSketchPt[4].Y, swSketchPt[4].Z, swSketchPt[5].X, swSketchPt[5].Y, swSketchPt[5].Z); swSketchSeg[9] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[5].X, swSketchPt[5].Y, swSketchPt[5].Z, swSketchPt[6].X, swSketchPt[6].Y, swSketchPt[6].Z); swSketchSeg[10] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[6].X, swSketchPt[6].Y, swSketchPt[6].Z, swSketchPt[7].X, swSketchPt[7].Y, swSketchPt[7].Z); swSketchSeg[11] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[7].X, swSketchPt[7].Y, swSketchPt[7].Z, swSketchPt[4].X, swSketchPt[4].Y, swSketchPt[4].Z); swModel.SetDisplayWhenAdded(true); swModel.SetAddToDB(false); //string actionSketchname = swModel.SketchManager.ActiveSketch.Name; swModel.Insert3DSketch2(true); swModel.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, true, false, "Size"); swModel.ClearSelection2(true); swModel.Extension.SelectByID2("Size", "SKETCH", 0, 0, 0, false, 0, null, 0); swModel.BlankSketch(); swModel.ClearSelection2(true); } BoxSize boxSize = new BoxSize(); boxSize.Length = Math.Round(newboxSize.Length, 0); boxSize.Weigth = Math.Round(newboxSize.Weigth, 0); boxSize.Height = Math.Round(newboxSize.Height, 0); string proText = string.Join("x", boxSize.Length, boxSize.Weigth, boxSize.Height); return(proText); }
private GeomVue AppliquerOptionsVue(DrawingDoc dessin, PartDoc piece, View vue) { vue.ShowSheetMetalBendNotes = AfficherNotePliage; MathUtility SwMath = App.Sw.GetMathUtility(); ModelDoc2 mdl = dessin.eModelDoc2(); Body2 c = piece.eChercherCorps(CONSTANTES.NOM_CORPS_DEPLIEE, true); GeomVue g = null; c.eFonctionEtatDepliee().eParcourirSousFonction( f => { if (f.Name.StartsWith(CONSTANTES.LIGNES_DE_PLIAGE)) { String NomSelection = f.Name + "@" + vue.RootDrawingComponent.Name + "@" + vue.Name; mdl.Extension.SelectByID2(NomSelection, "SKETCH", 0, 0, 0, false, 0, null, 0); if (AfficherLignePliage) { mdl.UnblankSketch(); } else { mdl.BlankSketch(); } mdl.eEffacerSelection(); } else if (f.Name.StartsWith(CONSTANTES.CUBE_DE_VISUALISATION)) { try { f.eModifierEtat(swFeatureSuppressionAction_e.swUnSuppressFeature); Sketch Esquisse = f.GetSpecificFeature2(); if (OrienterDvp) { Double Angle = AngleCubeDeVisualisation(vue, Esquisse); // On oriente la vue switch (OrientationDvp) { case eOrientation.Portrait: if (Math.Abs(Angle) != MathX.eRad90D) { Double a = MathX.eRad90D - Math.Abs(Angle); vue.Angle = (Math.Sign(Angle) == 0 ? 1 : Math.Sign(Angle)) * a; } break; case eOrientation.Paysage: if (Math.Abs(Angle) != 0 || Math.Abs(Angle) != MathX.eRad180D) { Double a = MathX.eRad90D - Math.Abs(Angle); vue.Angle = ((Math.Sign(Angle) == 0 ? 1 : Math.Sign(Angle)) * a) - MathX.eRad90D; } break; default: break; } } g = new GeomVue(vue, Esquisse); } catch { WindowLog.EcrireF("Impossible d'orienter la vue : {0}", vue.Name); } return(true); } return(false); } ); return(g); }
public void GetBoundingBox() { BoxSize newboxSize = new BoxSize(); BoxSize boxSize = new BoxSize(); ModelDoc2 swModel = default(ModelDoc2); double L = 0; double W = 0; double H = 0; double[] BoxFeatureDblArray = new double[7]; double[] BoxFaceDblArray = new double[7]; SketchManager swSketchMgr = default(SketchManager); SketchPoint[] swSketchPt = new SketchPoint[9]; SketchSegment[] swSketchSeg = new SketchSegment[13]; swModel = (ModelDoc2)iswApp.IActiveDoc2; PartDoc swPart = (PartDoc)swModel; BoxFeatureDblArray = (double[])swPart.GetPartBox(true); Debug.Print(" Pt1 = " + "(" + BoxFeatureDblArray[0] * 1000.0 + ", " + BoxFeatureDblArray[1] * 1000.0 + ", " + BoxFeatureDblArray[2] * 1000.0 + ") mm"); Debug.Print(" Pt2 = " + "(" + BoxFeatureDblArray[3] * 1000.0 + ", " + BoxFeatureDblArray[4] * 1000.0 + ", " + BoxFeatureDblArray[5] * 1000.0 + ") mm"); L = (BoxFeatureDblArray[3] - BoxFeatureDblArray[0]) * 1000; W = (BoxFeatureDblArray[4] - BoxFeatureDblArray[1]) * 1000; H = (BoxFeatureDblArray[5] - BoxFeatureDblArray[2]) * 1000; List <double> myList = new List <double> { L, W, H }; myList.Sort(); newboxSize.Length = myList[2]; newboxSize.Weigth = myList[1]; newboxSize.Height = myList[0]; swModel.Insert3DSketch2(true); swModel.SetAddToDB(true); swModel.SetDisplayWhenAdded(false); swSketchMgr = (SketchManager)swModel.SketchManager; // Draw points at each corner of bounding box swSketchPt[0] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[1], BoxFeatureDblArray[5]); swSketchPt[1] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[1], BoxFeatureDblArray[5]); swSketchPt[2] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[1], BoxFeatureDblArray[2]); swSketchPt[3] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[1], BoxFeatureDblArray[2]); swSketchPt[4] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[4], BoxFeatureDblArray[5]); swSketchPt[5] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[4], BoxFeatureDblArray[5]); swSketchPt[6] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[0], BoxFeatureDblArray[4], BoxFeatureDblArray[2]); swSketchPt[7] = (SketchPoint)swSketchMgr.CreatePoint(BoxFeatureDblArray[3], BoxFeatureDblArray[4], BoxFeatureDblArray[2]); // Now draw bounding box swSketchSeg[0] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[0].X, swSketchPt[0].Y, swSketchPt[0].Z, swSketchPt[1].X, swSketchPt[1].Y, swSketchPt[1].Z); swSketchSeg[1] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[1].X, swSketchPt[1].Y, swSketchPt[1].Z, swSketchPt[2].X, swSketchPt[2].Y, swSketchPt[2].Z); swSketchSeg[2] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[2].X, swSketchPt[2].Y, swSketchPt[2].Z, swSketchPt[3].X, swSketchPt[3].Y, swSketchPt[3].Z); swSketchSeg[3] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[3].X, swSketchPt[3].Y, swSketchPt[3].Z, swSketchPt[0].X, swSketchPt[0].Y, swSketchPt[0].Z); swSketchSeg[4] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[0].X, swSketchPt[0].Y, swSketchPt[0].Z, swSketchPt[4].X, swSketchPt[4].Y, swSketchPt[4].Z); swSketchSeg[5] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[1].X, swSketchPt[1].Y, swSketchPt[1].Z, swSketchPt[5].X, swSketchPt[5].Y, swSketchPt[5].Z); swSketchSeg[6] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[2].X, swSketchPt[2].Y, swSketchPt[2].Z, swSketchPt[6].X, swSketchPt[6].Y, swSketchPt[6].Z); swSketchSeg[7] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[3].X, swSketchPt[3].Y, swSketchPt[3].Z, swSketchPt[7].X, swSketchPt[7].Y, swSketchPt[7].Z); swSketchSeg[8] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[4].X, swSketchPt[4].Y, swSketchPt[4].Z, swSketchPt[5].X, swSketchPt[5].Y, swSketchPt[5].Z); swSketchSeg[9] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[5].X, swSketchPt[5].Y, swSketchPt[5].Z, swSketchPt[6].X, swSketchPt[6].Y, swSketchPt[6].Z); swSketchSeg[10] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[6].X, swSketchPt[6].Y, swSketchPt[6].Z, swSketchPt[7].X, swSketchPt[7].Y, swSketchPt[7].Z); swSketchSeg[11] = (SketchSegment)swSketchMgr.CreateLine(swSketchPt[7].X, swSketchPt[7].Y, swSketchPt[7].Z, swSketchPt[4].X, swSketchPt[4].Y, swSketchPt[4].Z); swModel.SetDisplayWhenAdded(true); swModel.SetAddToDB(false); //string actionSketchname = swModel.SketchManager.ActiveSketch.Name; swModel.Insert3DSketch2(true); swModel.SelectedFeatureProperties(0, 0, 0, 0, 0, 0, 0, true, false, "Size"); swModel.ClearSelection2(true); swModel.Extension.SelectByID2("Size", "SKETCH", 0, 0, 0, false, 0, null, 0); swModel.BlankSketch(); swModel.ClearSelection2(true); boxSize.Length = Math.Round(newboxSize.Length, 1); boxSize.Weigth = Math.Round(newboxSize.Weigth, 1); boxSize.Height = Math.Round(newboxSize.Height, 1); // swModel.Extension.CustomPropertyManager[""].Delete("尺寸"); string proText = string.Join("x", boxSize.Length, boxSize.Weigth, boxSize.Height); string proTextStorck = string.Join("x", boxSize.Length + 10, boxSize.Weigth + 2, boxSize.Height + 1); swModel.Extension.CustomPropertyManager[""].Add3("零件尺寸", 30, proText, 1); swModel.Extension.CustomPropertyManager[""].Add3("下料尺寸", 30, proTextStorck, 1); swModel.Extension.CustomPropertyManager[""].Add3("下料方式", 30, "", 1); // swModel.AddCustomInfo("尺寸","Text", boxSize.Length.ToString()); swModel.Save(); iswApp.CloseDoc(swModel.GetPathName()); }
private Feature EsquisseRepere(ModelDoc2 mdl) { // On recherche l'esquisse contenant les parametres Feature Esquisse = mdl.eChercherFonction(fc => { return(fc.Name == CONSTANTES.NOM_ESQUISSE_NUMEROTER); }); if (Esquisse.IsNull()) { var SM = mdl.SketchManager; // On recherche le chemin du bloc String cheminbloc = ""; var CheminDossierBloc = App.Sw.GetUserPreferenceStringValue((int)swUserPreferenceStringValue_e.swFileLocationsBlocks).Split(new String[] { ";" }, StringSplitOptions.RemoveEmptyEntries); foreach (var chemin in CheminDossierBloc) { var d = new DirectoryInfo(chemin); var r = d.GetFiles(CONSTANTES.NOM_BLOCK_ESQUISSE_NUMEROTER, SearchOption.AllDirectories); if (r.Length > 0) { cheminbloc = r[0].FullName; break; } } if (String.IsNullOrWhiteSpace(cheminbloc)) { return(null); } Action SupprimerDefBloc = delegate { var TabDef = (Object[])SM.GetSketchBlockDefinitions(); if (TabDef.IsRef()) { foreach (SketchBlockDefinition blocdef in TabDef) { if (blocdef.FileName == cheminbloc) { Feature d = blocdef.GetFeature(); d.eSelect(); mdl.Extension.DeleteSelection2((int)swDeleteSelectionOptions_e.swDelete_Absorbed); mdl.eEffacerSelection(); break; } } } }; SupprimerDefBloc(); // On recherche le plan de dessus, le deuxième dans la liste des plans de référence Feature Plan = mdl.eListeFonctions(fc => { return(fc.GetTypeName2() == FeatureType.swTnRefPlane); })[1]; // Selection du plan et création de l'esquisse Plan.eSelect(); SM.InsertSketch(true); SM.AddToDB = false; SM.DisplayWhenAdded = true; mdl.eEffacerSelection(); // On récupère la fonction de l'esquisse Esquisse = mdl.Extension.GetLastFeatureAdded(); // On insère le bloc MathUtility Mu = App.Sw.GetMathUtility(); MathPoint Origine = Mu.CreatePoint(new double[] { 0, 0, 0 }); var def = SM.MakeSketchBlockFromFile(Origine, cheminbloc, false, 1, 0); // On récupère la première instance // et on l'explose var Tab = (Object[])def.GetInstances(); var ins = (SketchBlockInstance)Tab[0]; SM.ExplodeSketchBlockInstance(ins); // Fermeture de l'esquisse SM.AddToDB = false; SM.DisplayWhenAdded = true; SM.InsertSketch(true); // On supprime la definition du bloc SupprimerDefBloc(); // On renomme l'esquisse Esquisse.Name = CONSTANTES.NOM_ESQUISSE_NUMEROTER; mdl.eEffacerSelection(); // On l'active dans toutes les configurations Esquisse.SetSuppression2((int)swFeatureSuppressionAction_e.swUnSuppressFeature, (int)swInConfigurationOpts_e.swAllConfiguration, null); } // On selectionne l'esquisse, on la cache // et on la masque dans le FeatureMgr // elle ne sera pas du tout acessible par l'utilisateur Esquisse.eSelect(); mdl.BlankSketch(); Esquisse.SetUIState((int)swUIStates_e.swIsHiddenInFeatureMgr, true); mdl.eEffacerSelection(); return(Esquisse); }