fabcad Posté(e) le 26 septembre 2008 Posté(e) le 26 septembre 2008 Aux programmeurs confirmés, je souhaiterais une routine permettant de contrôler et de modifier la largeur globale des lwpolylignes lorsque la largeur du segment de départ et la largeur du segment de fin sont identiques. Exemple :Soit une lwpolyline ayant :- largeur du segment de départ de 9 unités.- largeur du segment de finde 9 unités. d'où affectation d'une valeur de 9 unités à la largeur globale. merci pour vos réponses. Fabcad [Edité le 26/9/2008 par fabcad]
(gile) Posté(e) le 26 septembre 2008 Posté(e) le 26 septembre 2008 Salut, Un petit truc vite fait en "pur AutoLISP". (defun c:plw (/ ss elst wid) (if (setq ss (ssget "_X" '((0 . "LWPOLYLINE")))) (foreach pl (mapcar 'cadr (ssnamex ss)) (setq elst (entget pl)) (if (= (setq wid (cdr (assoc 40 elst))) (if (= 1 (logand 1 (cdr (assoc 70 elst)))) (cdr (assoc 41 (reverse elst))) (cdr (assoc 41 (cdddr (reverse elst)))) ) ) (entmod (append elst (list (cons 43 wid)))) ) ) ) (princ) ) [Edité le 26/9/2008 par (gile)] Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
fabcad Posté(e) le 26 septembre 2008 Auteur Posté(e) le 26 septembre 2008 Merci Gile pour ta réponse mais peux tu renommer ta fonction car AutoCAD utilise déjà ce nom plinewid comme variable. Je teste ta routine sous un autre nom. A+
(gile) Posté(e) le 26 septembre 2008 Posté(e) le 26 septembre 2008 peux tu renommer ta fonction car AutoCAD utilise déjà ce nom plinewid comme variable. C'est fait Je me disais bien en le tapant que ça me disais quelque chose... :P Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
fabcad Posté(e) le 26 septembre 2008 Auteur Posté(e) le 26 septembre 2008 J'ai testé sous MAP 2008 mais il semble que la modification ne soit pas prise en compte. Pourrais-je t'envoyer un extrait de mon fichier ? Merci d'avance. [Edité le 26/9/2008 par fabcad]
(gile) Posté(e) le 26 septembre 2008 Posté(e) le 26 septembre 2008 J'ai corrigé le LISP, il manquait un contrôle sur la fermeture des polylignes.Ça devrait fonctionner maintenant. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
fabcad Posté(e) le 26 septembre 2008 Auteur Posté(e) le 26 septembre 2008 Je ne sais plus quoi dire (Gile) merci Maestro. Bon week-end. Fabcad
(gile) Posté(e) le 26 septembre 2008 Posté(e) le 26 septembre 2008 Le même en Visual LISP, pour comparer/apprendre... (defun c:plw (/ ss sw1 ew1 sw2 ew2) (vl-load-com) (if (setq ss (ssget "_X" '((0 . "LWPOLYLINE")))) (progn (vlax-for pl (setq ss (vla-get-ActiveSelectionSet (vla-get-ActiveDocument (vlax-get-acad-object) ) ) ) (vla-getWidth pl 0 'sw1 'ew1) (vla-getWidth pl (if (= (vla-get-Closed pl) :vlax-true) (1- (fix (vlax-curve-getEndParam pl))) (fix (vlax-curve-getEndParam pl)) ) 'sw2 'ew2 ) (if (= sw1 ew2) (vla-put-ConstantWidth pl ew) ) ) (vla-delete ss) ) ) ) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
fabcad Posté(e) le 8 octobre 2008 Auteur Posté(e) le 8 octobre 2008 hello (gile), Ta fonction s'exécute parfaitement en AutoLISP mais pas en VisualLISP.Serait-il possible de pouvoir faire une sélection manuelle (avec le maintien du filtre) au lieu d'une sélection automatique. Merci encore, Fabcad [Edité le 8/10/2008 par fabcad]
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