ronsinette Posté(e) le 5 juin 2012 Posté(e) le 5 juin 2012 Bonjour,Je n'ai pas trouvé de réponse dans les post existants alors je me lance.J'ai exporté un shp de point en dxf. J'ai maintenant un dxf où se trouve 880 points.J'aimerais insérer un bloc très simple, sans attribut ni rien (juste un rond noir, ce sont des gares)sur chacun des 880 points en une seule manip.Qq1 aurait il un petit lisp? ou peut être que a existe déjà dans le logiciel mais je n'ai pas trouvé....Je sais qu'avec Covadis on peut le faire seulement voilà, je n'ai pas Covadis, juste Autocad 2012. Merci pour votre aide! Bonne journée
-Olivier- Posté(e) le 5 juin 2012 Posté(e) le 5 juin 2012 Bonjour Ronsinette, Je n'ai pas retrouvé le lisp donc voici un code vite fait. (defun c:inspoint (/ *error echo accro ss1 ent blocname) (defun *error* (errmsg) (setvar "osmode" accro) (setvar "cmdecho" echo) (princ errmsg) ) (setq echo (getvar 'cmdecho) accro (getvar 'osmode)) (setvar "osmode" 0) (setvar "cmdecho" 0) (princ "\n Sélectionnez les points") (setq ss1 (ssget '((0 . "point"))) blocname (cdr (assoc 2 (entget (car (entsel "\n Sélectionnez le bloc"))))) ) (repeat (sslength ss1) (setq ent (ssname ss1 0)) (command "_-insert" blocname (cdr (assoc 10 (entget ent))) "" "" "") (ssdel ent ss1) ) (setvar "osmode" accro) (setvar "cmdecho" echo) (princ) ) Je suis débutant en programmation donc ce lisp n'est pas exempt de défaut.Le bloc doit déjà être présent sur le dessin.Pour un bon fonctionnement, privilégier le scg lors du lancement.Ce lisp ne demande pas les échelles ni l'angle de rotation mais je peux le modifier. Olivier
ronsinette Posté(e) le 5 juin 2012 Auteur Posté(e) le 5 juin 2012 Merci Olivier!Finalement, un collègue m'en a trouvé unsi tu veux comparer je le met en pièce jointeDéroulement du Lisp :- commande : p2b- choisir un bloc (on est obligé de taper le nom exact du bloc, qui doit appartenir au dessin en cours)- sélectionner les points (ou par fenêtre de capture ou faire un sélection rapide avant de lancer le Lisp)- valider (Attention : les points ne sont pas supprimés) Cela m'a l'air d'être un peu comme le tien quant au fonctionnement, non? Bonne journée Bonjour Ronsinette, Je n'ai pas retrouvé le lisp donc voici un code vite fait. (defun c:inspoint (/ *error echo accro ss1 ent blocname) (defun *error* (errmsg) (setvar "osmode" accro) (setvar "cmdecho" echo) (princ errmsg) ) (setq echo (getvar 'cmdecho) accro (getvar 'osmode)) (setvar "osmode" 0) (setvar "cmdecho" 0) (princ "\n Sélectionnez les points") (setq ss1 (ssget '((0 . "point"))) blocname (cdr (assoc 2 (entget (car (entsel "\n Sélectionnez le bloc"))))) ) (repeat (sslength ss1) (setq ent (ssname ss1 0)) (command "_-insert" blocname (cdr (assoc 10 (entget ent))) "" "" "") (ssdel ent ss1) ) (setvar "osmode" accro) (setvar "cmdecho" echo) (princ) ) Je suis débutant en programmation donc ce lisp n'est pas exempt de défaut.Le bloc doit déjà être présent sur le dessin.Pour un bon fonctionnement, privilégier le scg lors du lancement.Ce lisp ne demande pas les échelles ni l'angle de rotation mais je peux le modifier. OlivierLisp P2B.lsp
-Olivier- Posté(e) le 5 juin 2012 Posté(e) le 5 juin 2012 Effectivement très proche. Sélection du nom de bloc différente, et je en vois pas de désactivation de l'accrochage objet (pose problème s'il y a d'autre objets proche des points) Sur le mien, il manque la désactivation de la demande d'attribut.
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