Aller au contenu

erreur avec commande miroir


uisghe

Messages recommandés

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,100

Les 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]

Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

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 : Entier

Enregistrée dans : Base de registres

Valeur 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 !

Lien vers le commentaire
Partager sur d’autres sites

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)

Lien vers le commentaire
Partager sur d’autres sites

  • 2 semaines après...

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 !!

Lien vers le commentaire
Partager sur d’autres sites

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 OSMODE

Si à @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

Lien vers le commentaire
Partager sur d’autres sites

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 !!

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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 !!

Lien vers le commentaire
Partager sur d’autres sites

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]

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é