Aller au contenu

erreur avec commande miroir


Messages recommandés

Posté(e)

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]

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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)

Posté(e)

 

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

Posté(e)

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

Posté(e)

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 !

Posté(e)

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.

Posté(e)

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)

  • 2 semaines après...
Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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

Posté(e)

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]

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é