Aller au contenu

Récupération Échelle


Messages recommandés

En fait je pense s'avoir la ou ça coince. Lorsque que définit l'échelle de l'objet que je vais insérer dans mon plan, je remarque que la valeur renvoyé est égale à 0.

Après analyse du code j'ai remarqué que la récupération de l'échelle ne s'effectuait pas correctement.

public double RecupEchelle(AcadDocument doc)
   {
       object XDataType = new object(); //Instanciation d'un nouvel objet XDataType
       object XDataValue = new object();//Instanciation d'un nouvel objet XDataValue
       object[] objArray = new object[2];//Instanciation d'un nouveau tableau d'objet contenant 2 objets
     doc.Layers.Item((object) "JFC_EVAPORATEUR").GetXData("", out XDataType, out XDataValue);
     double resultat= Convert.ToDouble(((object[]) XDataValue)[1]);
     return resultat;
   }

post-63390-0-41208900-1453452270_thumb.png

 

Ensuite après que la valeur de cette méthode soit renvoyé j'effectue le code suivant:

try
     {
       for (int index = 0; index < 100; ++index)
       {
         numArray[index] = (short) 1000; /*On convertit en entier de 16 bits et on insére la valeur dans numArray[]*/
         objArray2[index] = (object) 0;
       }
       this.acDoc.ActiveLayer = this.acDoc.Layers.Item((object) Layer);
       new GetPointCoord.GetPointCoord().GetPoint(this.acDoc, ref objArray1[0], ref objArray1[1]);
 
//Valeur qu'on récupère après la définition de l'échelle------------------------------

       double num1 = this.RecupEchelle(this.acDoc);
       double num2;
       double num3;
       switch (Orientation)
       {          case "Verticale":
           num2 = num1 * Math.Sqrt((double) Puissance / 40000.0 + 0.2);
           num3 = 2.0 * num2;
           break;
         case "Horizontale":
           num3 = num1 * Math.Sqrt((double) Puissance / 40000.0 + 0.2);
           num2 = 2.0 * num3;
           break;
         default:
           num3 = num1 * Math.Sqrt((double) Puissance / 40000.0 + 0.2);
           num2 = 2.0 * num3;
           break;
       }
       double[] Point = new double[10]
       {
         (double) objArray1[0] - num2 / 2.0,
         (double) objArray1[1] + num3 / 2.0,
         (double) objArray1[0] + num2 / 2.0,
         (double) objArray1[1] + num3 / 2.0,
         (double) objArray1[0] + num2 / 2.0,
         (double) objArray1[1] - num3 / 2.0,
         (double) objArray1[0] - num2 / 2.0,
         (double) objArray1[1] - num3 / 2.0,
         (double) objArray1[0] - num2 / 2.0,
         (double) objArray1[1] + num3 / 2.0
       };
       AcadLWPolyline acadLwPolyline = this.acDoc.ModelSpace.AddLightWeightPolyline((object) Point);
       acadLwPolyline.Closed = true;
       if (Layer == "JFC_EVAPORATEUR" || Layer == "JFC_DOUBLE_EVAPORATEUR")
         this.Text(Point, Layer, Puissance);
       numArray[0] = (short) 1001;
       objArray2[0] = (object) "JFC_TRACEUR";
       numArray[1] = (short) 1071;
       objArray2[1] = (object) Puissance;
       numArray[2] = (short) 1071;
       objArray2[2] = (object) nbC;
       int index1 = 0;
       int index2 = 3;
       while (index2 <= nbC + 4)
       {
         numArray[index2] = (short) 1070;
         objArray2[index2] = (object) tab[index1].nb;
         numArray[index2 + 1] = (short) 1000;
         objArray2[index2 + 1] = (object) tab[index1].Type;
         numArray[index2 + 2] = (short) 1040;
         objArray2[index2 + 2] = (object) tab[index1].section;
         ++index1;
         index2 += 3;
       }
       acadLwPolyline.SetXData((object)numArray, (object)objArray2);
     }

Lien vers le commentaire
Partager sur d’autres sites

Créer un compte ou se connecter pour commenter

Vous devez être membre afin de pouvoir déposer un commentaire

Créer un compte

Créez un compte sur notre communauté. C’est facile !

Créer un nouveau compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité