MAC Posté(e) le 2 février 2005 Posté(e) le 2 février 2005 Hello! bonjour à tous et merci pour les précieux conseils que l'on peut glaner sur ce forum.Voilà ma question:Existe t'il un moyen d'inserer un bloc automatiquement sur chaque sommet d'une polyligne.la commande diviser et mesurer n'offre pas cette option.
rebcao Posté(e) le 3 février 2005 Posté(e) le 3 février 2005 Bonjour Mac, bienvenu sur CADxp, la réponse : un programme LISP. Ne t'inquiètes pas tu fera très vite connaissance avec les experts de CADxp dans ce domaine qui ne vont pas tarder à te répondre, mais vu l'heure... il sont encore chez le marchand de sable. Christian Formateur, Consultant Expert AutoCAD, REVIT MEP, INVENTOR, télécharger , des Outils AutoCAD...cad123 @ wanadoo.fr (enlever les espaces de part et d'autre de @)
Patrick_35 Posté(e) le 3 février 2005 Posté(e) le 3 février 2005 Un petit truc vite fait, à adapter selon ses besoins (defun c:blp(/ n nom) (if (setq nom (getstring "\nNom du bloc : ")) (if (tblsearch "block" nom) (progn (princ "\nSélection de la polyligne") (foreach n (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget (car (entsel))))) (entmake (list (cons 0 "INSERT") (cons 2 nom) (cons 10 n) (cons 41 1) ; facteur echelle X = 1 (cons 42 1) ; facteur echelle Y = 1 (cons 43 1) ; facteur echelle Z = 1 (cons 50 0) ; angle de rotation = 0 )) ) ) (princ (strcat "\nBloc " nom " inconnu")) ) ) (princ) ) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 3 février 2005 Posté(e) le 3 février 2005 Patrick m'a devancé, j'allais dire de voir:http://www.cadxp.com/sujetXForum-106.htm et de faire ces 3 lignes:(setq nam_blk (getstring T "\nNom du bloc a insérer: "))(setq l_som (GETVERTICES (car (entsel "\nChoisir la polyligne: "))))(foreach n l_som (command "_.-insert" nam_blk n "" "" "")) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
MAC Posté(e) le 3 février 2005 Auteur Posté(e) le 3 février 2005 :D Merci les gars! z'etes vraiment sympa de répondre aussi vite.j'ai testé c'est de la ball!.ça change des petites macros que j'élabore avec peine dans mon petit laboratoire secret.merci encore!
amachecou Posté(e) le 18 novembre 2015 Posté(e) le 18 novembre 2015 Bonjour, En effet merci pour ce LISP bien efficace. Est-il facilement faisable de rajouter dans le code, à la place de l'angle de rotation "0" du bloc, la rotation équivalente à la bissectrice des segments reliant le sommet. Pour le premier et dernier bloc on aurait la parallèle au seul segment reliant le sommet. Egalement avec ce LISP, si le bloc comporte des attributs, ils bug. De même avec les fonctions Diviser/Mesurer, ce doit être un bug AutoCAD. Mais peut-on le corriger avec le LISP ? Antoine.
bonuscad Posté(e) le 19 novembre 2015 Posté(e) le 19 novembre 2015 Bonjour, Pour l'angle de rotation du bloc, en repartant du code de Patrick_35, on pourrait essayé ceci: (defun c:blp ( / n nom nb ent vlaobj lst) (if (setq nom (getstring "\nNom du bloc : ")) (if (tblsearch "block" nom) (progn (princ "\nSélection de la polyligne") (setq nb 0 ent (car (entsel)) vlaobj (vlax-ename->vla-object ent)) (foreach n (setq lst (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget ent)))) (entmake (list (cons 0 "INSERT") (cons 2 nom) (cons 10 n) (cons 41 1) ; facteur echelle X = 1 (cons 42 1) ; facteur echelle Y = 1 (cons 43 1) ; facteur echelle Z = 1 (cons 50 (if (and (not (zerop nb)) (not (eq (1+ nb) (length lst)))) (+ (* pi 0.5) (* 0.5 (+ (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv vlaobj (1- nb))) (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv vlaobj nb)) ))) (- (angle '(0.0 0.0 0.0) (vlax-curve-getFirstDeriv vlaobj nb)) (* pi 0.5)) ) ) )) (setq nb (1+ nb )) ) ) (princ (strcat "\nBloc " nom " inconnu")) ) ) (princ) ) Pour les attributs cela devient plus compliqué à gérer si le nom du bloc est libre. (il faut savoir le nombre d'attributs à renseigner pou celui-ci) ICI, il y a un exemple de code pour un bloc bien précis (determiné dans le lisp), qui renseigne les attributs. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
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