uisghe Posté(e) le 9 janvier 2006 Posté(e) le 9 janvier 2006 J'ai fait une petite macro pour faire rapidement des miroirs par rapport à un axe vertical/ou horizontal sous Acad2004. (defun c:mv() (command "miroir" (ssget) pause pause "@0,100") (princ)) (defun c:mh() (command "miroir" (ssget) pause pause "@100,0") (princ)) Parfois j'ai un message d'erreur (extrait de la fenêtre de commande): Commande: MV miroir 7 trouvé(s)Choix des objets: 7 trouvé(s)Choix des objets: Spécifiez le premier point de la ligne de symétrie: Spécifiez le deuxième point de la ligne de symétrie: @0,100Les deux points doivent être distincts.; erreur: Fonction annulée J'ai l'impression que ça survient surtout quand je sélectionne une entité avec un type de ligne interrompu (genre axe, pointillé). Qqun aurait-il une idée de la cause et/ou éventuellement de la correction à apporter. [Edité le 9/1/2006 par uisghe]
Tramber Posté(e) le 9 janvier 2006 Posté(e) le 9 janvier 2006 Ce sont tes accrochages aux objets qui ne sont pas désactivés par la routine. Je parie 1 €. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
zebulon_ Posté(e) le 9 janvier 2006 Posté(e) le 9 janvier 2006 Je parie aussi 1€ (defun c:mv(/ OldOS)(setq OldOS (getvar "OSMODE"))(setvar "OSMODE" 0)(command "miroir" (ssget) pause pause "@0,100")(setvar "OSMODE" OldOS)(princ)) C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
bonuscad Posté(e) le 9 janvier 2006 Posté(e) le 9 janvier 2006 Si tu veux garder l'accrochobjet actif durant les "pause" utilise simplement le mode "aucun" ponctuellement avant de fournir "@0,100" Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 9 janvier 2006 Posté(e) le 9 janvier 2006 Salut, Et, quelque soit la méthode choisie pour désactiver l'accrochage aux objets (celle de zebulon_ ou celle de bonuscad) tu n'auras plus besoin de spécifier ton second point à 100 unités du premier : "@0,1" est suffisant. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
CDL Posté(e) le 9 janvier 2006 Posté(e) le 9 janvier 2006 Ce soir je suis en forme, un petite variable a metre dans vos tablettes !(menu options ->préférences utilisateur) Rebcao rajoutera peutetre dans la liste OSNAPCOORD Type : EntierEnregistrée dans : Base de registresValeur initiale : 2 Contrôle si les coordonnées entrées sur la ligne de commande remplacent les accrochages des objets en cours d'exécution. 0 Les paramètres d'accrochage des objets en cours d'exécution remplacent la saisie de coordonnées au clavier. 1 La saisie au clavier remplace les paramètres d'accrochage des objets en cours d'exécution. 2 La saisie au clavier remplace les paramètres d'accrochage aux objets, sauf dans les scripts. quelle vacherie, ça dépent de la taille du réticule et du facteur de zoom !bonne nuit !
uisghe Posté(e) le 10 janvier 2006 Auteur Posté(e) le 10 janvier 2006 Merci à tous pour vos réponses.Je vais donc essayer la méthode de zebulon. @gile, j'ai mis 100 au pif, surtout pour la lisibilité du source.
zebulon_ Posté(e) le 10 janvier 2006 Posté(e) le 10 janvier 2006 Si tu veux conserver l'accrochage aux objets pour la saisie du point de l'axe de symétrie, et l'enlever quand tu fais le @0,100, il vaut mieux laisser tomber les pauses et passer par des variables pour ne désactiver les OSMODE qu'au dernier moment. (defun c:mv(/ OldOS PT1 SS) (setq ss (ssget)) (setq PT1 (getpoint "\nSpécifiez un point de l'axe de symétrie vertical:")) (setq OldOS (getvar "OSMODE")) (setvar "OSMODE" 0) (command "_mirror" ss "" pt1 "@0,100" "_n") (setvar "OSMODE" OldOS) (setq ss nil) (princ) ) Amicalement Zebulon_ [Edité le 10/1/2006 par zebulon_] C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
CADarome Posté(e) le 20 janvier 2006 Posté(e) le 20 janvier 2006 hey les gars... j'veux pas vous contredire...mais ça rien avoir avec les OSMODES... (setq snapang (getvar "SNAPANG")) (defun c:mv() (setvar "SNAPANG" 0) (command "_.mirror" (ssget) "" pause "@0,100" "_N") (setvar "SNAPANG" snapang) (princ) ) (defun c:mh() (setvar "SNAPANG" 0) (command "_mirror" (ssget) "" pause "@100,0" "_N") (setvar "SNAPANG" snapang) (princ) ) Sky is the limit.....Mon oeuil !!
bonuscad Posté(e) le 20 janvier 2006 Posté(e) le 20 janvier 2006 j'veux pas vous contredire...mais ça rien avoir avec les OSMODES... Est tu vraiment sûr de ce que tu avances? :o Désolé car même ton bout de code peut être influencé par OSMODESi à @100,0 ou @0,100 se trouve un objet le point retourné sera différent.J'ai fais un essai et le résultat est erronné, donc j'affirme ;) APERTURE et OSNAPCOORD (comme la déjà fait remarqué CDL) sont à prendre en considération. Car modifier ceux-ci influence le comportement de l'accrochage qui se déroulera de manière diffèrente. NB:Rien à voir, mais le mode 1024 de osmode et parfois déroutant aussi. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
CADarome Posté(e) le 20 janvier 2006 Posté(e) le 20 janvier 2006 Oops...tu as raison bonus CAD...jai mal interprété...désolé... essai ceci alors...qu'i n'affectera pas les OSMODES.. (defun c:mv (/ p1 p2 sel) (setq mx 1) (lets_mirror) ) (defun c:mh (/ p1 p2 sel) (setq mx 0) (lets_mirror) ) (defun lets_mirror () (setq sel (ssget)) (setq p1 (getpoint "Localisation de votre point mirroir...")) (if (= mx 1) (setq p2 (polar p1 (* pi (/ 90 180.0)) 100)) (setq p2 (polar p1 0 100)) ) (command "_.mirror" sel "" p1 p2 "_N") (princ) ) Sky is the limit.....Mon oeuil !!
(gile) Posté(e) le 20 janvier 2006 Posté(e) le 20 janvier 2006 Salut CADarome, Je suis au regret de te dire que çà ne marche pas mieux, j'ai fait un essai. Si l'extrémité d'un objet et située aux alentours de 100 unités (verticalement ou horizontalement) du point spécifié et si l'accrochage aux extrémités est actif le point calculé avec (polar p1 0 100) ou (polar p1 (* pi (/ 90 180.0)) 100)) sera "aimanté" par l'accrochage à l'extrémité (ceci en fonction de APERTURE comme dit plus haut). Comme le rappelle, par exemple Bonuscad ici , seule l'utilisation de entmake (je rajouterais les fonctions VisualLISP, mais çà n'est peut-être pas le propos ici) ne nécessite pas la précaution consistant à désactiver les accrochages aux objets. PS : (* pi (/ 90 180.0)) peut s'écrire aussi (* pi (/ 90 (- 360 180))) mais (/ pi 2) est plus simple ;) Amicalement. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
Tramber Posté(e) le 20 janvier 2006 Posté(e) le 20 janvier 2006 Je sais pas qui va me le donner mon euro ?! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
CADarome Posté(e) le 21 janvier 2006 Posté(e) le 21 janvier 2006 hheeuun !!?? jile... Je n'ai pas essayé le code à vraie dire...cependant je pensais qu'en spécifiant un point exact le OSMODE ne sera pas affecté...hhmmm.... ok alors merci pour les infos...Je tâcherai de fiare les tests avant de poster .... Sky is the limit.....Mon oeuil !!
uisghe Posté(e) le 28 janvier 2006 Auteur Posté(e) le 28 janvier 2006 Bon finalement j'ai appliqué la méthode de Zebulon en la perfectionnant un peu.J'ai découvert (dans l'aide) qu'il suffisait d'ajouter 16384 à la valeur OSmode courante pour le désactiver temporairement (en fait ça fait comme si on appuyait sur F3)ça alourdit un peu le code mais l'avantage c'est quand on interrompt la procédure on a pas perdu ses réglages. Il faut aussi penser à ajouter un test sur la valeur avant de la modifiée pour vérifier que l'utilisateur n'as pas déjà appuyer sur F3 (if (> oldos 16384)... [Edité le 31/1/2006 par uisghe]
Messages recommandés
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 compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant