PhilBat Posté(e) le 7 novembre 2012 Posté(e) le 7 novembre 2012 bonjour à tousComment remplir un combobox en utilisant la panoplie de couleursd'AutoCAD afin de pouvoir modifier facilement la couleur d'un texte (par exemple).En VB net bien sûr.Merci d'avancePhil
Maxence DELANNOY Posté(e) le 7 novembre 2012 Posté(e) le 7 novembre 2012 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 DELANNOYDéveloppement de compléments aux logiciels Autodesk : AutoCAD, Revit, Inventor, Vault, Navisworks... et autres logiciels de CAOWIIP - http://wiip.fr
PhilBat Posté(e) le 4 octobre Auteur Posté(e) le 4 octobre 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
Olivier Eckmann Posté(e) le 4 octobre Posté(e) le 4 octobre 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
PhilBat Posté(e) le 15 octobre Auteur Posté(e) le 15 octobre Ok merci pour la réponse, mais l'usage du Tag (au lieu de value ??) et du type string pose problème pour palier à tous les cas de figures de codage des couleurs. Salutations Philippe
Messages recommandé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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant