chris_mtp Posté(e) le 19 octobre 2008 Posté(e) le 19 octobre 2008 Bonjour à tous, j'ai ce lisp : (defun c:H_DAL (/ s_osm pt ss)(setq s_osm (getvar "OSMODE"))(if (< s_osm 16385)(setvar "OSMODE" (+ s_osm 16384)))(setq clay (getvar "CLAYER"))(setvar "CLAYER" "HACHURES")(if (setq pt (getpoint "\nSpécifiez le point interne ou : "))(command "_-hatch" "_P" "AR-CONC" "0.02" "0" "_A" "_A" "_Y" "_H" "_Y" "" "_D" "_B" pt "")(if (setqss (ssget'((-4 . "(-4 . "(0 . "POLYLINE")(-4 . "&") (70 . 1)(-4 . "<") (70 . 16)(-4 . "AND>")(-4 . "(0 . "LWPOLYLINE")(-4 . "&") (70 . 1)(-4 . "AND>")(-4 . "(0 . "MLINE")(71 . 3)(-4 . "AND>")(0 . "CIRCLE")(0 . "3DFACE")(-4 . "(0 . "ELLIPSE")(41 . 0)(42 . 6.283185307179586)(-4 . "AND>")(-4 . "(0 . "SPLINE")(-4 . "&") (70 . 1)(-4 . "AND>")(0 . "REGION")(-4 . "OR>"))))(command "_-hatch" "_P" "AR-CONC" "0.02" "0" "_A" "_A" "_Y" "_H" "_Y" "" "_D" "_B" "_S" ss "" "")))(setvar "OSMODE" s_osm)(princ)) Il me permet d'achurer en autre des polylignes 3d fermées dans le calque HACHURES avec le motif AR-CONC.Le problème est que je me trouve avec un dessin autocad avec un peu plus de 3000 polylignes fermées 3d à hachurer. Ces polylignes appartiennent à différents calques donc chacune des entitées de chaque calque doit contenir un motif diiférent. Lorsque j'éxécute ce lisp, à chaque fois je dois sélectionner les polylignes 3d fermées que je veux hachurer.Serait il possible en exécutant ce lisp sous autocad qu'il hachure directement les polylignes 3d fermées appartenant à un calque spécifique et ceci d'une certaine couleur avec un certain type de motif ? J'aimerais simplement savoir en fait quelles sont les lignes de commandes que je dois ajouter dans mon lisp pour avoir sans les sélectionner des hachures de type AR-CONC Echelle 0.02 Couleur 9 qui doivent appartenir au calque HACHURES pour les polylignes 3d fermées d'un calque nommé 'BATIMENT' ? Merci d'avance pour votre aide.Chris_mtp
bonuscad Posté(e) le 19 octobre 2008 Posté(e) le 19 octobre 2008 J'aimerais simplement savoir en fait quelles sont les lignes de commandes que je dois ajouter dans mon lisp pour avoir sans les sélectionner des hachures de type AR-CONC Echelle 0.02 Couleur 9 qui doivent appartenir au calque HACHURES pour les polylignes 3d fermées d'un calque nommé 'BATIMENT' ? Plutôt que d'ajouter, je dirais simplifier. Voici ce que ça pourrait donner, je n'aime pas trop (ssget "_X" qui peut ne pas fonctionner correctement si des entité sont en dehors de l'écran, mais c'était ton désir...Donc si cela ne fonctionne pas bien, essayes en supprimant "_X" (defun c:H_DAL (/ s_osm clay ccol ss) (setq s_osm (getvar "OSMODE")) (setvar "OSMODE" 0) (setq clay (getvar "CLAYER") ccol (getvar "CECOLOR")) (cond ((tblsearch "LAYER" "HACHURES") (setvar "CLAYER" "HACHURES") (setvar "CECOLOR" "9") (if (setq ss (ssget "_X" '((0 . "POLYLINE") (-4 . "[b]<[/b]AND") (-4 . "&") (70 . 8) (-4 . "&") (70 . 1) (-4 . "AND>") (8 . "BATIMENT")))) (command "_-hatch" "_P" "AR-CONC" "0.02" "0" "_A" "_A" "_Y" "_H" "_Y" "" "_D" "_B" "_S" ss "" "") ) )) (setvar "CECOLOR" ccol) (setvar "CLAYER" clay) (setvar "OSMODE" s_osm) (princ) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
chris_mtp Posté(e) le 20 octobre 2008 Auteur Posté(e) le 20 octobre 2008 MERCI Bien Bonuscad. cA marche parfaitementJ'ai pu même le lisp pour l'appliquer sur une autre couche et compléter ma biblio d'hachures automatique. Pour le "_X", ca permet de tout sélectionner les entités d'un même calque.C'est pas mal. Par contre, j'ai une autre question.Pour les clotures par exemple ou les grillages, je dois en fait insérer un bloc 3d sur une polyligne 3d ouverte ou fermée comme en fait la commande mesurer ou diviser d'autocad mais sans devoir spécifier le nom du bloc ni la distance entre chacun des blocs. Je vasi cherché sur Internet si je peux trouver un truc.Merci quand meme pour ton aide. Chris_mtp.
bonuscad Posté(e) le 20 octobre 2008 Posté(e) le 20 octobre 2008 Par contre, j'ai une autre question.Pour les clotures par exemple ou les grillages, je dois en fait insérer un bloc 3d sur une polyligne 3d ouverte ou fermée comme en fait la commande mesurer ou diviser d'autocad mais sans devoir spécifier le nom du bloc ni la distance entre chacun des blocs. Tu pourrais te contenter d'une macro dans un bouton. *^C^C_.measure;\_block;NOMBLOC3D;_yes;2.5; Remplace NOMBLOC3D par le nom de ton bloc et ajuste la longueur à ton gout, ici 2.5La macro est répétitive (à cause de * "l' astérisque" en début) donc "Esc" pour arrêter la macro Tu peux rajouter l'établissement du calque en début et en fin Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
chris_mtp Posté(e) le 26 octobre 2008 Auteur Posté(e) le 26 octobre 2008 C'est sur qu'il est plus simple parfois de passer par des macros que du lisp mais je me suis mis à commencer avec le lisp, je commence un peu à le comprendre. Merci tout de même. C'est bon j'ai pu réaliser un lisp perso qui me lance la commande mesurer et m'insérer un bloc 3d suivant la longueur de la poly3d sélectionnée. Chris_mtp
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