Advertisement
Guest User

Untitled

a guest
Jan 21st, 2020
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C# 3.12 KB | None | 0 0
  1. [CommandMethod("EXO_8")]
  2.         public void Exo8()
  3.         {
  4.             const string VELO_BTR_NOM = "Velo";
  5.             const string ROUE_BTR_NOM = "Roue";
  6.  
  7.             Document acDoc = AcAPP.DocumentManager.MdiActiveDocument;
  8.             Editor acEd = Application.DocumentManager.MdiActiveDocument.Editor;
  9.             Database acDB = acDoc.Database;
  10.  
  11.             int nb_velo_dessin = 0;
  12.             int nb_roue_dessin = 0;
  13.             int nb_roue_velo = 0;
  14.             int nb_roue_des_velos = 0;
  15.  
  16.             using (Transaction acTr = acDB.TransactionManager.StartTransaction())
  17.             {
  18.                 BlockTable acBlockTable = acTr.GetObject(acDB.BlockTableId, OpenMode.ForRead) as BlockTable;
  19.                 foreach (ObjectId btr_ID in acBlockTable)
  20.                 {
  21.                     BlockTableRecord BTR = acTr.GetObject(btr_ID, OpenMode.ForRead) as BlockTableRecord;
  22.                     switch (BTR.Name)
  23.                     {
  24.                         case VELO_BTR_NOM:
  25.                             foreach (ObjectId velo_BR_ID in BTR.GetBlockReferenceIds(true, false))
  26.                             {
  27.                                 BlockReference velo_BR = acTr.GetObject(velo_BR_ID, OpenMode.ForRead) as BlockReference;
  28.                                 // Si le vélo est dans le modelspace
  29.                                 if (velo_BR.BlockId == SymbolUtilityServices.GetBlockModelSpaceId(acDB))
  30.                                 { nb_velo_dessin++; }
  31.                             }
  32.                             break;
  33.                         case ROUE_BTR_NOM:
  34.                             foreach (ObjectId roue_BR_ID in BTR.GetBlockReferenceIds(true, false))
  35.                             {
  36.                                 BlockReference roue_BR = acTr.GetObject(roue_BR_ID, OpenMode.ForRead) as BlockReference;
  37.                                 // Si la roue est dans le modelspace
  38.                                 if (roue_BR.BlockId == SymbolUtilityServices.GetBlockModelSpaceId(acDB))
  39.                                 { nb_roue_dessin++; }
  40.                                 // Si la roue est dans le bloc vélo
  41.                                 else if (roue_BR.BlockId == acBlockTable[VELO_BTR_NOM])
  42.                                 { nb_roue_velo++; }
  43.                             }
  44.                             break;
  45.                         default:
  46.                             break;
  47.                     }
  48.                 }
  49.                 // Si on a le nombre de vélo dans le dessin et le nombre de roue qui compose un vélo
  50.                 if (nb_velo_dessin != 0 && nb_roue_velo != 0)
  51.                 { nb_roue_des_velos = nb_velo_dessin * nb_roue_velo; }
  52.             }
  53.  
  54.             acEd.WriteMessage(Environment.NewLine + "Le nombre de vélo est de {0}", nb_velo_dessin);
  55.             acEd.WriteMessage(Environment.NewLine + "Le nombre de roue dans le dessin est de {0}", nb_roue_dessin);
  56.             acEd.WriteMessage(Environment.NewLine + "Le nombre de roue d'un vélo est de {0}", nb_roue_velo);
  57.             acEd.WriteMessage(Environment.NewLine + "Le nombre de roue des vélos est de {0}", nb_roue_des_velos);
  58.         }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement