Fab Posté(e) le 18 septembre 2003 Posté(e) le 18 septembre 2003 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
Invité Patrick Posté(e) le 18 septembre 2003 Posté(e) le 18 septembre 2003 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.
bonuscad Posté(e) le 18 septembre 2003 Posté(e) le 18 septembre 2003 :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
bonuscad Posté(e) le 18 septembre 2003 Posté(e) le 18 septembre 2003 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
Fab Posté(e) le 19 septembre 2003 Auteur Posté(e) le 19 septembre 2003 Effectivement, j'avais mal formulé ma question!Merci à Bonuscad qui a su me comprendre! ;) Bon Week-end (un peu à l'avance mais bon...) :cool:
Fab Posté(e) le 19 septembre 2003 Auteur Posté(e) le 19 septembre 2003 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'sFabrice
Invité Patrick Posté(e) le 19 septembre 2003 Posté(e) le 19 septembre 2003 Tu vas dans un répertoire quelconque, mettons c:/tempo/Tu fais clic droit, nouveau fichier texte, tu nommes le fichier ORDRECALQUE.LSPTu 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
Fab Posté(e) le 19 septembre 2003 Auteur Posté(e) le 19 septembre 2003 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 ;)
CDL Posté(e) le 19 septembre 2003 Posté(e) le 19 septembre 2003 vérifie la ligne(defun c:crdrecalque ( / plancourplsuiv nompl drap sv_und olderr)ça mache avec LT-Extender
bonuscad Posté(e) le 19 septembre 2003 Posté(e) le 19 septembre 2003 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
Fab Posté(e) le 22 septembre 2003 Auteur Posté(e) le 22 septembre 2003 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
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