Aller au contenu

départ polyligne (résolu et même plus...)


Messages recommandés

Posté(e)

Merci (gile), désolé je ne suis pas allé voir cette page avant (pourtant dans mes favoris).

 

Ps : serait il possible de sélectionner le milieu des éléments ?

 

Encore merci.

 

Nicolas.

 

 

[Edité le 14/9/2007 par nicoping28]

Posté(e)

serait il possible de sélectionner le milieu des éléments ?

 

Je vais voir ce que je peux faire, en attendant tu peux toujours utiliser AddVtx (sur la même page) pour ajouter un sommet, puis faire de ce sommet le nouveau départ de la polyligne.

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

Posté(e)

Bonjour (gile),

merci, ça va vraiment me simplifier la vie.

 

Sinon, connais tu un moyen de découper une ellipse , genre de fonction qui divise tout en découpant l'objet.

 

Voilà et si non tant pis et un grand merci.

Posté(e)

Salut,

 

J'ai encore un petit souci avec PlineOrg pour choisir un point départ au milieu d'un segment si celui-ci est un arc, mais avec AddVtx, tu dois pouvoir t'en sotrir.

 

Pour diviser une ellipse (ou un arc elliptique) en n arcs elliptiques de longueurs égales :

 

(defun c:divell	(/ ell div len new par)
 (vl-load-com)
 (vla-StartUndoMark
   (vla-get-ActiveDocument (vlax-get-acad-object))
 )
 (and
   (setq ell (car (entsel "\nSélectionnez une ellipse: ")))
   (setq ell (vlax-ename->vla-object ell))
   (= (vla-get-ObjectName ell) "AcDbEllipse")
   (setq div (getint "\nNombre de divisions: "))
   (    (setq len (/ (vlax-curve-getDistAtParam
	   ell
	   (vlax-curve-getEndParam ell)
	 )
	 div
      )
   )
   (repeat (1- div)
     (setq new	(vla-Copy ell)
    par	(vlax-curve-getParamAtPoint
	  ell
	  (vlax-curve-getPointAtDist ell len)
	)
     )
     (vla-put-EndParameter ell par)
     (vla-put-StartParameter new par)
     (setq ell new)
   )
 )
 (vla-EndUndoMark
   (vla-get-ActiveDocument (vlax-get-acad-object))
 )
 (princ)
) 

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

Posté(e)

Voilà PlineOrg version 2.0, en Visual LISP, avec la possibilité de choisir le nouveau point de départ n'importe où sur la polyligne.

 

;;; PlineOrg (2.0) -Gilles Chanteau- 15/09/07
;;; Change le point de départ de la polyligne fermée
;;; Le nouveau point de départ peut être un situé n'importe où sur la polyligne

(defun c:plineorg (/ erreur os pt pl plst norm nb n blst pa d1 d2 d3)

 (vl-load-com)

 (defun erreur	(msg)
   (if	(= msg "Fonction annulée")
     (princ)
     (princ (strcat "\nErreur: " msg))
   )
   (setvar "OSMODE" os)
   (setq *error* m:err
  m:err	nil
   )
 )

 (setq	m:err	*error*
*error*	erreur
os	(getvar "OSMODE")
 )
 (setvar "OSMODE" 515)
 (if (and
(setq pt
       (getpoint
	 "\nSélectionnez le nouveau point de départ sur la polyligne: "
       )
)
(setq pl (car (nentselp pt)))
(setq pl (vlax-ename->vla-object pl))
(= (vla-get-ObjectName pl) "AcDbPolyline")
(= (vla-get-Closed pl) :vlax-true)
     )
   (progn
     (vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
     (setq plst (vlax-get pl 'Coordinates)
    norm (vlax-get pl 'Normal)
    pt   (trans pt 1 0)
    pa	 (vlax-curve-getParamAtPoint pl pt)
    nb	 (/ (length plst) 2)
    n	 nb
     )
     (repeat n
(setq blst (cons (vla-getBulge pl (setq n (1- n))) blst))
     )
     (if (= pa (fix pa))
(setq n	   (fix pa)
      plst (append (sublist plst (* 2 n) nil)
		   (sublist plst 0 (* 2 n))
	   )
      blst (append (sublist blst n nil) (sublist blst 0 n))
)
(setq n	   (1+ (fix pa))
      d3 (vlax-curve-getDistAtParam pl n)
      d2 (- d3 (vlax-curve-getDistAtPoint pl pt))
      d3 (- d3 (vlax-curve-getDistAtParam pl (1- n)))
      d1 (- d3 d2)
      pt   (trans pt 0 (vlax-get pl 'Normal))
      plst (append (list (car pt) (cadr pt))
		   (sublist plst (* 2 n) nil)
		   (sublist plst 0 (* 2 n))
	   )
      blst (append (list (k*bulge (nth (1- n) blst) (/ d2 d3)))
		   (sublist blst n nil)
		   (sublist blst 0 (1- n))
		   (list (k*bulge (nth (1- n) blst) (/ d1 d3)))
	   )
)
     )
     (vlax-put pl 'coordinates plst)
     (repeat (setq n (length blst))
(vla-setBulge pl (setq n (1- n)) (nth n blst))
     )
     (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)))
   )
   (prompt "\nEntité non valide.")
 )
 (princ)
)

;;; SUBLIST Retourne une sous-liste
;;;
;;; Arguments
;;; lst : une liste
;;; start : l'index de départ de la sous liste (premier élément = 0)
;;; leng : la longueur (nombre d'éléments) de la sous-liste (ou nil)
;;;
;;; Exemples :
;;; (sublist '(1 2 3 4 5 6) 2 2) -> (3 4)
;;; (sublist '(1 2 3 4 5 6) 2 nil) -> (3 4 5 6)

(defun sublist (lst start leng / n r)
 (if (or (not leng) (    (setq leng (- (length lst) start))
 )
 (setq n (+ start leng))
 (repeat leng
     (setq r (cons (nth (setq n (1- n)) lst) r))
   )
)

;; K*BULGE
;; Retourne le bulge proportionnel au bulge de référence
;; Arguments :
;; b : le bulge
;; k : le rapport de proportion (entre les angles ou les longueurs d'arcs)

(defun k*bulge (b k / a)
 (setq a (atan b))
 (/ (sin (* k a)) (cos (* k a)))
) 

 

[Edité le 15/9/2007 par (gile)]

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

Posté(e)

Et bien maintenant je peux prétendre avoir rencontré dieu.

Bon j'en fais trop...

 

Mais bon, ton travail est remarquable, et en plus rapide,

je ne sais que dire si ce n'est un trés trés grand merci.

Posté(e)

Merci pour divmes, mon problème venait surtout des ellipses, car autocad les construit avec un trés grand nombre d'arcs, et la machine (qui plaque le chant pvc sur les panneaux ) ne peut gérer autant d'éléments.(d'où la division en 190 éléments)

Quant au point de départ de la polyligne il correspond également au départ d'usinage. ( défonce et placage )

 

Merci (gile),

 

Nicolas.

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é