stugeol Posté(e) le 21 octobre 2016 Posté(e) le 21 octobre 2016 Bonjour, Je cherche à raccorder deux polyligne avec un arc de 0.25 de rayon. Voici le contexte : dans une routine je décale une polyligne selectionnée avec : (setq selection (entsel)) (setq o (vlax-ename->vla-object (car selection))) (setq o1 (vlax-invoke o 'Offset 0.04)) puis je veux raccorder la dernière polyligne décalée avec une polyligne séléctionnée. Les code suivant ne fonctionnent pas.Sauriez vous pourquoi? Et pourriez vous m'aider à résoudre le probléme? (setq selection (entsel))(setq o (vlax-ename->vla-object (car selection))) (setq o1 (vlax-invoke o 'Offset 0.04))(command "_FILLET" (entlast) (ssget)) (setq selection (entsel))(setq o (vlax-ename->vla-object (car selection))) (setq o1 (vlax-invoke o 'Offset 0.04))(command "_FILLET" (entsel) (entsel)) Les objet se mettent bien en surbrillance, ils sont séléctionnés mais pas de raccord. Et voici le résultat dans la ligne de commande : Commande: (#<VLA-OBJECT IAcadLWPolyline 0000000084483b68>) par contre le code suivant fonctionne si je selectionne les objets (setq selection (entsel))(setq o (vlax-ename->vla-object (car selection))) (setq o1 (vlax-invoke o 'Offset 0.04))(command "_FILLET" (ssget) (ssget)) Cordialement. Petit à petit on devient moins petit
(gile) Posté(e) le 21 octobre 2016 Posté(e) le 21 octobre 2016 Salut, La commande "raccord" "_fillet" attend des points, pas des entités ou des jeux de sélection.Ce qui veut dire que le point cliqué pour sélectionner l'objet importe... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
(gile) Posté(e) le 21 octobre 2016 Posté(e) le 21 octobre 2016 Essaye quelque chose comme ça, c'est brut de décoffrage, ça mériterait des contrôles et de gérer les systèmes de coordonnées (entsel retourne un point dans le SCU, la ligne de commande travaille en SCU aussi et les fonctions vlax-curve* utilisent des poinst SCG). (setq selection (entsel)) (setq o (vlax-ename->vla-object (car selection))) (setq o1 (car (vlax-invoke o 'Offset 0.04))) (setq pt (vlax-curve-getClosestPointTo o1 (cadr selection))) (vl-cmdf "_fillet" pt pause) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
stugeol Posté(e) le 21 octobre 2016 Auteur Posté(e) le 21 octobre 2016 Bonjour Gile, c'est pour cela que ca fonctionne avec deux ssget.si je fais :(command "._FILLET" (ssadd (entlast)) (ssadd (car (entsel)))) je créée un jeux de selection avec (ssadd (entlast)) et un jeux avec (ssadd (car (entsel))) cela ne fonctionne pas. Où est le loupé? Petit à petit on devient moins petit
(gile) Posté(e) le 21 octobre 2016 Posté(e) le 21 octobre 2016 (command "_fillet" (entsel) (entsel))fonctionne aussi, tout comme :(command "_fillet" pause pause)parce qu'il y a intervention de l'utilisateur et que AutoCAD peut récupérer le point cliqué pour la sélection. Mais sans intervention utilisateur, c'est les points qu'il faut passer (ou une donnée qui les contienne).(setq obj1 (entsel "\nPremier objet: ") obj2 (entsel "\nDeuxième objet: ") ) (command "_fillet" (car obj1) (car obj2))ne fonctionne pas, mais(command "_fillet" (cadr obj1) (cadr obj2))fonctionne tout comme :(command "_fillet" obj obj2)parce que obj1 et obj2 contiennent le point utilisé pour la sélection. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD
stugeol Posté(e) le 21 octobre 2016 Auteur Posté(e) le 21 octobre 2016 Je te remercie Gile pour ton aide. Je comprend mieux le disfonctionnement.Bonne fin de soirée. Petit à petit on devient moins petit
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