lecrabe Posté(e) le 7 juillet 2020 Posté(e) le 7 juillet 2020 Hello J ai un Lisp qui fait automatiquement un double Decalage (Gauche - Droite) qui me convient tout a fait ! Mais je desire que les Objets generes soient sur le calque COURANT et non pas sur le Calque d'Origine des objets selectionnes ! Donc SVP j espere que une ame charitable nous donnera la solution !? Je pense que derriere les 2 lignes "vla-offset ..."Il faut recuperer le DERNIER objet dessine et le mettre sur le calque Par Defaut = COURANT !? LA SANTE (Stay Safe), Bye, lecrabe "triste"Automne 2020, la retraite ;; ;; Commande au clavier: dbl_offset ;; Decalage des 2 cotes d un objet ;; et question Effacer oui/non l objet d'origine ;; (vl-load-com) (defun c:dbl_offset ( / val_offset del_ent js ent vla_obj) (initget 6) (setq val_offset (getdist (strcat "\nLargeur totale du Decalage <" (rtos (getvar "USERR1")) "> : "))) (if (not val_offset) (setq val_offset (getvar "USERR1")) (setvar "USERR1" val_offset)) (initget "Oui Non _Yes No") (setq del_ent (if (eq (getkword "\nSupprimer l'entite selectionnée [Oui/Non] <Non> : ") "Yes") T nil)) (while (/= ent "Exit") (setq js (ssadd)) (initget "Sortir _Exit") (while (or (null (setq ent (entsel "\nChoix de l'objet a Decaler de part et d'autre/[sortir] : "))) (/= ent "Exit")) (cond ((not (null ent)) (setq ent (car ent)) (setq vla_obj (vlax-ename->vla-object ent)) (vla-Offset vla_obj (/ val_offset 2.0)) (setq js (ssadd (entlast) js)) (vla-Offset vla_obj (- (/ val_offset 2.0))) (setq js (ssadd (entlast) js)) (if del_ent (entdel ent)) ) ) (initget "Sortir _Exit") ) (if js (sssetfirst nil js)) ) (princ) ) Autodesk Expert Elite Team
Olivier Eckmann Posté(e) le 7 juillet 2020 Posté(e) le 7 juillet 2020 Hello, A l'arrache sans vérif, si tu remplaces la 4ème ligne avant la fin (if js (sssetfirst nil js))par (if js (progn (command "_CHPROP" js "" "_LAYER" (getvar "CLAYER") "") (sssetfirst nil js) ) ) Olivier
lecrabe Posté(e) le 7 juillet 2020 Auteur Posté(e) le 7 juillet 2020 Hello Olivier Merci de ton aide mais j'ai fais "un poil" different !En ajoutant la ligne suivante :(command "_CHPROP" "_L" "" "_LAYER" (getvar "CLAYER") "")Derriere chaque ligne "vla-offset ..." LA SANTE (Stay Safe), Bye, lecrabe "triste"Automne 2020, la retraite Autodesk Expert Elite Team
bonuscad Posté(e) le 7 juillet 2020 Posté(e) le 7 juillet 2020 Ou pour rester élégant, vu que les fonction (vla-...) sont déjà utilisées et ainsi éviter un (command) (vl-load-com) (defun c:dbl_offset ( / val_offset del_ent js ent vla_obj) (initget 6) (setq val_offset (getdist (strcat "\nLargeur totale du décalage <" (rtos (getvar "USERR1")) ">:"))) (if (not val_offset) (setq val_offset (getvar "USERR1")) (setvar "USERR1" val_offset)) (initget "Oui Non _Yes No") (setq del_ent (if (eq (getkword "\nSupprimer l'entité sélectionnée [Oui/Non] <Non>: ") "Yes") T nil)) (while (/= ent "Exit") (setq js (ssadd)) (initget "Sortir _Exit") (while (or (null (setq ent (entsel "\nChoix de l'objet à décaler de part et d'autre/[sortir]: "))) (/= ent "Exit")) (cond ((not (null ent)) (setq ent (car ent)) (setq vla_obj (vlax-ename->vla-object ent)) (vla-Offset vla_obj (/ val_offset 2.0)) (setq js (ssadd (entlast) js)) (vla-put-Layer (vlax-ename->vla-object (entlast)) (getvar "CLAYER")) (vla-Offset vla_obj (- (/ val_offset 2.0))) (setq js (ssadd (entlast) js)) (vla-put-Layer (vlax-ename->vla-object (entlast)) (getvar "CLAYER")) (if del_ent (entdel ent)) ) ) (initget "Sortir _Exit") ) (if js (sssetfirst nil js)) ) (princ) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
lecrabe Posté(e) le 7 juillet 2020 Auteur Posté(e) le 7 juillet 2020 Hello Bruno MERCI MAGNIFIQUE ! Et SVP puis je solliciter une amelioration significative !? A lieu de faire UN CLIC sur chaque objet A DECALER, Ne pourrait on pas faire une selection classique de N objetsET generer les N Doubles Decalages !? ET toujours avec l'option de garder ou pas, les objets de reference ! MERCI d'avance de ton attention, LA SANTE (Stay Safe), Bye, lecrabe "triste"Automne 2020, la retraite Autodesk Expert Elite Team
bonuscad Posté(e) le 7 juillet 2020 Posté(e) le 7 juillet 2020 J'ai essayé d'être le plus large possible aux niveaux du choix des entités, toutes ne supportent (vla-offset)(vl-load-com) (defun c:dbl_offset ( / val_offset del_ent js n vla_obj) (initget 6) (setq val_offset (getdist (strcat "\nLargeur totale du décalage <" (rtos (getvar "USERR1")) ">:"))) (if (not val_offset) (setq val_offset (getvar "USERR1")) (setvar "USERR1" val_offset)) (princ "\nChoix des objets à décaler de part et d'autre") (setq js (ssget (list (cons -4 "<AND") (cons 0 "*POLYLINE,LINE,ARC,CIRCLE,ELLIPSE,XLINE") (cons -4 "<NOT") (cons -4 "&") (cons 70 126) (cons -4 "NOT>") (cons -4 "AND>") ) ) ) (initget "Oui Non _Yes No") (setq del_ent (if (eq (getkword "\nSupprimer l'objet source [Oui/Non] <Non>: ") "Yes") T nil)) (cond (js (repeat (setq n (sslength js)) (setq vla_obj (vlax-ename->vla-object (ssname js (setq n (1- n))))) (vla-Offset vla_obj (* val_offset 0.5)) (vla-put-Layer (vlax-ename->vla-object (entlast)) (getvar "CLAYER")) (vla-Offset vla_obj (- (* val_offset 0.5))) (vla-put-Layer (vlax-ename->vla-object (entlast)) (getvar "CLAYER")) (if del_ent (vla-delete vla_obj)) ) ) ) (princ) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Luna Posté(e) le 7 juillet 2020 Posté(e) le 7 juillet 2020 Hiya, (vl-load-com) (defun c:dbl_offset ( / val_offset del_ent js ent vla_obj jsel i) (initget 6) (setq val_offset (getdist (strcat "\nLargeur totale du décalage <" (rtos (getvar "USERR1")) ">:"))) (if (not val_offset) (setq val_offset (getvar "USERR1")) (setvar "USERR1" val_offset)) (initget "Oui Non _Yes No") (setq del_ent (if (eq (getkword "\nSupprimer l'entité sélectionnée [Oui/Non] <Non>: ") "Yes") T nil)) (if (or (setq jsel (ssget "_I")) (setq jsel (ssget)) ) (progn (repeat (setq js (ssadd) i (sslength jsel)) (setq ent (ssname jsel (setq i (1- i))) vla_obj (vlax-ename->vla-object ent) ) (vla-Offset vla_obj (/ val_offset 2.0)) (setq js (ssadd (entlast) js)) (vla-put-Layer (vlax-ename->vla-object (entlast)) (getvar "CLAYER")) (vla-Offset vla_obj (- (/ val_offset 2.0))) (setq js (ssadd (entlast) js)) (vla-put-Layer (vlax-ename->vla-object (entlast)) (getvar "CLAYER")) (if del_ent (entdel ent)) ) (if js (sssetfirst nil js)) ) ) (princ) ) Permet la pré-sélection si besoin (je ne connais pas la fonction vla-offset donc je ne sais pas comment ça se passe dans le cas d'une sélection d'objets non "décalables") et supprime la question "Sortir ?" :3 Bisous,Luna
lecrabe Posté(e) le 8 juillet 2020 Auteur Posté(e) le 8 juillet 2020 Hello Les Pros du Lisp/VLisp MERCI Beaucoup ! Que la volupte supreme et le bonheur absolu daignent vous honorer ! LA SANTE (Stay Safe), Bye, lecrabe "triste"Automne 2020, la retraite Autodesk Expert Elite Team
ablue1 Posté(e) le 8 décembre 2021 Posté(e) le 8 décembre 2021 Bonjour, Je cherche ce type de fonction pour des Polylignes 3D. Est-ce possible ? Merci
Luna Posté(e) le 9 décembre 2021 Posté(e) le 9 décembre 2021 Coucou, Le soucis c'est que l'on ne peut pas vraiment décaler une polyligne 3D. L'outil DECALER permet uniquement de créer une polyligne 2D coplanaire à une distance spécifique de la première. Dans le cas d'une polyligne 3D, il n'y a pas de notion de coplanéité car un plan est défini par 3 points, or chaque segment de la polyligne appartiennent à leur propre plan et ne sont définis que par 2 points. Donc impossible de "fixer" un plan pour ces segments et donc de les décaler de manière coplanaire (il y a une infinité de plan possible pour chaque segment). Donc je dirais que mathématiquement parlant, il n'est pas possible de DECALER une polyligne 3D. Bisous, Luna
DenisHen Posté(e) le 26 mai 2022 Posté(e) le 26 mai 2022 Salut à la communauté. Et juste un changement de propriété avec (entlast) après la création de chaque parallèle ? Windows 11 / AutoCAD 2024 Sur terre, il y a 10 types de personnes, celles qui comptent en binaire et les autres (developpez.net). Davantage d'avantages, avantagent davantage (Bobby Lapointe). La connaissance s'accroît quand on la partage (Socrate). Tant va la cruche à l'eau que l'habit n'amasse pas mousse avant de l'avoir tué. (Moi)
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