Rhyuk Posté(e) le 12 janvier 2015 Posté(e) le 12 janvier 2015 Bonjour, Je cherche à avoir une automatisation d'une tache assez simple. Je souhaite juste selectionner toutes les polilygnes d'un calque bien précis et passer leur largeur global à 40. D'après ce que j'ai lu, pour la selection d'objet en particulier il faut obligatoirement passer par du LISP et j'avoue que je ne connais quasiment pas ce language. C'est pour ça que je m'en remet à vous pour cette action simple. Merci d'avance :)
Tramber Posté(e) le 12 janvier 2015 Posté(e) le 12 janvier 2015 Salut,J'ai déplacé ton sujet dans le forum ad hoc. (defun c:maroutine() (routine) ) (defun routine() (if(setq sel (ssget "X" '((0 . "LWPOLYLINE") (8 . "calque en question")))) (command "_pedit" "_m" sel "" "_la" 50 "" )) )Je te propose ce code où tu dois remplacer le nom du calque toujours entre guillemets et la largeur que j'ai mise ici à 50. C'est une base. Tu peux taper MAROUTINE (là aussi le nom se change), qui appelle (routine), syntaxe utilisable mais pas pratique.Dis-nous si tu n'as pas compris. PS : command lance PEDIT avec ses options, mais ici, le _ signifie que j'ai utilisé le nom anglais + les raccourcis anglais. Souci d'universalité. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
-Olivier- Posté(e) le 12 janvier 2015 Posté(e) le 12 janvier 2015 Hello, Pour la version internationale, il faut utiliser (command "_pedit" "_m" sel "" "_wi" 50 "" )). Sinon voici une autre version sans appel à command (defun c:rhyuk (/ ss ent n) (setq ss (ssget "_X" '((0 . "lwpolyline") (8 . "nom_du_calque"))) ;filtre (changer le nom du calaque) n 0) ; compteur n mis à 0 (repeat (sslength ss) ; répété autant de fois qu'il a d'entités dans la sélection (setq ent (ssname ss n)) ; enrgistrement de la n+1 entité de la sélection dans la variable ent (entmod (append (entget ent) '((43 . 40)))) ; modification de l'entité enregistré (setq n (1+ n)) ; ajout de 1 au compteur ) ; fin de la boucle de répétition ) ; fin de la commande Olivier
Rhyuk Posté(e) le 12 janvier 2015 Auteur Posté(e) le 12 janvier 2015 Merci beaucoup je vais tester tout ça :)
Rhyuk Posté(e) le 12 janvier 2015 Auteur Posté(e) le 12 janvier 2015 Alors j'ai testé tout ça. J'ai pris le LISP de Tramber que je comprenais mieux, pas de soucis sur la partie avec PEDIT (vu que je connaissais la fonction). Il m'a juste fallu remplacer _la par _wi comme l'a souligné Olivier. C'est juste la partie selection que j'ai pas bien pigé. Va falloir que je potasse tout ça. Mais en tout cas ça fonctionne. Encore merci =)
-Olivier- Posté(e) le 12 janvier 2015 Posté(e) le 12 janvier 2015 Voici document pour apprendre le lisp de (gile) Regarde page 37,37 et 39.J'ai pris le LISP de Tramber que je comprenais mieuxIl est effectivement plus simple mais je l'avais déjà écris et je n'ai pas pensé à utiliser la commande PEDIT. :D Olivier
Tramber Posté(e) le 12 janvier 2015 Posté(e) le 12 janvier 2015 Oups ! j'avais laissé _la ! au lieu de _w :P Moi qui voulait bien faire ! Je laisse chacun lisant mon message, corriger l'erreur en guise d'exercice B) Pas besoin de faire des boucles sur la sélection, PEDIT possède une option Multiple ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 13 janvier 2015 Posté(e) le 13 janvier 2015 Bonjour il faut obligatoirement passer par du LISPJ'arrive un peu tard mais c'est juste pour indiquer que la commande filtrer (_filter) est très puissante.Voir ce sujet @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Rhyuk Posté(e) le 13 janvier 2015 Auteur Posté(e) le 13 janvier 2015 Merci du conseil Patrick. Je vais me pencher un peu plus sur cette commande _filter alors. Mais est ce qu'elle est utilisable uniquement en ligne de commande ? Puisqu'il me semble que ce n'est pas le cas de SELECTRAP et SELECTSIMILAR.
-Olivier- Posté(e) le 13 janvier 2015 Posté(e) le 13 janvier 2015 Malheureusement non. Elle n'est pas macrotable et ne peux donc pas être utilisée en macro ou sript. C'est pourquoi je n'avais pas mentionné cette possibilité. Sinon, automatiser partiellement ta commande grâce à un filtre préenregistré dans la commande filter puis changant de calque maneullement ou grâce à une macro. Olivier
Rhyuk Posté(e) le 13 janvier 2015 Auteur Posté(e) le 13 janvier 2015 C'est pour ça que je pense m'interesser au LISP qui permet quand même de tout faire (ou presque) sur AutoCAD. En tout cas je pense que ça ne pourra que me servir pour la suite =)
-Olivier- Posté(e) le 13 janvier 2015 Posté(e) le 13 janvier 2015 Pour moi si tu veux commencer le lisp en douceur, le plus simple est de commencer par faire quelques macro en langage lisp. Voir ici Regarde ensuite les différents sujets épinglés en tête de forum "Débuter en lisp". Ainsi le doc de (gile) mentionné plus haut. Bon apprentissage... :) Olivier
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