Aller au contenu

Nettoyage des Multilignes


sechanbask

Messages recommandés

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 Fluides

http://www.ategie.fr/uploads/ategie/ategie-at%C3%A9gie-bureau-%C3%A9tudes-etudes-fluides-logo-100x56.png

Exécution, Synthèse, Conception, Maîtrise d'Oeuvre, Audit, Chiffrage

www.ategie.fr

Lien vers le commentaire
Partager sur d’autres sites

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 code

using 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

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é