Heureux que cela te plaise,
Mais n'oublions pas que ce code est adapté a ton besoin (fichier exemple), je doute qu'il fonctionne dans n'importe quel cas.
Je répète ce j'ai dit
Si le contour n'est constitué que d'alignement droit, il peut alors être relativement fiable car on peut régler dans le code une valeur du décalage très petite pour pouvoir faire une bonne sélection fenêtre.
Ceci ne sera pas faisable avec des segment d'arc car la routine retournera une serie de point tout les x degré (dans ton cas réglé a 2.5 degré, valeur la plus fine), mais une valeur de décalage petite fera que les segment de la selection par fenêtre couperont le contour initial et la sélection sera mauvaise
Donc dans ce cas la solution est d'aggrandir la valeur de décalage pour que ces segment restent en dehors du contour initial, avec le risque que de petit segment résiduel du coupage (qbrick) reste endehors du contour initial.
Je ne sais pas si tu suit le raisonnement de la procédure, mais le problème est là!
J'ai choisi le code de Bill Zondlo qui génère le même nombre de point quelque soit la grandeur du rayon vu que c'est une résolution angulaire.
Une résolution par distance aurait donné une très grande précision pour les arcs de grand rayon et très mauvaise pour les petits.CQFD
Donc pour un cercle grand ou petit, j'ai 144 points pour définir son contour et les utiliser avec SSGET Fenêtre/Capture ou Trajet.
Pour le calque "M0X$TMP" il peut être purgé sans problème. Il sera recréer par la routine si besoin.
Son utilité est pour pouvoir faire la sélection inverse (c'est à dire du motif extérieur au contour)
Si je ne passais pas par ce calque temporaire, tes motifs précédemment ajustés et toutes autres entités du même calque seraient effacés aussi.
En résumé le motif sélectionné transite temporairement vers ce calque pour ne traiter que celui-ci.
Tu peut introduire le paramètrage dans la routine, mais cela reviendrais au même que les outils express qui demandent la résolution d'ajustement, et je crois me rappeler que justement tu voulais supprimer ce paramètrage.
Donc a toi de régler aux mieux suivant ton besoin.
Rappel, valeur pouvant être modifiées:
Réel (144.0) dans la fonction (defun buble_pts ...) 2 fois
Chaine caractère ("0.05") dans la fonction principale (defun c:miamar ...) pour la ligne (command "_.offset" "0.05".....)
J'espère que j'ai été clair dans mes explications ...?