Aller au contenu

Messages recommandés

Posté(e)

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.0d

Windows 7 - 64b

Posté(e)

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.

Posté(e)

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.0d

Windows 7 - 64b

Posté(e)

Bonjour,

 

J'avais publié déjà ici la même chose avec Z Max

J'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

Posté(e)

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.0d

Windows 7 - 64b

Posté(e)
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

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité