kclement Posté(e) le 20 mars 2007 Posté(e) le 20 mars 2007 Bonjour, J'ai trouvé un lisp sympa qui permet de creer des hachures solides et séparées sans passer par la boite de dialogue autocad. Je l'ai transformé un chouilla (malgré le peu de connaissances que j'ai en programmation LISP) mais par défaut dans autocad, la variable HPASSOC est à 0, donc je voudrais qu'au début du lisp elle se mette à 1 pour que les hachures soient associatives quelque soit l'ordi sur lequel je vais utiliser le programme. J'ai bien essayé de rajouter une ligne mais ça n'a rien fait... Autre problème : dans le lisp originale les hachures étaient en arrière plan et je voulais pouvoir choisir entre "arrière plan" et "en dessous de l'objet". Je suis parvenue à lui faire demander l'ordre de tracé mais lorsque je lui demande de mettre les hachures "en dessous de l'objet", il me dit : *Sélection non valable*Attend un point ou Fenêtre/Dernier/Capture/BOîte/TOUT/Trajet/SPolygone/CPolygone/Groupe/Ajoute r/Supprimer/Multiple/Précédent/annUler/AUto/uniQueFonction annulée Pourtant il me fait quand même les hachures, et quand je lui demande en "arrière plan" tout va bien...je ne comprends pas ! Voici le programme : [surligneur] (defun c:mh (/ cmdecho ss i ss1 ot rep)(setq cmdecho (getvar "CMDECHO"))(setvar "CMDECHO" 0)(command "_.UNDO" "_Group")(setqss (ssget'((-4 . " (-4 . " (0 . "POLYLINE")(-4 . " (-4 . "&")(70 . 1)(-4 . "<")(70 . 16)(-4 . "AND>")(-4 . "AND>")(-4 . " (0 . "LWPOLYLINE")(-4 . " (-4 . "&")(70 . 1)(-4 . "AND>")(-4 . "AND>")(-4 . " (0 . "MLINE")(-4 . " (-4 . "=")(71 . 3)(-4 . "AND>")(-4 . "AND>")(-4 . " (0 . "CIRCLE")(-4 . "AND>")(-4 . " (0 . "3DFACE")(-4 . "AND>")(-4 . " (0 . "ELLIPSE")(-4 . " (-4 . "=")(41 . 0)(-4 . "=")(42 . 6.283185307179586)(-4 . "AND>")(-4 . "AND>")(-4 . " (0 . "SPLINE")(-4 . " (-4 . "&")(70 . 1)(-4 . "AND>")(-4 . "AND>")(-4 . " (0 . "REGION")(-4 . "AND>")(-4 . "OR>")))i -1ss1 (ssadd)) (initget 1 "a s")(setq rep(getkword"\nOrdre de tracé : Arrière plan (A) ou Sous le contour (S): ")) (if (= rep "s")(progn (setq ot "dessous"))(progn (setq ot "arriere")) ) (repeat (sslength ss)(command "_.-bhatch""_properties""_solid""_select"(ssname ss (setq i (1+ i)))"""")(ssadd (entlast) ss1)) (command "_.draworder" ss1 "" ot)(command "_.UNDO" "_End")(setvar "CMDECHO" cmdecho)(princ))[/surligneur] Bon, entre temps je me suis souvenue que, maintenant, dans la boite de dialogue des hachures, autocad propose justement l'ordre de tracer. Peut-être qu'il est inutile alors de passer par la commande draworder dans le lisp mais je suis bloquée là aussi Help ! Merci d'avance
Bred Posté(e) le 20 mars 2007 Posté(e) le 20 mars 2007 Salut, je voudrais qu'au début du lisp elle se mette à 1au début(setq var_HPASSOC (getvar "HPASSOC"))(setvar "HPASSOC" 1)....à la fin(setvar "HPASSOC" var_HPASSOC) lorsque je lui demande de mettre les hachures "en dessous de l'objet", il me dit : (...)la commande "_.draworder", après avoir signaler que objet tu veux traiter, te demandes de "Sélectionnez les objets de référence:" apès l'option "dessu" .... ce que tu ne fais pas....je choisirais, au lieu des options dessus/dessous Avant ou Arrière .... (en fait tu as déjà choisis arrière, donc change le choix des variables par :(if (= rep "s")(setq ot "avant")(setq ot "arriere"))(tu n'as pas besoin de "prog" quand tu réalises qu'une action après le if) [Edité le 20/3/2007 par Bred] Si vous êtes persuadés de tout savoir sur un sujet, c''est que vous en ignorez quelque chose...
kclement Posté(e) le 20 mars 2007 Auteur Posté(e) le 20 mars 2007 OK, je vais tester ça demain... Merci !
kclement Posté(e) le 21 mars 2007 Auteur Posté(e) le 21 mars 2007 Bon, ça marche ! Merci ! Par contre je n'ai pas compris pourquoi il faut mettre la ligne (setvar "HPASSOC" var_HPASSOC) à la fin du lisp...
stephan35 Posté(e) le 21 mars 2007 Posté(e) le 21 mars 2007 Salut Par contre je n'ai pas compris pourquoi il faut mettre la ligne (setvar "HPASSOC" var_HPASSOC) à la fin du lisp... Tout simplement, tout programme propre doit être propre jusqu'au bout ....On mémorise la variable, on la modifie, puis on la remet comme elle était !!!Simple ! De plus , rajoute : (defun c:mh (/ [surligneur] var_HPASSOC[/surligneur] cmdecho ss i ss1 ot rep) (setq cmdecho (getvar "CMDECHO")) (... A+
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