Demixav Posté(e) le 28 mai 2014 Posté(e) le 28 mai 2014 Bonjour, J'aurai besoin d'identifier, de repérer le sommet le plus bas sur une poly 3D... une solution? J'ai un peu près 900 poly3D et la plupart ont entre 100 et 300 sommets et je dois le faire pour chacune d'entre elles, donc un "peu" fastidieux de les prendre une par une... Pas un ptit LISP qui existe pour ca? genre insertion d'un "repère" sur le point le plus bas d'une poly3D? Merci et bonne journée!Xav AutoCad Map 3D 2011 - Covadis v16.0dWindows 7 - 64b
mathieu Posté(e) le 28 mai 2014 Posté(e) le 28 mai 2014 Essaye avec cette routine de P35 ;; Inserer un texte avec Auto-Increment a chaque sommet (ou vertex) d une Polyligne ;; Par P35 ;; Routine original renommee en TextOnVertexPL (vl-load-com) (defun c:TextOnVertexPL(/ cc haut num pt r) (princ "\nAttention au sens de la polyligne d'AXE!!!") (while (not r) (setq r (getstring T (strcat "\nCalque d Insertion de la Numerotation: <" (setq cc (getvar "clayer")) "> : "))) (cond ((eq r "") (setq r cc) ) ((not (tblsearch "layer" r)) (princ (strcat "\nCalque " r " inexistant.")) (setq r nil) ) ) ) (or (setq num (getint "\nNuméro de depart <1>: ")) (setq num 1) ) (or (setq haut (getreal "\nHauteur du texte <1>: ")) (setq haut 1) ) (and (setq ObjLwHaut (entsel "\nSelectionner l'AXE : ")) (setq ObjLwHaut (entget (car ObjLwHaut))) (eq (cdr (assoc 0 ObjLwHaut)) "LWPOLYLINE") (progn (foreach pt (vl-remove-if-not '(lambda(x)(eq (car x) 10)) ObjLwHaut) (entmake (list (cons 0 "TEXT") (cons 100 "AcDbEntity") (cons 100 "AcDbText") (cons 1 (rtos num 2 0)) (cons 10 (trans (cdr pt) 1 0)) (cons 11 (trans (cdr pt) 1 0)) (cons 8 r) (cons 40 haut) ) ) (setq num (1+ num)) ) ) ) (princ) ) En éspérant que cela te convienne.
Demixav Posté(e) le 28 mai 2014 Auteur Posté(e) le 28 mai 2014 Salut Mathieu! Merci déjà de ta réponse mais j'ai bien tenté de lancer le lisp, mais rien ne se passe! :(J'ai pas de mess d'erreur, mais ca ne donne aucun résultat!J'ai vu que dans la routine, il est noté "attention au sens de la polyligne AXE"... je pense que ta routine est faite pour les poly3D transformé en "axe"! non?De plus, j'aurai du préciser que toutes mes poly3D sont fermées! Bonne journée!Xav AutoCad Map 3D 2011 - Covadis v16.0dWindows 7 - 64b
bonuscad Posté(e) le 28 mai 2014 Posté(e) le 28 mai 2014 Bonjour, J'avais publié déjà ici la même chose avec Z MaxJ'adapte pour Z min (en rajoutant un point au sommet concerné sur chaque polyligne3D ) (vl-load-com) (defun c:min_z ( / js obj ename pr pt lst_pt lst_z id_seg nw_pt) (princ "\nSelectionner les polyligne3D: ") (while (null (setq js (ssget '((0 . "POLYLINE") (-4 . "&") (70 . 8))))) (princ "\nObjets non valable!") ) (repeat (setq n (sslength js)) (setq obj (ssname js (setq n (1- n))) ename (vlax-ename->vla-object obj) pr -1 ) (repeat (if (zerop (vlax-get ename 'Closed)) (1+ (fix (vlax-curve-getEndParam ename))) (fix (vlax-curve-getEndParam ename))) (setq pt (vlax-curve-GetPointAtParam ename (setq pr (1+ pr))) lst_pt (cons pt lst_pt) ) ) (setq lst_z (mapcar 'caddr lst_pt) id_seg (- (length lst_z) (length (member (apply 'min lst_z) lst_z))) ) (setq nw_pt (vlax-invoke (if (eq (getvar "CVPORT") 1) (vla-get-PaperSpace (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) ) 'AddPoint (nth id_seg lst_pt) ) ) (vla-put-Normal nw_pt (vlax-3d-point '(0 0 1))) ) (prin1) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Demixav Posté(e) le 28 mai 2014 Auteur Posté(e) le 28 mai 2014 Salut Bonuscad !!! Un grand merci pour ton aide... exactement ce que je cherchais !!! Nickel !!! :) Où peut on trouver ton lisp pour Z MAX ? Si ca ne te dérange pas bien sûr, ca m'intéresse aussi... ;) Encore merci et bonne fin de journée!Xavier AutoCad Map 3D 2011 - Covadis v16.0dWindows 7 - 64b
bonuscad Posté(e) le 28 mai 2014 Posté(e) le 28 mai 2014 Où peut on trouver ton lisp pour Z MAX ? Si ca ne te dérange pas bien sûr, ca m'intéresse aussi... ;) ICI 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