Aller au contenu

Messages recommandés

Posté(e)

Salut,

 

J'aurais besoin de déterminer à partir de quelle version un segment de polyligne est considéré comme Subentity.

Subentiy.dll définit une commande TEST qui met en surbrillance le segment de polyligne sélectionné.

Cette commande fonctionne sur 2010 mais retourne une erreur : "Erreur: eNotApplicable" sur 2007.

 

Si d'aucuns pouvaient me dire ce qu'il en est avec 2008 et 2009, merci.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bonjour,

 

V2009

j'aurais aimé tester, mais pour moi il ne connait pas la commande "test"

Je pense que c'est moi qui ai manqué quelque chose...

Peux tu me rappeler la procédure.

Posté(e)

Salut et bienvenue,

 

Merci pour bien vouloir te livrer à ce test.

 

Après avoir téléchargé le fichier ZIP, le décompresser dans un dossier local.

Depuis AutoCAD, charger la DLL avec la commande NETLOAD, dessiner une polyligne, laner TEST et sélectionner un segment de polyligne.

Tout ça pour avoir un segment en surbrillance ou un message d'erreur...

Merci encore.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Merci,

 

j'ai pu tester.

Même message d'erreur.

 

Ps:

Je suis schizophrène

menfin=nazemrap

j' avais du me réinscrire au moment de la bascule du forum, et je m'aperçois que je me connecte maintenant sous 2 pseudos...

Si je pouvais reprendre ma peau de dr Jekill ça me plairait bien.

Posté(e)

Merci nazemrap/menfin.

Je trouvais ça très louable pour un premier message de se livrer à un test qui a un intérêt plutôt limité.

Conclusion : il s'agit bien d'une nouvelle API 2010.

 

Pour ceux que ça intéresse, le code du test :

 

using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;

namespace CsMgd1
{
   public class Class1
   {
       [CommandMethod("TEST")]
       public static void HighlightPolySeg()
       {
           Document doc = Application.DocumentManager.MdiActiveDocument;
           Database db = doc.Database;
           Editor ed = doc.Editor;

           // Sélectionner la polyligne
           PromptEntityOptions peo =
               new PromptEntityOptions("\nSélectionnez un segment de polyligne: ");
           peo.SetRejectMessage("\nL'objet sélectionné n'est pas une polyligne");
           peo.AddAllowedClass(typeof(Polyline), true);
           peo.AddAllowedClass(typeof(Polyline2d), true);
           PromptEntityResult per = ed.GetEntity(peo);
           if (per.Status != PromptStatus.OK) return;
           using (Transaction tr = db.TransactionManager.StartTransaction())
           {
               // Déterminer l'indice du segment séléctionné
               Curve pline =
                   (Curve)tr.GetObject(per.ObjectId, OpenMode.ForRead);
               Point3d pickPt = pline.GetClosestPointTo(
                                   per.PickedPoint.TransformBy(ed.CurrentUserCoordinateSystem),
                                   ed.GetCurrentView().ViewDirection,
                                   false);
               double param = pline.GetParameterAtPoint(pickPt);
               int index = (int)param + 1;

               // Particularité des polylignes 2d splinées
               Polyline2d pl2d = tr.GetObject(per.ObjectId, OpenMode.ForRead) as Polyline2d;
               if (pl2d != null &&
                   (pl2d.PolyType == Poly2dType.CubicSplinePoly || 
                   pl2d.PolyType == Poly2dType.QuadSplinePoly) &&
                   pl2d.LinetypeGenerationOn == false)
                   index++;

               // Mettre le segment en surbrillance
               try
               {
                   FullSubentityPath suId = new FullSubentityPath(
                       new ObjectId[] { pline.Id },
                       new SubentityId(SubentityType.Edge, index));
                   pline.Highlight(suId, true);
               }
               catch (Autodesk.AutoCAD.Runtime.Exception ex)
               {
                   ed.WriteMessage("\nErreur: " + ex.Message);
               }
           }
       }
   }
}

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Posté(e)

Bonjour,

 

Sous Autocad Map 2009 avec Covadis 11.0a:

 

Commande: test

Sélectionnez un segment de polyligne:

Erreur: eNotApplicable

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

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é