karym Posté(e) le 10 mai 2010 Posté(e) le 10 mai 2010 Bonjour à tous, je tiens tout d'abord à remercier tout ceux qui participent à ce site, c'est vraiment très enrichissant. Je suis novice dans la programation Lisp, je souhaiterai créer une routine en 2 clicks afin de faire un quantitatif de tous les blocks contenus dans un polygone . 1er click : choisir le polygone 2er click : cliquer sur un block BLK-QTE ayant un attribut ATT-QTE, afin de reporter les informations sur ce dernier Ps: actuellement je suis partis dans la piste suivante (ssget "WP"... Merci d' avance
zebulon_ Posté(e) le 11 mai 2010 Posté(e) le 11 mai 2010 Bonjour, le polygone a choisir est une polyligne 2d ? Si oui, peut-on se contenter de récupérer les sommets pour faire le ssget ou est-il possible qu'il y ait des segments courbes ? AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
karym Posté(e) le 11 mai 2010 Auteur Posté(e) le 11 mai 2010 Bonjour Vincent, Je te remercie d'avoir pris la peine de répondre, le polygone est bien en 2D, egalement on peut se contenter des sommets du polygone (je ne recherche pas une très grande précision). CordialementKarym
zebulon_ Posté(e) le 11 mai 2010 Posté(e) le 11 mai 2010 (defun listpt (ptsList / NewList I) (setq I 0) (repeat (/ (length ptsList) 2) (setq NewList (cons (trans (list (nth I ptsList) (nth (+ I 1) ptsList)) 0 1) NewList)) (setq I (+ I 2)) ) (reverse NewList) ) (defun modif_attrib (E ETIQ VALEUR / LATT ATT) (setq LATT (vlax-invoke E 'getAttributes)) (foreach ATT LATT (if (= (strcase (vla-get-TagString ATT)) (strcase ETIQ)) (vla-put-TextString ATT VALEUR) ) ) ) (defun zoom_ent (obj / util obj minpoint maxpoint) (setq util (vla-get-utility (vla-get-activedocument (vlax-get-acad-object) ) ) ) (vla-GetBoundingBox obj 'minpoint 'maxpoint) (setq minpoint (trans (vlax-safearray->list minpoint) 0 1)) (setq maxpoint (trans (vlax-safearray->list maxpoint) 0 1)) (command "_zoom" "_w" "_non" minpoint "_non" maxpoint) ) (defun c:selbloc (/ e lst ss NB BL BLMODEL) (vl-load-com) (setq e (entsel "\nSaisir polyligne :")) (if e (progn (setq e (vlax-ename->vla-object (car e))) (if (= "AcDbPolyline" (vla-get-Objectname e)) (progn (setq BLMODEL (entsel "\nSaisir bloc à compter : ")) (if BLMODEL (progn (setq BLMODEL (vlax-ename->vla-object (car BLMODEL))) (if (= (vla-get-objectname BLMODEL) "AcDbBlockReference") (progn (zoom_ent e) (setq NOMBL (vla-get-name BLMODEL)) (setq lst (listpt (vlax-get e 'coordinates))) (setq ss (ssget "_WP" lst (list '(0 . "INSERT") (cons 2 NOMBL)) ) ) (if ss (progn (setq NB (sslength ss)) (sssetfirst nil ss) ) (setq NB 0) ) (alert (strcat "Il y a " (itoa NB) " blocs " NOMBL)) (setq bl (entsel "\nSélectionner le bloc BLK-QTE : ")) (if bl (progn (setq bl (vlax-ename->vla-object (car bl))) (if (= (vla-get-objectname bl) "AcDbBlockReference") (modif_attrib bl "ATT-QTE" NB) ) ) ) ) ) ) ) ) ) ) ) (princ) ) AmicalementVincent [Edité le 11/5/2010 par zebulon_] C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
lili2006 Posté(e) le 11 mai 2010 Posté(e) le 11 mai 2010 Bonjour à toutes et tous, Pas mal,.. Me fait penser à une autre demande => Gripper depuis la sélection d'un bloc, tous les blocs identiques (quelque soit la valeur du ou des attributs) depuis le choix d'un contour fermé. C'est faisable ? Merci d'avance, ;) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
zebulon_ Posté(e) le 11 mai 2010 Posté(e) le 11 mai 2010 Gripper depuis la sélection avec un (sssetfirst nil ss) tous les blocs identiques en utilisant les possibilités de filtrage du ssget(setq ss (ssget "_WP" lst '((0 . "INSERT") (2 . "NOM_DU_BLOC")))) et il faudrait cliquer au préalable sur un "représentant" des blocs qu'on voudrait comptabiliser pour en récupérer son nom et pouvoir l'injecter dans ssget. Est-ce que j'ai bien compris la demande ? AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
lili2006 Posté(e) le 11 mai 2010 Posté(e) le 11 mai 2010 Re, Je ne suis pas un spécialiste des expressions lisps mais il semble que tu ai bien compris la demande,... et il faudrait cliquer au préalable sur un "représentant" des blocs C'est comme ça que je le voit aussi,... Merci d'avance, Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
karym Posté(e) le 11 mai 2010 Auteur Posté(e) le 11 mai 2010 Bonsoir à tous, Mille merci Vincent, c'est exactement ce que je souhaitais, si je peux t' être utile en quoi que soit, n'hésite pas (pas encore dans la programmation <acronym class=dict title=). A plus Cordialement Karym
zebulon_ Posté(e) le 11 mai 2010 Posté(e) le 11 mai 2010 Re, j'ai changé le lisp pour que cela réponde aux demandes pertinentes de lili... et pour corriger une grossière erreur : il fallait changer les coordonnées générales obtenues par vlax-get coordinates en coordonnées locales avant de les injecter dans (ssget). Sinon, le lisp ne fonctionne bien qu'en SCG. AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
lili2006 Posté(e) le 11 mai 2010 Posté(e) le 11 mai 2010 Re, Super zebulon_,:D Par contre les blocs comptés et sélectionnés varient en fonction du zoom "écran"et non pas seulement du contour de sélection,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
zebulon_ Posté(e) le 11 mai 2010 Posté(e) le 11 mai 2010 Par contre les blocs comptés et sélectionnés varient en fonction du zoom "écran"et non pas seulement du contour de sélection,... Un petit coup de boundingbox pour zoomer sur la polyligne, ça devrait le faire. J'ai modifié le message ci-dessus. AmicalementVincent C'est au pied du mur que l'on reconnaît le maçon ! (Anonyme) C’est en restant au pied du mur qu’on ne voit que le mur (Anonyme aussi)
lili2006 Posté(e) le 12 mai 2010 Posté(e) le 12 mai 2010 Bonjour à toutes et tous, Super ! Merci zebulon_ :P Je vais donc rajouter cette routine à spéciales sélections de (gile), Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/
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