yalta Posté(e) le 8 février 2007 Posté(e) le 8 février 2007 Bonjour, ;) Comment ajouter qq sommets sur une polyligne ( le sujet a déjà été traité mais je ne le retrouve pas... :P :cool: :casstet: ) Merci à vous, Sylvain
je56 Posté(e) le 8 février 2007 Posté(e) le 8 février 2007 avec la commande editer polyligne (pedit) :) eric
yalta Posté(e) le 8 février 2007 Auteur Posté(e) le 8 février 2007 ...mais oui bien sûr... :P :P :P :P :P Merci
(gile) Posté(e) le 13 février 2007 Posté(e) le 13 février 2007 J'ai répondu à une demande similaire ailleurs (mais il voulait une routine), alors je la poste ici aussi. Edit : Nouvelle version, si un sommet est ajouté sur un segment en arc, les deux segments générés sont tangents. ;;; SUBLST Retourne une sous-liste ;;; Premier élément : 1 ;;; (sublst '(1 2 3 4 5 6) 3 2) -> (3 4) ;;; (sublst '(1 2 3 4 5 6) 3 nil) -> (3 4 5 6) (defun sublst (lst start leng / rslt) (if (not ( (setq leng (- (length lst) (1- start))) ) (repeat leng (setq rslt (cons (nth (1- start) lst) rslt) start (1+ start) ) ) (reverse rslt) ) ;; SPLIT-LIST Retourne une liste de sous-listes ;; Arguments ;; - lst : la lste à fractionner ;; - num : un entier, le nombre d'éléments des sous listes ;; Exemples : ;; (split-list '(1 2 3 4 5 6 7 8) 2) -> ((1 2) (3 4) (5 6) (7 8)) ;; (split-list '(1 2 3 4 5 6 7 8) 3) -> ((1 2 3) (4 5 6) (7 8)) (defun split-list (lst n) (if lst (cons (sublst lst 1 n) (split-list (sublst lst (1+ n) nil) n) ) ) ) ;;; Angle2Bulge ;;; Retourne le bulge correspondant à un angle (defun Angle2Bulge (a) (/ (sin (/ a 4.0)) (cos (/ a 4.0))) ) ;;; Ang (defun ang (if (and ( ang (ang ) ) ;;; Clockwisep Retourne T si les points p1 p2 et p3 tournent dans le sens horaire (defun Clockwisep (p1 p2 p3) () ;;; ArcCenterBy3Points ;;; Retourne le centre de l'arc décrit par 3 points (defun ArcCenterBy3Points (p1 p2 p3) ((lambda (mid1 mid2) (inters mid1 (polar mid1 (+ (angle p1 p2) (/ pi 2)) 1.0) mid2 (polar mid2 (+ (angle p2 p3) (/ pi 2)) 1.0) nil ) ) (mapcar '(lambda (x1 x2) (/ (+ x1 x2) 2.0)) p1 p2) (mapcar '(lambda (x1 x2) (/ (+ x1 x2) 2.0)) p2 p3) ) ) ;;; AddVertex ;;; Ajout des sommets à une polyligne (defun c:addvertex (/ pl ob pt pa co no p1 p2 pt ce a1 a2 bu) (while (and (setq pl (entsel "\nSélectionnez le segment auquel rajouter un sommet: ")) (setq ob (vlax-ename->vla-object (car pl))) (= (vla-get-objectName ob) "AcDbPolyline") (setq pa (fix (vlax-curve-getParamAtPoint ob (trans (osnap (cadr pl) "_nea") 1 0) ) ) ) ) (if (setq pt (getpoint (trans (vlax-curve-getPointAtParam ob pa) 0 1) "\nSpécifiez le sommet à ajouter: " ) ) (progn (vla-StartUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)) ) (setq co (split-list (vlax-get ob 'Coordinates) 2) no (vlax-get ob 'Normal) p1 (trans (vlax-curve-getPointAtParam ob pa) 0 no) p2 (trans (vlax-curve-getPointAtParam ob (1+ pa)) 0 no) pt (trans pt 1 no) ce (ArcCenterBy3Points p1 pt p2) ) (if (= 0 (vla-getBulge ob pa)) (setq a1 0.0 a2 0.0 ) (if (clockwisep p1 pt p2) (setq a1 (- (ang a2 (- (ang ) (setq a1 (ang a2 (ang ) ) ) (setq bu (list (cons pa (Angle2Bulge a1)) (cons (1+ (fix pa)) (Angle2Bulge a2) ) ) ) (setq pa (1+ pa)) (setq co (append (sublst co 1 pa) (cons (list (car pt) (cadr pt)) (sublst co (1+ pa) nil) ) ) ) (while ( (setq bu (cons (cons pa (vla-getBulge ob (1- pa))) bu)) ) (vlax-put ob 'Coordinates (apply 'append co)) (mapcar '(lambda (x) (vla-setBulge ob (car x) (cdr x))) bu) (vla-EndUndoMark (vla-get-ActiveDocument (vlax-get-acad-object)) ) ) ) ) (princ) ) [Edité le 10/4/2007 par (gile)] [Edité le 10/4/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 10 avril 2007 Posté(e) le 10 avril 2007 Modification du comportement du LISP ci-dessus quand le sommet est ajouté sur un segment en arc de cercle. En haut avec PEDIT, en bas avec ADDVERTEX http://xs514.xs.to/xs514/07152/pedit2.png [Edité le 10/4/2007 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
kallain Posté(e) le 18 avril 2007 Posté(e) le 18 avril 2007 Super (gile) :) Bravo, ça fait 20 ans que j'attendais ça. le même pour "suppression d'un sommet" mais qui marche , c'est possible ? ;)
(gile) Posté(e) le 23 avril 2007 Posté(e) le 23 avril 2007 le même pour "suppression d'un sommet" mais qui marche , c'est possible ? Voilà, ça semble fonctionner, AddVtx pour ajouter des sommets aux polylignes optimisées ainsi qu'aux polylignes 2D et 3D non lissées ou splinées. DelVtx pour supprimer des sommets. AddVtx&DelVtx, en téléchargement ou encore, sur cette page Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 7 mai 2007 Posté(e) le 7 mai 2007 Hello Comme d'habitude, c parfait ! ADDVERTEX.LSP testée et validée sur MAP 2004 et MAP 2007 :) Par contre il y a un problème de VLA-LOAD sur MAP R6 (ACAD 2002 en fait) Le Decapode (Utilisateur et Testeur Intensif) Autodesk Expert Elite Team
(gile) Posté(e) le 8 mai 2007 Posté(e) le 8 mai 2007 Salut lecrabe, Encore une fois merci pour les tests et surtout les retours :D La version que tu as testée, est-ce celle données plus haut (à laquelle il manque effectivement un (vl-load-com)) ou celle en téléchargement (plus complète : gestion des erreur, fonctionnement avec polylignes 3d, 2d et lw) ? Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 9 mai 2007 Posté(e) le 9 mai 2007 Hello La version de ADDVERTEX testée était celle mentionnée dans CE fil de discussion ! Pourquoi les 2 routines dans TA liste de Lisp sont plus complètes : gestion des erreurs, VLA-LOAD, Polyligne 2D/3D, etc ??? Le Decapode Autodesk Expert Elite Team
(gile) Posté(e) le 9 mai 2007 Posté(e) le 9 mai 2007 Oui, lecrabe. Comme je disais dans la réponse n°6 le LISP en téléchargement est plus complet, avec 2 fonctions : addvtx pour ajouter un sommet et delvtx pour en enlever un. Les deux fonctionnent aussi avec les polylignes 2d et 3d. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 12 mai 2007 Posté(e) le 12 mai 2007 Nouvelle version : correction de dysfonctionnements, amélioration de l'ajout aux extrémités. Les liens sont mis à jour. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
kallain Posté(e) le 25 juin 2007 Posté(e) le 25 juin 2007 citation extraite du message original:le même pour "suppression d'un sommet" mais qui marche , c'est possible ? Voilà, ça semble fonctionner, AddVtx pour ajouter des sommets aux polylignes optimisées ainsi qu'aux polylignes 2D et 3D non lissées ou splinées. DelVtx pour supprimer des sommets. AddVtx&DelVtx, en téléchargement ou encore, sur cette page J'lavais pas vu passer cette réponse :o Merci (gile) PS : Dans la série "On en apprend tous les jours"Plusieurs Lisp dans le même fichier
lucbab Posté(e) le 17 mars 2011 Posté(e) le 17 mars 2011 bonjour à tous,c'est la première fois que je vous contacte ce site est tellement bien fais que je commence a m'intéresser.Mais malheureusement j'ai essayé d'utiliser une lips de giles avec ses explications mais le logicielZWCAD me répond à la commande (ajouter points polyligne réponse: Missing: 1) > que dois faire?me suis tromper quelque part? Merci pour votre compréhension "je débute" malgré mon âge 52 balais, mais il n'est jamais trop tard non? :D
lucbab Posté(e) le 17 mars 2011 Posté(e) le 17 mars 2011 RE :( :D :D :D :D :D J'ai oublieé connaissez-vous un ouvrage sur le langage lips.Y a t-il sur le forum un endroit pour les tous petits débutants?Car je crois que je me suis mis la barre trop haute et j'aimerai progresser assez rapidement dans ce langage et ces possibilitésMerci encore :) :) :) :) :) :) :)
bryce Posté(e) le 27 mars 2011 Posté(e) le 27 mars 2011 Bonjour, j'ai essayé d'utiliser une lips de giles avec ses explications mais le logicielZWCAD me répond à la commande (ajouter points polyligne réponse: Missing: 1) > Comme il y a des différences entre le Lisp d'AutoCAD et celui de ZwCAD, certaines routines nécessitent des modifications pour fonctionner avec ZwCAD. Voici une version de AddVtx et DelVtx modifiée pour ZwCAD:http://www.creao.fr/uploads/lisp/ZwAddVtx&DelVtx.LSP Il reste des bugs sur les polylignes comportant des arcs ou des largeurs non uniformes. :( [Edité le 27/3/2011 par bryce] Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
fabbcad Posté(e) le 5 avril 2011 Posté(e) le 5 avril 2011 Bonjour, je voudrais d'abord remercier Gile pour ce lisp très pratique...Je ne connais pas du tout ce langage de programmation c'est pourquoi je me permets de vous poser la question suivante : J'ai environ 6000 petites polylignes 3D sur lesquelles j'aimerai ajouter des sommets (tout les 1m).Est il possible de modifier le lisp pour pouvoir sélectionner d'un coup toute les polylignes à traiter et automatiser l'ajout de sommet tout les mètres?Quelles seraient les commandes à ajouter? Merci d'avance.Cordialement.
fabbcad Posté(e) le 6 avril 2011 Posté(e) le 6 avril 2011 Hum je me dis que mon message n'est peut être pas si clair finalement... J'aimerai apporter 2 modifications à ce lisp : - la 1ére consiste à automatiquement ajouter un sommet tout les mètres à la polyligne sélectionné - la 2nde consiste à pouvoir sélectionner plusieurs polylignes (ou un calque) pour traiter d'un coup toute les polylignes qu'il contient. Mais comme je en connais pas le lisp je sais pas si c'est faisable... Merci.
bryce Posté(e) le 6 avril 2011 Posté(e) le 6 avril 2011 Bonjour, Comment le Lisp devrait-il choisir à partir de quelle extrémité il faut ajouter les sommets ? Brice, formateur AutoCAD - Inventor - SolidWorks - ZWCad - DraftSight - SketchUp indépendant
fabbcad Posté(e) le 6 avril 2011 Posté(e) le 6 avril 2011 Bonjour Brice, peut importe le tout est de densifier les sommets. Qu'il parte d'une extrémité ou l'autre ne me pose pas de problème.
(gile) Posté(e) le 6 avril 2011 Posté(e) le 6 avril 2011 Salut, Ta demande m'interroge vraiment, d'habitude on cherche plutôt à supprimer les sommets alignés ('inutiles') pour alléger le dessin. Par curiosité, peux tu dire quel en est l'intérêt de ta demande. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
lecrabe Posté(e) le 6 avril 2011 Posté(e) le 6 avril 2011 Hello Si qq'un developpe la routine demandee par notre sympathique Fabcad, je me permet de "refaire" le CDC/CCTP : Sur une selection AutoCAD classique de Polylignes 2D "simples" (voire meme de Polylignes 2D "complexes" et aussi pourquoi pas de 3DPOLY) : Question 1Inserer un nouveau vertex tous les xx.xx unites (Valeur par defaut 1.00) : ?et bien sur on compte a partir de chaque vertex de la polyligne ... Resultat : qq jolis compteurs indiquant - Nombre de polylignes traitables etaient dans la selection- Nombre de polyligne modifiees- Nombre de vertex inseres- Nombre de polylignes NON modifiees En fait ce programme realise une "densification" des polylignes ! Par exemple sur des troncons de canalisation existants, il faudrait un regard tous les 20 metres et malheureusement ce n'est pas le cas ! Bien sur il y a des regards / tampons a chaque vertex existant ! Merci d'avance, Le Decapode Autodesk Expert Elite Team
fabbcad Posté(e) le 6 avril 2011 Posté(e) le 6 avril 2011 @ gile : j'ai des polylignes 3D et je souhaite réaliser à partir de celles ci un MNT sous Mapinfo. Or Mapinfo ne crée un MNT qu'à partir de points. L'idée est donc d'exporter les x,y,z des mes polylignes 3D (avec un certain 3DPOLY2FILE au passage merci...). Mais comme mes sommets ne sont pas très denses le résultat de mon MNT ne me satisfait pas. Par contre si j'arrive à densifier mes polylignes 3D avec des sommets tout les mètres j'aurai à l'export énormément de points et donc un MNT très précis. Voilà pour les raisons.
lecrabe Posté(e) le 6 avril 2011 Posté(e) le 6 avril 2011 Hello Fabcad Ah oui, elle est subtile celle-la ! Densifier des Polylignes 3D pour pouvoir ensuite exporter les vertex XYZ !!et obtenir une sorte de nuage de points 3D ... Mon exemple de Canalisation ou de troncon d'autre chose (Fibre par exemple ou Cana industrielle) s'est deja pose pour moi ! Le Decapode Autodesk Expert Elite Team
fabcad Posté(e) le 6 avril 2011 Posté(e) le 6 avril 2011 Hello Pat Le Décapode, entre fabcad moi-même et fabbcad y a une homonymie :-) Essayant les fonctions addvtx (ajouter) delvtx (supprimer) de Gile, il apparait que delvtx efface les données d'objets d' AutoCAD MAP. Pour Information, Fabrice le futur ex-dessinateur des pompiers. A+
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