Aller au contenu

LISP de selection et de modification


Messages recommandés

Posté(e)

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 :)

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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

Posté(e)

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 =)

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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.

Posté(e)

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

Posté(e)

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 =)

Posté(e)

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

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é