CADxp: Désactiver les accrochages 2 (le retour) - CADxp

Aller au contenu

  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Désactiver les accrochages 2 (le retour) Two years later...

#1 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11277
  • Inscrit(e) : 02-septembre 05

Posté 18 décembre 2013 - 14:52

Salut,

Le dernier sujet sur le blog de Kean Walmsley m'a fait repenser à un vieux sujet.
Il s'avère que c'était mon cadeau de fin d'année il y deux ans.

Donc cette année le traditionnel cadeau sera le même qu'alors mais en mieux abouti.

Toujours deux commandes bascule pour activer/désactiver les accrochages aux objets sur les calques verrouillés (LOKO) ou les références externes (XROS).
Ces commandes peuvent être appelées de manière transparente ('LOKO ou 'XROS).
Les problèmes avec l'accrochage 'Intersection' sont résolus (merci Kean) mais je n'ai pas encore trouvé pour les composants des cotes sur un calque verrouillé.
Attention, la désactivation des accrochages sur de gros fichiers peut provoquer un ralentissement.
Cette nouvelle mouture semble stable sur AutoCAD 2012, 2013 et 2014, mais comme j'ai eu des plantages sévères avec AutoCAD 2011, elle sera réservé à ces versions
Ceci permet d'utiliser la technique Autoloader pour faciliter l'installation.

Installation :
  • Télecharger LockOsnap.zip.
  • Débloquer le zip (clic droit -> Propriétés -> onglet Général -> Débloquer
  • Placer le dossier LoskOsnap.bundle dans le répertoire suivant (copier le chemin dans la barre d'adresse de l'explorateur) :
    %appdata%\Autodesk\ApplicationPlugins


Désinstallation :
Supprimer le dossier LockOsnap.bundle ou modifier l'extension .bundle.

Le code:
// (C) Copyright 2012 by Gilles Chanteau 
//
using System;
using System.Collections.Generic;
using System.Linq;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
using AcAp = Autodesk.AutoCAD.ApplicationServices.Application;

[assembly: CommandClass(typeof(Gile.LockOsnap.CommandMethods))]

namespace Gile.LockOsnap
{
    public class CommandMethods
    {
        private OSOverrule lokoOSOverrule, xrosOSOverrule;
        private IntOverrule lokoIntOverrule, xrosIntOverrule;

        [CommandMethod("LOKO", CommandFlags.Modal | CommandFlags.Transparent)]
        public void LockOsnapCmd()
        {
            ToggleOsnaps(ref lokoOSOverrule, ref lokoIntOverrule, lokoPromptingForPoint, LockedUpdate, "calques verrouillés");
        }

        [CommandMethod("XROS", CommandFlags.Modal | CommandFlags.Transparent)]
        public void XrefOsnapCmd()
        {
            ToggleOsnaps(ref xrosOSOverrule, ref xrosIntOverrule, xrosPromptingForPoint, XrefUpdate, "références externes");
        }

        void lokoPromptingForPoint(object sender, PromptPointOptionsEventArgs e)
        {
            LockedUpdate();
        }

        void xrosPromptingForPoint(object sender, PromptPointOptionsEventArgs e)
        {
            XrefUpdate();
        }

        private void ToggleOsnaps(
            ref OSOverrule osOverrule,
            ref IntOverrule intOverrule,
            PromptPointOptionsEventHandler handler, 
            Action update, 
            string msg)
        {
            Editor ed = AcAp.DocumentManager.MdiActiveDocument.Editor;
            RXClass entityClass = RXClass.GetClass(typeof(Entity));
            if (osOverrule == null)
            {
                ed.PromptingForPoint += handler;
                osOverrule = new OSOverrule();
                Overrule.AddOverrule(entityClass, osOverrule, false);
                intOverrule = new IntOverrule();
                Overrule.AddOverrule(entityClass, intOverrule, false);
                ed.WriteMessage(string.Format("\nAccrochages sur les {0} désactivés.", msg));
                update();
                Overrule.Overruling = true;
            }
            else
            {
                ed.PromptingForPoint -= xrosPromptingForPoint;
                Overrule.RemoveOverrule(entityClass, osOverrule);
                osOverrule = null;
                Overrule.RemoveOverrule(entityClass, intOverrule);
                intOverrule = null;
                ed.WriteMessage(string.Format("\nAccrochages sur les {0} activés.", msg));
            }
        }

        private void LockedUpdate()
        {
            if (lokoOSOverrule != null)
            {
                Database db = HostApplicationServices.WorkingDatabase;
                using (Transaction tr = db.TransactionManager.StartOpenCloseTransaction())
                {
                    HashSet<string> layers = new HashSet<string>(
                        ((LayerTable)tr.GetObject(db.LayerTableId, OpenMode.ForRead))
                        .Cast<ObjectId>()
                        .Select(id => (LayerTableRecord)tr.GetObject(id, OpenMode.ForRead))
                        .Where(ltr => ltr.IsLocked)
                        .Select(ltr => ltr.Name));
                    ObjectId[] onLocked = ((BlockTableRecord)tr.GetObject(db.CurrentSpaceId, OpenMode.ForRead))
                        .Cast<ObjectId>()
                        .Where(id => layers.Contains(((Entity)tr.GetObject(id, OpenMode.ForRead)).Layer))
                        .ToArray();
                    lokoOSOverrule.SetIdFilter(onLocked);
                    lokoIntOverrule.SetIdFilter(onLocked);
                    tr.Commit();
                }
            }
        }

        private void XrefUpdate()
        {
            if (xrosOSOverrule != null)
            {
                Database db = HostApplicationServices.WorkingDatabase;
                using (Transaction tr = db.TransactionManager.StartOpenCloseTransaction())
                {
                    ObjectId[] xrIds = ((BlockTable)tr.GetObject(db.BlockTableId, OpenMode.ForRead))
                        .Cast<ObjectId>()
                        .Select(id => (BlockTableRecord)tr.GetObject(id, OpenMode.ForRead))
                        .Where(btr => btr.IsFromExternalReference)
                        .SelectMany(btr => btr.GetBlockReferenceIds(true, false).Cast<ObjectId>())
                        .ToArray();
                    xrosOSOverrule.SetIdFilter(xrIds);
                    xrosIntOverrule.SetIdFilter(xrIds);
                    tr.Commit();
                }
            }
        }

        class OSOverrule : OsnapOverrule
        {
            public override void GetObjectSnapPoints(
              Entity ent,
              ObjectSnapModes mode,
              IntPtr gsm,
              Point3d pick,
              Point3d last,
              Matrix3d view,
              Point3dCollection snap,
              IntegerCollection geomIds) { }

            public override void GetObjectSnapPoints(
              Entity ent,
              ObjectSnapModes mode,
              IntPtr gsm,
              Point3d pick,
              Point3d last,
              Matrix3d view,
              Point3dCollection snaps,
              IntegerCollection geomIds,
              Matrix3d insertion) { }

            public override bool IsContentSnappable(Entity entity)
            {
                return false;
            }
        }

        class IntOverrule : GeometryOverrule
        {
            public override void IntersectWith(
              Entity ent1,
              Entity ent2,
              Intersect intType,
              Plane proj,
              Point3dCollection points,
              IntPtr thisGsm,
              IntPtr otherGsm) { }

            public override void IntersectWith(
              Entity ent1,
              Entity ent2,
              Intersect intType,
              Point3dCollection points,
              IntPtr thisGsm,
              IntPtr otherGsm) { }
        }
    }
}

Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#2 L'utilisateur est en ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8665
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 18 décembre 2013 - 15:26

Hello Gilles

MERCI, je sens que je vais jouer un peu beaucoup avec ton nouveau gadget
avec du MAP 2012/2013/2014 64 bits et en plus sur des GROS fichiers pour voir !
mais malheureusement pas tout de suite ...

Bonnes Fetes et surtout la Sante, Bye, lecrabe
Autodesk Expert Elite Team
0

#3 L'utilisateur est en ligne   lecrabe 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 8665
  • Inscrit(e) : 10-décembre 03
  • LocationLoire (42)

Posté 18 décembre 2013 - 15:39

Hello

Pour Info, avoir une nouvelle case/option dans la grande case de gestion des calques :
OSNAP (ACCROBJ) On/Off fait partie depuis longtemps de la WishList mondiale AutoCAD
MAIS cela n'a jamais ete implemente par Autodesk !

Je me demande pourquoi ??

Cela poserait peut etre qq problemes subtils !?

Bye, lecrabe
Autodesk Expert Elite Team
0

#4 L'utilisateur est hors-ligne   jalna 

  • ceinture noire 4em dan
  • Groupe : Membres
  • Messages : 2408
  • Inscrit(e) : 19-septembre 05
  • LocationMulhouse

Posté 18 décembre 2013 - 16:31

Effectivement très bon programme (surtout accrochage xref)!! attention Autodesk va te piquer ton idée.......
"Je suis fasciné par l'air. Si on enlevait l'air du ciel, tous les oiseaux tomberaient par terre... Et les avions aussi... En même temps l'air tu peux pas le toucher... Ca existe et ça existe pas... Ca nourrit l'homme sans qu'il ait faim... It's magic ! L'air c'est beau en même temps tu peux pas le voir, c'est doux et tu peux pas le toucher... L'air, c'est un peu comme mon cerveau..."J-C Van Damme
Mon forum : http://plexus.forumactif.org/
0

#5 L'utilisateur est hors-ligne   x_all 

  • ceinture rouge et blanche 7em dan
  • Groupe : Membres
  • Messages : 3603
  • Inscrit(e) : 27-juin 06
  • Location04190

Posté 18 décembre 2013 - 17:06

et bien merci et joyeuses fêtes

:)
"La possibilité d'expliquer m'a toujours paru comme la seule excuse à l’existence de la parole"
JL Godard

quelques trucs sur autocad
0

#6 L'utilisateur est hors-ligne   La Lozère 

  • ceinture noire 5em dan
  • Groupe : Membres
  • Messages : 2663
  • Inscrit(e) : 28-juin 06
  • LocationVienne (38) - Etude APA - A480

Posté 18 décembre 2013 - 18:33

Salut,

GRAND MERCI (GILE), avec LayLocSel on obtient quelque chose de fantastique lorsqu'on utilise, comme moi, beaucoup les Xref.

Par contre j'ai un petit bug. J'explique:

Loko-Accrochage activé et xros-Accrochage activé: RAS

Loko-Accrochage désactivé et xros-Accrochage activé: RAS, je n'ai plus l'accroche sur les calques verrouillé

Loko-Accrochage activé et xros-Accrochage désactivé: Bug, plus aucuns accrochages ne marchent, quelque soit l'objet et le calque

Loko-Accrochage désactivé et xros-Accrochage désactivé: RAS, je n'ai plus d'accrochage ni sur les xref ni sur les calques vérouillés

De plus, quand j'ai plusieurs fichier ouvert. Que je fais des réglage dans l'un, pas de soucis ça marche dans l'autre. Mais si je change une variable dans l'autre, voici ce que j'obtiens:
Image IPB

Et tout cas, MERCI

A plus.
www.cad-is.fr
Autocad Map 2018 - Covadis/Autopiste V17.0d - Mensura Genius V8
Nous n’héritons pas de la Terre de nos ancêtres, nous l’empruntons à nos enfants
0

#7 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11277
  • Inscrit(e) : 02-septembre 05

Posté 18 décembre 2013 - 19:15

Merci pour les retours.

J'ai corrigé le bug signalé par La Lozère :

Citation

Loko-Accrochage activé et xros-Accrochage désactivé: Bug, plus aucuns accrochages ne marchent, quelque soit l'objet et le calque

Pour l'autre, je ne comprends pas bien, mais j'ai modifié le code pour que les commandes fonctionnent "par dessin".

Recharger LockOsnap.zip (le lien du premier message est mis à jour), supprimer l'ancien dossier Gile_Lockosnap.bundle et le remplacer par le nouveau.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#8 L'utilisateur est hors-ligne   La Lozère 

  • ceinture noire 5em dan
  • Groupe : Membres
  • Messages : 2663
  • Inscrit(e) : 28-juin 06
  • LocationVienne (38) - Etude APA - A480

Posté 19 décembre 2013 - 07:54

Super, merci.

Petite question, comment peut-on faire en sorte que les bascules passent sur désactivé directement à l'ouverture ou à la création d'un nouveau fichier?

Faut-il passer par AutoCAD.lsp ou acadiso.lsp?

A plus.
www.cad-is.fr
Autocad Map 2018 - Covadis/Autopiste V17.0d - Mensura Genius V8
Nous n’héritons pas de la Terre de nos ancêtres, nous l’empruntons à nos enfants
0

#9 L'utilisateur est hors-ligne   thierry.garré 

  • ceinture rouge et blanche 6em dan
  • Groupe : Moderateurs
  • Messages : 3045
  • Inscrit(e) : 30-juin 04
  • LocationAubenas 07 le pays des Chataignes

Posté 19 décembre 2013 - 20:32

Bravo Gile,


Super Cadeau !


encore Merci
Thierry Garré

Autocad-Autocad Map-Covadis-Autopiste-Infraworks 360- Navisworks -Recap

Mon "autre vie"
La Salamandre - Chambres d'hôtes en Ardèche
0

#10 L'utilisateur est hors-ligne   LUDWIG 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1313
  • Inscrit(e) : 02-novembre 04
  • LocationSALIES DE BEARN

Posté 13 mai 2014 - 09:10

Bonjour,

Je n'arrive pas à installer cette merveille...

Il n'y a a pas d' "install', à part placer le dossier dans le répertoire mentionné ? De fichiers à charger dans autocad ?

J'ai déclaré le répertoire dans les emplacements de recherches de fichiers et les emplacements approuvés mais rien...

Merci pour votre aide
Autocad 2018 - Windows 7
0

#11 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11277
  • Inscrit(e) : 02-septembre 05

Posté 13 mai 2014 - 11:10

Salut,

Normalement, avec AutoCAD 2012 à 2015, il n'y a rien d'autre à faire que de placer le dossier "Gile_LockOsnap.bundle" dans un des dossiers suivant :
  • Pour l'utilisateur courant :
    • %appdata%\Autodesk\ApplicationPlugins\

  • Pour tous les utilisateurs :
    • %allusersprofile%\Autodesk\ApplicationPlugins\ (Windows XP)
    • %programdata%\Autodesk\ApplicationPlugins\ (Windows 7 ou 8)
    • %programfiles%\Autodesk\ApplicationPlugins\


Tous ces dossiers (et leurs sous-dossiers) sont, par défaut, dans les chemins de recherche et dans les emplacements approuvés.
AutoCAD s'occupe du chargement automatique des applications placées dans ces dossiers.

Plus détails sur le mécanisme AutoLoader.

Cette application n'est pas chargée au démarrage, elle n'est chargée qu'au premier appel de la commande LOKO ou XROS.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#12 L'utilisateur est hors-ligne   LUDWIG 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1313
  • Inscrit(e) : 02-novembre 04
  • LocationSALIES DE BEARN

Posté 21 mai 2014 - 14:41

Bonjour,

Pas de changement chez moi...

Appautoload 14

Commande: CHARGEAUTOAPP
Entrez une action de chargement automatique (Autoloader) [Liste/Recharger] <Liste>: l
3 lots d'application chargés.
C:\ProgramData\Autodesk\ApplicationPlugins\Autodesk AppManager.bundle
C:\ProgramData\Autodesk\ApplicationPlugins\Autodesk FeaturedApps.bundle
C:\ProgramData\Autodesk\ApplicationPlugins\Autodesk ImportSkp.bundle

J'ai pourtant mis le package LockOsnap.bundle aussi dans le dossier C:\ProgramData\Autodesk\ApplicationPlugins\ mais rien...
Un paramètre doit bien

Le code que tu donnes dans ton premier message est inclus dans la dll ou il faut le charger quelque part ?

Salutations

Autocad 2018 - Windows 7
0

#13 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11277
  • Inscrit(e) : 02-septembre 05

Posté 21 mai 2014 - 18:56

Comme je le dis juste au dessus : "Cette application n'est pas chargée au démarrage, elle n'est chargée qu'au premier appel de la commande LOKO ou XROS."
Il est donc normal que l'application n'apparaisse pas dans la liste.

As-tu essayé de lancer la commande LOKO, tu devrais avoir : "Accrochages sur les calques verrouillés désactivés." affiché en ligne de commande.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#14 L'utilisateur est hors-ligne   LUDWIG 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1313
  • Inscrit(e) : 02-novembre 04
  • LocationSALIES DE BEARN

Posté 22 mai 2014 - 07:28

Bien sûr, autocad répond "commande inconnue".
Autocad 2018 - Windows 7
0

#15 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11277
  • Inscrit(e) : 02-septembre 05

Posté 22 mai 2014 - 08:06

Essaye de charger la DLL avec NETLOAD ou en exécutant cette expression LISP :
((lambda (filename)
   (if (findfile filename)
     (command "netload" filename)
     (alert "Fichier introuvable")
   )
 )
  (strcat (getenv "appdata")
	  "\\Autodesk\\ApplicationPlugins\\Gile_LockOsnap.bundle\\Contents\\LockOsnap_19.dll"
  )
)


Il se peut que tu aies un message d'erreur du genre :

Citation

Impossible de charger l'assemblage. Détails de l'erreur:
System.IO.FileLoadException: Impossible de charger le fichier ou l'assembly...

Dans ce cas, il faut débloquer les fichiers PackageContents.xml LockOsnap_18.dll et LockOsnap_19.dll.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#16 L'utilisateur est hors-ligne   Raph_38 

  • ceinture noire 1er dan
  • Groupe : Membres
  • Messages : 551
  • Inscrit(e) : 07-août 06
  • LocationGrenoble

Posté 22 mai 2014 - 09:08

Pour ma part, ça fonctionne très bien chez moi ;)
Raph.

Celui qui pose une question est bête 5 minutes, celui qui n'en pose pas l'est toute sa vie !
0

#17 L'utilisateur est hors-ligne   LUDWIG 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1313
  • Inscrit(e) : 02-novembre 04
  • LocationSALIES DE BEARN

Posté 22 mai 2014 - 16:40

Hello !

En essayant NETLOAD, j'avais effectivement un message d'erreur.

J'ai donc débloqué les DLL tel que tu le décrit. Après relance d'autocad, le chargement automatique fonctionne !!

Je n'ai plus qu'a essayé la bête ! Merci (gile).
Autocad 2018 - Windows 7
0

#18 L'utilisateur est hors-ligne   LUDWIG 

  • ceinture noire 2em dan
  • Groupe : Membres
  • Messages : 1313
  • Inscrit(e) : 02-novembre 04
  • LocationSALIES DE BEARN

Posté 03 avril 2015 - 08:13

Hello (Gile)

Est-ce que LOKO et XROS sont censés fonctionnés "tel quel" sur Autocad 2016 ou as tu prévu une nouvelle version prochainement ?

Je pense que tu vas te faire "piquer" le concept par Autodesk un de ces jours, tes commandes sont tellement utiles !

A bientôt
Autocad 2018 - Windows 7
0

#19 L'utilisateur est hors-ligne   (gile) 

  • ceinture rouge et blanche 8em dan
  • Groupe : Moderateurs
  • Messages : 11277
  • Inscrit(e) : 02-septembre 05

Posté 03 avril 2015 - 09:29

Salut,

En l'état, le plug-in ne se chargera pas sur AutoCAD 2016.
Pour un fonctionnement avec A2016, il faut :

- soit recharger le ZIP mis à jour dans le premier message (possiblement le débloquer) et ensuite :
-- soit remplacer tout le dossier Gile_LockOsnap.bundle ;
-- soit remplacer uniquement le fichier PackageContents.xml ;

- soit ouvrir le fichier PackageContents.xml du dossier Gile_LockOsnap.bundle déjà installé dans un éditeur de texte et remplacer : SerieMax="R20.0" par : SerieMax="R20.1" dans le nœud : Components Description="2013 parts"/RuntimeRequirements

Je n'ai fait que quelques tests, mais il ne semble pas y avoir de problèmes avec cette version d'AutoCAD.
Gilles Chanteau - gileCAD -
Développements sur mesure pour AutoCAD
Image IPB
0

#20 L'utilisateur est hors-ligne   Giropode 

  • Advanced Member
  • PipPipPip
  • Groupe : Membres
  • Messages : 45
  • Inscrit(e) : 21-août 15

Posté 26 août 2015 - 10:20

Bonjour bonjour,

Voila des années que je cherche le moyen de désactiver les accrochages objets sur les xrefs et enfin j'ai trouvé ! Merci mille fois !

Cependant, je suis sous AutoCAD 2016 et lorsque je passe à un autre dessin, que j'utilise aussi la commande XROS et que je reviens au premier dessin j'ai le message d'erreur suivant:
Fichier joint  150826-Erreur XROS.png (43,12 Ko)
Nombre de téléchargements : 17

En cliquant sur Ignorer tout rentre dans l'ordre.

Bonne journée et merci encore !
Mon pense bête : Mon blog fourre-tout
Ma bible : Aide AutoCAD
Mon futur calvaire : Revit
0

Partager ce sujet :


  • 2 Pages +
  • 1
  • 2
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)