Aller au contenu

Mettre des numeros sur des points


serge77

Messages recommandés

Le sujet n'est pas très clair mais c'est pourtant ce à quoi je veux arriver.

 

Salut à tous,

 

Mon problème: Je fais des tracés de circuit de convoyeur. Jusque là pas de probleme.

Une fois que j'ai tracé mon circuit avec une polylignes, je là divise en autant de point que j'ai de charges qui se promènent dessus avec la commande DIVISER.

Je voudrais pouvoir numéroter ces points 1,2,3...

J'espère que c'est possible et que vous allez pouvoir m'aider.

Merci d'avance

 

Lien vers le commentaire
Partager sur d’autres sites

Sinon, tu peux essayer ça (la hauteur du texte est la hauteur de texte courante à l'échelle des cotes courante) :

 

(defun c:incdiv	(/ ent obj long dist nb n AcDoc Space ins txt txtlst)
 (vl-load-com)
 (while (not
   (setq ent (car (entsel "\nSélectionnez l'objet à diviser: ")))
 )
 )
 (setq obj (vlax-ename->vla-object ent))
 (if (vl-catch-all-error-p
(vl-catch-all-apply 'vlax-curve-getEndParam (list obj))
     )
   (prompt "\nL'objet ne peut pas être divisé.*Incorrect*")
   (progn
     (initget 7)
     (setq nb	  (getint "\nEntrez le nombre de segments: ")
    long  (vlax-curve-getDistAtParam
	    obj
	    (vlax-curve-getEndParam obj)
	  )
    dist  (/ long nb)
    n	  0
    AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
    Space (if (= (getvar "CVPORT") 1)
	    (vla-get-PaperSpace AcDoc)
	    (vla-get-ModelSpace AcDoc)
	  )
     )
     (vla-StartUndoMark AcDoc)
     (repeat nb
(setq
  ins (vlax-curve-getPointAtDist obj (* dist (setq n (1+ n))))
)
(vla-addPoint Space (vlax-3d-point ins))
(setq txt
       (vla-addText
	 space
	 (itoa n)
	 (vlax-3d-point
	   (polar ins
		  (/ pi 4)
		  (* (getvar "TEXTSIZE") (getvar "DIMSCALE") 0.2)
	   )
	 )
	 (* (getvar "TEXTSIZE") (getvar "DIMSCALE"))
       )
)
(setq txtlst (cons txt txtlst))
[surligneur];;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;; Aligne le texte sur la polyligne
(vla-Rotate
  txt
  (vlax-3d-point ins)
  (angle '(0 0 0)
	 (vlax-curve-getFirstDeriv
	   obj
	   (vlax-curve-getParamAtPoint obj ins)
	 )
  )
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;[/surligneur]
     )
     (if (= (vla-get-closed obj) :vlax-true)
(vla-put-TextString (car txtlst) "0")
     )
     (initget "Oui Non")
     (if (= "Oui" (getkword "\nInverser le sens ? : "))
(foreach tx txtlst
  (vla-put-TextString
    tx
    (itoa (rem (- nb (atoi (vla-get-TextString tx))) nb))
  )
)
     )
     (if (and (= (vla-get-closed obj) :vlax-true)
       (setq dep
	      (car
		(entsel
		  "\nSélectionnez un chiffre pour le nouveau de départ (ou ENTER): "
		)
	      )
       )
       (member (setq txt (vlax-ename->vla-object dep)) txtlst)
  )
(progn
  (setq dif (- nb (atoi (vla-get-TextString txt))))
  (foreach tx txtlst
    (vla-put-TextString
      tx
      (itoa (rem (+ dif (atoi (vla-get-TextString tx))) nb))
    )
  )
)
     )
     (vla-EndUndoMark AcDoc)
   )
 )
 (princ)
)

 

si tu préfères que le texte ne soit pas orienté le long de l'objet, supprime la partie [surligneur]surlignée[/surligneur]

 

[Edité le 20/10/2006 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Merci gile ton lisp marche nickel. Et en enlevant les espaces, le premier aussi.

 

Juste un point: sur une polyligne fermée comment choisir le point de départ et le sens de rotationde l'incrémentation.

 

Dernière chose, aquoi correspond la valeur LUPREC dans le premier lisp

 

[Edité le 20/10/2006 par serge77]

 

[Edité le 20/10/2006 par serge77]

Lien vers le commentaire
Partager sur d’autres sites

Juste un point: sur une polyligne fermée comment choisir le point de départ et le sens de rotationde l'incrémentation.

Le point de départ est le point de départ de la polyligne quand elle a été créée, on pourrait le modifier, mais ça n'est pas si simple.

Pour le sens de l'incrémentation, je pourrais modifier le LISP pour que l'incrémentation démarre du point le plus proche du point de sélection (si j'ai le temps) en attendant tu peux inverser l'ordre des sommets de la polyligne avec r_pline.

 

Dernière chose, aquoi correspond la valeur LUPREC dans le premier lisp

La variable système LUPREC stocke le nombre décimales affichées pour les unités de longueur.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

salut,

 

l'invite : "spécifiez un chiffre pour le nouveau départ" est mal formulée, j'aurais dû écrire : "Sélectionnez un chiffre pour le nouveau départ". Il faut sélectionner à l'écran le chiffre qui deviendra le nouveau N° 0.

 

Je pourrais mettre le départ à 1, mais celà suppose de traiter différemmment les polylignes ouvertes et fermées. J'essaye de voir ça (si j'ai le temps).

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

Voici une nouvelle version, avec le point de départ en N°1 et le point de fin des polylignes ouvertes en N°n+1 pour n divisions.

 

(defun c:incdiv	(/ ent obj long dist nb n AcDoc Space ins txt txtlst)
 (vl-load-com)
 (while (not
   (setq ent (car (entsel "\nSélectionnez l'objet à diviser: ")))
 )
 )
 (setq obj (vlax-ename->vla-object ent))
 (if (vl-catch-all-error-p
(vl-catch-all-apply 'vlax-curve-getEndParam (list obj))
     )
   (prompt "\nL'objet ne peut pas être divisé.*Incorrect*")
   (progn
     (initget 7)
     (setq nb	  (getint "\nEntrez le nombre de segments: ")
    long  (vlax-curve-getDistAtParam
	    obj
	    (vlax-curve-getEndParam obj)
	  )
    dist  (/ long nb)
    n	  -1
    AcDoc (vla-get-ActiveDocument (vlax-get-acad-object))
    Space (if (= (getvar "CVPORT") 1)
	    (vla-get-PaperSpace AcDoc)
	    (vla-get-ModelSpace AcDoc)
	  )
     )
     (vla-StartUndoMark AcDoc)
     (repeat (if (= (vla-get-closed obj) :vlax-true)
	nb
	(1+ nb)
      )
(setq
  ins (vlax-curve-getPointAtDist obj (* dist (setq n (1+ n))))
)
(vla-addPoint Space (vlax-3d-point ins))
(setq txt
       (vla-addText
	 space
	 (itoa (1+ n))
	 (vlax-3d-point
	   (polar ins
		  (/ pi 4)
		  (* (getvar "TEXTSIZE") (getvar "DIMSCALE") 0.2)
	   )
	 )
	 (* (getvar "TEXTSIZE") (getvar "DIMSCALE"))
       )
)
(setq txtlst (cons txt txtlst))
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;;;;;;;
;;; Aligne le texte sur la polyligne
(vla-Rotate
  txt
  (vlax-3d-point ins)
  (angle '(0 0 0)
	 (vlax-curve-getFirstDeriv
	   obj
	   (vlax-curve-getParamAtPoint obj ins)
	 )
  )
)
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
     )
     (initget "Oui Non")
     (if (= "Oui" (getkword "\nInverser le sens ? : "))
(foreach tx txtlst
  (vla-put-TextString
    tx
    (if	(= (vla-get-closed obj) :vlax-true)
      (itoa
	(1+ (rem (- nb (atoi (vla-get-TextString tx)) -1) nb))
      )
      (itoa (- nb (atoi (vla-get-TextString tx)) -2))
    )
  )
)
     )
     (if (and (= (vla-get-closed obj) :vlax-true)
       (setq dep
	      (car
		(entsel
		  "\nSélectionnez un chiffre pour le nouveau de départ (ou ENTER): "
		)
	      )
       )
       (member (setq txt (vlax-ename->vla-object dep)) txtlst)
  )
(progn
  (setq dif (- nb (atoi (vla-get-TextString txt))))
  (foreach tx txtlst
    (vla-put-TextString
      tx
      (itoa (1+ (rem (+ dif (atoi (vla-get-TextString tx))) nb))
      )
    )
  )
)
     )
     (vla-EndUndoMark AcDoc)
   )
 )
 (princ)
) 

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

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é