Aller au contenu

Question de couleurs


PhilBat

Messages recommandés

Tu peux utiliser la classe Autodesk.AutoCAD.Windows.ColorDialog pour afficher une boite de dialogue standard de sélection des couleurs.

 

Désolé, mais le code est en C#.

 

ColorDialog cd = new ColorDialog();
cd.SetDialogTabs(ColorDialog.ColorTabs.ACITab | ColorDialog.ColorTabs.TrueColorTab | 
ColorDialog.ColorTabs.ColorBookTab);
cd.IncludeByBlockByLayer = true;
cd.Color = null; 
cd.ShowDialog();

 

Si tu utilise un comboBox, l'utilisateur ne pourra pas sélectionner une couleur vraie (+ de 16 millions de possibilités). Cependant, tu peux le faire si tu te contentes des couleurs indexées. Pour obtenir la liste des couleurs, tu boucles de 1 (rouge) à 255 (blanc) et tu crées un objet couleur avec la méthode FromColorIndex :

 

for (short colorIndex = 1; colorIndex <= 255; colorIndex++)
{
 using (Color color = Color.FromColorIndex(ColorMethod.ByAci, colorIndex))
 {
   // color.ColorValue correspond à une couleur .NET     
 }
}

 

Ensuite, tu peux utiliser le mode OwnerDraw du combo pour afficher un rectangle rempli avec la couleur.

 

Tu as aussi un article sur the Swamp : http://www.theswamp.org/index.php?topic=30270.0 et sur Through the Interface : http://through-the-interface.typepad.com/through_the_interface/2008/03/implementing-yo.html

Maxence DELANNOY

Développement de compléments aux logiciels Autodesk : AutoCAD, Revit, Inventor, Vault, Navisworks... et autres logiciels de CAO

WIIP - http://wiip.fr

Lien vers le commentaire
Partager sur d’autres sites

  • 11 ans après...

Bonjour, je désire remplir un contrôle dataGridView avec les noms des calques et les couleurs des calques du Dwg courant.

Grâce à un bouton je change la couleur de la ligne (cellule) sélectionnée via une boite de dialogue standard de sélection des couleurs (voir si-dessus).

Maintenant la difficulté est de changer toutes les couleurs de chaque calque suivant ce code :

       private void btnOK_Click(object sender, EventArgs e)
       {
           var doc = AcAp.DocumentManager.MdiActiveDocument;
           var db = doc.Database;
           var ed = doc.Editor;
           using (Transaction tr = db.TransactionManager.StartTransaction())
           {
               LayerTable acLyrTbl = tr.GetObject(db.LayerTableId, OpenMode.ForRead) as LayerTable;
               foreach (ObjectId acObjId in acLyrTbl)
               {
                   LayerTableRecord acLyrTblRec = tr.GetObject(acObjId, OpenMode.ForRead) as LayerTableRecord;
                   if (!acLyrTblRec.IsDependent)
                   {
                       foreach (DataGridViewRow row in dataGridView1.Rows)
                       {
                           if (!row.IsNewRow)
                           {
                               if (row.Cells[0].Value.ToString() == acLyrTblRec.Name)
                               {
                                   Autodesk.AutoCAD.Colors.Color c = Autodesk.AutoCAD.Colors.Color.FromNames(row.Cells[2].Value.ToString());
                                   acLyrTblRec.UpgradeOpen();
                                   acLyrTblRec.Color = c;
                               }
                           }
                       }
                   }
               }
               tr.Commit();
           }
           this.Close();
       }

Évidemment la ligne ...Color.FromNames ne marche pas.

Avez-vous une solution pour palier à tous les cas de couleurs ?...

Merci d'avance

Philippe

 

Lien vers le commentaire
Partager sur d’autres sites

Quand tu choisis ta couleur via le dialogue, pourquoi tu ne stockes pas cette couleur (AutoCAD) dans le tag de ta cellule.

row.Cells[0].Tag = "variable couleur renvoyée par le dialogue de choix"

Comme ça tu la récupères directement sans passer par une conversion.

Autodesk.AutoCAD.Colors.Color c = (Autodesk.AutoCAD.Colors.Color)(row.Cells[0].Tag);

 

Olivier

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

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é