Aller au contenu

[Résolu] Raccord _Fillet en lisp


stugeol

Messages recommandés

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

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

Lien vers le commentaire
Partager sur d’autres sites

(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

Lien vers le commentaire
Partager sur d’autres sites

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • Créer...

Information importante

Nous avons placé des cookies sur votre appareil pour aider à améliorer ce site. Vous pouvez choisir d’ajuster vos paramètres de cookie, sinon nous supposerons que vous êtes d’accord pour continuer. Politique de confidentialité