Aller au contenu

Problème de superposition


Messages recommandés

Posté(e)

Bonjour, :)

J'ai réalisé une succession de layer ayant une altitude différente. Le problème est que lorsque je demande d'afficher tout les layers, AutoCad2000 ne les affiche pas dans le bonne ordre, ce qui fait que certaines couches sont cachées par d'autres. :o

N'y a-t-il pas moyen de définir un ordre d'affichage pour les layers créés?

Merci

;)

Fabrice

Posté(e)

Les calques n'ont pas de propriétés d' altitude. Seuls les objets peuvent se voire affecter un composant Z. D'autre part, la commande ordre d'affichage n'est pas liée à l'altitiude des objets. Si vous avez dessiné des objets à la bonne altitude, quel que soit le calque utilisé, ces objets apparaîtront correctement les uns au-dessus des autres lorsque vous lancez une commande d'affichage caché. La commande ordre d'affichage n'est pas liée à la hauteur en Z des objets.

Posté(e)

:D Salut Fabrice,

 

Patrick t'a bien répondu, mais je crois que tu as mal formulé ta question.

Je pense avoir compris ton problème, en fait tes calques sont classés par contenu d'entité ayant le même Z avec par exemple tes courbes de niveaux et leur aplats (hachures) associé. Comme Autocad affiche dans l'odre de création les aplats, tu te retrouve avec des aplats cachant d'autres aplats créé précedemment.

Il n'y a pas de commande standard pouvant résoudre rapidement ton problème, par contre une routine lisp peut y aider.

 

Bruno

 

Voila le code à placer dans un fichier:

 

(defun oplerr (ch)

(cond

((eq ch "Function cancelled") nil)

((eq ch "quit / exit abort") nil)

((eq ch "console break") nil)

(T (princ ch))

)

(command "_.undo" "_end")

(if (<= sv_und 3) (command "_.undo" "_control" "_one"))

(command "_.undo" "1")

(setq *error* olderr)

(setvar "expert" drap)

(setvar "cmdecho" 1)

(princ)

)

(defun c:ordrecalque ( / plancourplsuiv nompl drap sv_und olderr)

(setvar "CMDECHO" 0)

(setq drap (getvar "expert"))

(setvar "EXPERT" 5)

(if (<= (setq sv_und (getvar "undoctl")) 3)

(command "_.undo" "_control" "_all")

)

(command "_.undo" "_group")

(setq olderr *error* *error* oplerr)

(prompt "\nReinitialise tous les plans dans la vue courante - Patientez S.V.P. !")

(command "_.layer" "_thaw" "*" "_unlock" "*" "_set" "0" "_off" "*" "_on" "0" "")

(setq

plancour (getvar "CLAYER")

plsuiv (tblnext "LAYER" T)

)

(if (setq plsuiv (tblnext "LAYER"))

(setq nompl (cdr (assoc 2 plsuiv)))

(setq nompl "0")

)

(while (/= plancour nompl)

(if (/= plancour nompl)

(command "_.draworder" (ssget "x" (list (cons 8 nompl))) "" "_f")

)

(setq plsuiv (tblnext "LAYER"))

(if (null plsuiv)

(setq plsuiv (tblnext "LAYER" T))

)

(setq nompl (cdr(assoc 2 plsuiv)))

)

(command "_.undo" "_end")

(if (<= sv_und 3) (command "_.undo" "_control" "_one"))

(command "_.undo" "1")

(setq *error* olderr)

(setvar "EXPERT" drap)

(setvar "CMDECHO" 1)

(princ)

)

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Encore moi,

Le Smiley dans le code est INVOLONTAIRE il faut y mettre ":" puis "o", il a étté généré automatiquement par la composition du message.

 

Au fait cette routine classera les calque par ordre de CREATION de ceux ci.

Si ce n'est pas le cas il faudra améliorer le lisp.

 

Bruno

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Effectivement, j'avais mal formulé ma question!

Merci à Bonuscad qui a su me comprendre! ;)

Bon Week-end (un peu à l'avance mais bon...) :cool:

Posté(e)

Bon, je vais vous avouez que je n'ai jamais utilisé de fonction LISP. Bref, je ne sais pas du tout dans quel fichier copier le code et comment faire pour l'utiliser.

J'ai cru que je trouverais la réponse par l'aide mais ... Pas évident! ;)

Thank's

Fabrice

 

Posté(e)

Tu vas dans un répertoire quelconque, mettons c:/tempo/

Tu fais clic droit, nouveau fichier texte, tu nommes le fichier ORDRECALQUE.LSP

Tu fais un copier/coller de tout le texte constituant le programme lisp dans le fichier que tu viens de créer.

Sauvegarder et quitte.

Fais ensuite un glisser/déposer de ce fichier dans un dessin AutoCAD.

Puis tapes la commande ORDRECALQUE

Posté(e)

Je suis désolé mais ça ne fonctionne pas! :(

J'ai suivi les instructions à la lettre mais malheureusement Autocad me dit "commande inconnue" !

Alors bon, ben, étant donné que je ne m'y connais pas...

Mais j'avais aussi une autre question :

Pour écrire une commande lisp, quel language de programmation utilisez-vous?

Fabrice ;)

Posté(e)

La réponse est dans la question?! On écrit une routine Lisp en language Lisp, plus exactement AutoLisp version d'un lisp parmi tant d'autre (Vlisp , CommonLisp etc...)

C'est un language de manipulation de liste (c'est sa grande force), il est connu pour sa syntaxe avec des paranthèses (1 ouvrante pour 1 fermante) qui n'est pas apprécié par des programmeur habitué à un autre language.

 

Pour charger un lisp, la méthode de Patrick est pourtant bonne. Tu peut aussi directement collé dans la ligne de commande d'autocad (tu n'aura pas de sauvegarde du code pour une utilisation ultérieure), et au message commande d'autocad taper ORDRECALQUE.

 

Si tu as créé tes calque dans l'ordre d'accroissement des courbes de niveaux (Ex: 170,180,190,....) la commande devrait convenir a ton problème.

 

NB: la commande ORDRETRACE n'est valable que pour l'état en cours, cet ordre ne sera pas sauvegardé il faudra utiliser la routine a chaque ouverture. :casstet:

Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius

Posté(e)

Bonjour,

La commande est parfaite, un énorme merci (c'était effectivement le o de ordre calque qui devait être un 0!). :)

Les courbes se dessine dans le bon ordre, ça fait plaisir à voir! ;)

J'ai encor juste un problème d'impression; pour imprimer, on est obligé de passer par un autre format et donc obliger d'abord d'exporter le fichier dans un autre programme mais, il y a quelque nuance qu'il "oublie". :o

C'est bizarre parceque le dessin est vraiment sans défaults avant l'exportation et lorsqu'il est transformé, il n'est plus vraiment le même!

Quelqu'un aurait-il une explication à ce phénomène déroutant?

Bonne journée

 

 

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é