Aller au contenu

Test .NET 2008/2009


(gile)

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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.

Lien vers le commentaire
Partager sur d’autres sites

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

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é