nicoping28 Posté(e) le 14 septembre 2007 Posté(e) le 14 septembre 2007 Bonjour, voilà j'aimerais savoir si il existe une commande , ou un lisp qui permet de choisir le point de départ d'une polyligne construite avec la fonction joindre.(sans utiliser la coupure et rejoindre le tout) http://images.imagehotel.net/?06bbcb0c2f.jpg par avance, merci. [Edité le 16/9/2007 par nicoping28]
(gile) Posté(e) le 14 septembre 2007 Posté(e) le 14 septembre 2007 Salut, Regarde PlineOrg sur cette page Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
nicoping28 Posté(e) le 14 septembre 2007 Auteur Posté(e) le 14 septembre 2007 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]
(gile) Posté(e) le 14 septembre 2007 Posté(e) le 14 septembre 2007 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
nicoping28 Posté(e) le 15 septembre 2007 Auteur Posté(e) le 15 septembre 2007 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.
(gile) Posté(e) le 15 septembre 2007 Posté(e) le 15 septembre 2007 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
(gile) Posté(e) le 15 septembre 2007 Posté(e) le 15 septembre 2007 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
nicoping28 Posté(e) le 16 septembre 2007 Auteur Posté(e) le 16 septembre 2007 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.
(gile) Posté(e) le 16 septembre 2007 Posté(e) le 16 septembre 2007 Une routine plus "générique" que DIVELL : DIVMES ici, qui fonctionne avec tout type d'objet curviligne. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
nicoping28 Posté(e) le 17 septembre 2007 Auteur Posté(e) le 17 septembre 2007 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.
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