Aller au contenu

Classement

Contenu populaire

Affichage du contenu avec la meilleure réputation le 24/10/2023 dans Messages

  1. Coucou, Je remarque ici que tu as opté pour l'option de sélectionner l'ensemble des objets (en l’occurrence ici les "INSERT") du dessin pour ensuite vérifier si leur point d'insertion est situé dans ta polyligne. Je pense que tu gagneras fortement en efficacité en complexifiant un peu ta fonction de sélection (ssget). En effet, cette fonction possède de très nombreuse possibilités et notamment les mots clés. Tu as écrit (si tu n'oublies pas l'underscore évidemment) : (ssget "_X" '((0 . "INSERT"))) ce qui se traduit par "sélectionner tout les objets 'INSERT' de la base de donnée du dessin". Or dans ton cas, il serait plus judicieux d'utiliser (ssget "_CP" pt_list '((0 . "INSERT"))) ;; "_CP" = Crossing Polygon (capture polygonale donc un polygone de sélection vert) ;;ou bien (ssget "_WP" pt_list '((0 . "INSERT"))) ;; "_CP" = Window Polygon (fenêtre polygonale donc un polygone de sélection bleu) où 'pt_list' correspond à une liste de coordonnées de points 2D comme ceci par exemple ((23.45 93.01) (-1.00 4.79) (11.15 -13.405)) Autrement dit, fais bien attention au contenu de ta variable 'vertices' et plus exactement à son format ! Car certes c'est une méthode qui semble simple pour récupérer les coordonnées mais en réalité, cela requiert un peu de traitement selon les autres fonctions utilisant ces coordonnées... Normalement tu auras un format comme ceci : (23.45 93.01 -1.00 4.79 11.15 -13.405) Ce qui, comme tu peux le voir, ne correspond pas vraiment à une liste de coordonnées de points 2D. Il existe de nombreuses manières pour récupérer la liste des coordonnées d'une polyligne donc je suis sûre que tu trouveras une solution (car après tout tu sembles être surtout là pour apprendre et non pour recopier). Ainsi, en passant par ces options de sélection ("_CP" ou bien "_WP" selon ton besoin réel) tu peux directement filtrer ta sélection d'objets sur une zone précise de ton dessin, permettant ainsi de ne pas avoir besoin d'étudier les potentiels 10 000 références de blocs contenues dans ton dessin mais de juste se concentrer sur la zone de travail souhaitée (ce qui est beaucoup plus rapide à l'exécution !). Du coup ta fonction (is-point-inside-polyline) n'est plus nécessaire. Ensuite pour la récupération des attributs d'un bloc, je te conseille les fonctions de LeeMac qui sont vraiment simple d'utilisation et assez simple à comprendre (donc pas besoin de réécrire une fonction par toi-même, des fois on peut se servir de ce qui existe déjà et qui fonctionne très bien ;p) : http://www.lee-mac.com/attributefunctions.html Ensuite un conseil, si tu débutes en LISP, peut-être qu'avant d'insérer tes résultats dans un tableau AutoCAD (qui sont des entités complexes à maîtriser) tu devrais essayer de trouver une méthode plus simple pour toi en temps que programmeur. Tu peux facilement créer un fichier .csv par exemple (utilisable par Excel). Ou bien trouver d'autres alternatives. Si tu as besoin de plus de précisions, ou bien d'exemples de programmation plus concrets n'hésites pas à demander ! C'est pour chat qu'on est là, et chat fait toujours plaisir d'aider quelqu'un qui désire apprendre 😜 Bisous, Luna
    1 point
  2. Si tu veux commencer à dessiner en 2D sur le plan d'une vue, une fois la vue définie, tu lances la commande SCU (_UCS), puis l'option Vue. Par exemple, tu te place en vue Avant, tu définis le SCU, et tu peux dessiner la polyligne de contour et les 8 cercles comme dans la vue "Front" de ton image. Tu pourras ensuite extruder chacun des contours puis faire des soustractions et des unions pour arriver au solide désiré.
    1 point
  3. Salut Vitvit, Tu travaille avec uniquement Autocad? Tu as Covadis? (ce serais tellement plus simple) D'une manière simple, tu a la commande Mesurer qui peut bien t'aider. Il y a un intérêt à passer par du LISP?
    1 point
×
×
  • 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é