sechanbask Posté(e) le 19 octobre 2011 Posté(e) le 19 octobre 2011 Bonjour, Je possède un plan architecte un peu lourd car il est exclusivement formée de multilignes (des centaines) avec remplissage + forçage des couleurs. Je ne peux pas les modifier manuelement (?? pourquoi, j'en sais rien). Est-il possible par programmation de passer toutes ses styles de multilignes en couleur "du calque" et sans remplissage ?RDJ extrait Z3.zip ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
(gile) Posté(e) le 19 octobre 2011 Posté(e) le 19 octobre 2011 Salut, J'ai essayé en LISP mais je n'y suis pas arrivé.Je suis donc passé à .NET et là, pas de problème (j'aurais dû commencer par là), la classe MlineStyle a une méthode Reset() qui semble fonctionner. Extrais MlineCleanUp.dll du fichier MlineCleanUp.zip.Charge la DLL depuis AutoCAD avec la commande NETLOAD.Lance la commande MLCLEAN. Le codeusing Autodesk.AutoCAD.ApplicationServices; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.Runtime; using AcAp = Autodesk.AutoCAD.ApplicationServices.Application; namespace MlineStyleSample { public class Commands { [CommandMethod("MLCLEAN")] public void MlineCleanUp() { Document doc = AcAp.DocumentManager.MdiActiveDocument; Database db = doc.Database; Editor ed = doc.Editor; using (Transaction tr = db.TransactionManager.StartTransaction()) { DBDictionary mlStyle = (DBDictionary)tr.GetObject(db.MLStyleDictionaryId, OpenMode.ForRead); foreach (DBDictionaryEntry entry in mlStyle) { MlineStyle style = (MlineStyle)tr.GetObject(entry.Value, OpenMode.ForWrite); string name = style.Name; double endAngle = style.EndAngle; bool endInnerArcs = style.EndInnerArcs; bool endRoundCap = style.EndRoundCap; bool endSquareCap = style.EndSquareCap; bool showMiters = style.ShowMiters; double startAngle = style.StartAngle; bool startInnerArcs = style.StartInnerArcs; bool startRoundCap = style.StartRoundCap; bool startSquareCap = style.StartSquareCap; style.Reset(); style.Name = name; style.EndAngle = endAngle; style.EndInnerArcs = endInnerArcs; style.EndRoundCap = endRoundCap; style.EndSquareCap = endSquareCap; style.ShowMiters = showMiters; style.StartAngle = startAngle; style.StartInnerArcs = startInnerArcs; style.StartRoundCap = startRoundCap; style.StartSquareCap = startRoundCap; } tr.Commit(); } ed.Regen(); } } } MlineCleanUp.zip Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
sechanbask Posté(e) le 20 octobre 2011 Auteur Posté(e) le 20 octobre 2011 c'est parfait MERCI MERCI ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
bryce Posté(e) le 20 octobre 2011 Posté(e) le 20 octobre 2011 Bonjour, Juste pour info: j'ai testé la dll par curiosité, et tous les noms des styles de multilignes sont perdus (les styles existent toujours, mais leurs noms sont vides). :unsure: Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
sechanbask Posté(e) le 20 octobre 2011 Auteur Posté(e) le 20 octobre 2011 je confirme le "bug" ATEGIE - Bureau d'Études Fluideshttp://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.pngExécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffragewww.ategie.fr
(gile) Posté(e) le 20 octobre 2011 Posté(e) le 20 octobre 2011 Oupss !!! J'avais oublié la propriété 'Name'.C'est réparé dans le message ci-dessus (téléchargement modifié). Comme ça, tous les style s'appellent bien : "UNNAMED##" comme avant... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
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