Jump to content

Nettoyage des Multilignes


Recommended Posts

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

Link to post
Share on other 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 -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Link to post
Share on other sites

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 -
Développements sur mesure pour AutoCAD
ADSK_Expert_Elite_Icon_S_Color_Blk_125.png

Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...