Aller au contenu

Messages recommandés

Posté(e)

Salut à tous !

 

Je cherche une routine LISP qui pour chaque calque présent dans un  fichier pourrait dupliquer une présentation "Modele" contenant une fenêtre et un texte simple.
La fenêtre n'afficherai qu'un seul calque par présentation, le nom de l'onglet ainsi que le texte de chaque serait le nom du calque.

Vous auriez ceci en stock ?
J'ai fait quelques recherches sans succès et j'ai même essayer de passer par nos amis les IA pour coder cette routine mais ça n'a jamais fonctionné ...

 

Merci à tous pour l'aide !

AutoCAD Map 3D 2026
Covadis 18.3d + AutoPiste
Windows 11 Famille v.24H2 - 64 bits

Toujours à l'affût des bonnes astuces

Posté(e)

Bonjour @CTZen

par nos amis les IA, c'est une vraie fausse bonne idée et qui plus et j'ignorais le potentiel amical de ces tyrans du marketing.

Revenons à la question :

n'afficherait qu'un seul calque par présentation, on parle de présentation (ONGLET) ou de fenêtre de présentation (FMULT) ?

L'idéal serait un DWG avec les phases avant/après apparentes et là, on connaitrait le but à atteindre.

Amicalement (de la part d'un humain)

Éternel débutant…
Mon site perso : Programmer dans AutoCAD

 

Posté(e)

Merci pour ta réponse ami humain ! 😁

Oui nous parlons bien de ONGLET et de FMULT
En gros pour mon sujet j'ai un fichier avec 
- calque 1
- calque 2
- calque 3
etc...

Et j'aimerai dupliquer une présentation (ONGLET) "Modele" qui contient une fenêtre (FMULT) ainsi qu'un texte (TEXT)
de façon a ce que chaque présentation n'affiche qu'un seul calque.

Dans le fichier joint en exemple, j'ai un onglet MODELE et 5 calques dans le fichier.
En gros je cherche à automatiser la création des onglets Calque1, Calque2, Calque3, ... 

 

Exemple.dwg

AutoCAD Map 3D 2026
Covadis 18.3d + AutoPiste
Windows 11 Famille v.24H2 - 64 bits

Toujours à l'affût des bonnes astuces

Posté(e)

Bonjour @CTZen,

 

Essaie avec ça 

(defun C:CTZEN ( / bFirst oLayer sLayerName)
  (setq bFirst T)
  (while (setq oLayer (tblnext "LAYER" bFirst))
    (if bFirst (setq bFirst nil))
    (setq sLayerName (cdr (assoc 2 oLayer)))
    (if (/= sLayerName "0")
      (progn
	(command "-PRESENTATION" "C" "MODELE" sLayerName)
	(setvar "CTAB" sLayerName)
	(command "ESPACEO")
	(command "fcalque" "g" "*" "" "li" sLayername "" "")
	(command "ESPACEP")
	(setvar "TILEMODE" 1)
      )
    )
  )
)
  

Olivier

  • Upvote 1
Posté(e)

Bonjour @CTZen

Voici ma proposition :

;; gc:lst2str de Gilles CHANTEAU, merci à lui.
;; Concatène une liste de chaînes et un séparateur en une chaine
;; Arguments : lst : la liste // sep : le séparateur
(defun gc:lst2str (lst sep)
  (apply 'strcat
	 (cons (car lst)
	       (mapcar (function (lambda (x) (strcat sep x))) (cdr lst))
	 )
  )
)
(defun c:ctzen ( / calq temp lstcal lsttemp)
  (setvar "clayer" "0")
  (setq calqo (getvar "clayer"))
  (setq calq (list (cdr (assoc 2 (tblnext "LAYER" T)))))
  (while (setq tempo (tblnext "LAYER"))
    (setq calq (append (list (cdr (assoc 2 tempo))) calq))
    )
  (setq lstcal (cdr (reverse calq)))
  (setq n -1)
  (repeat (length lstcal)
    (setq calq (nth (setq n (1+ n)) lstcal))
    (setq lsttemp (gc:lst2str (vl-remove calq lstcal) ","))
    (command "_layout" "_c" "MODELE" calq)
    (command "_ctab" calq)
    (command "espaceo")
    (command "_VPLAYER" "_F" lsttemp "c" "")
    (command "espacep")
    (setvar "clayer" calq)
    (command "_text" '(12 184) "5" "0" calq)
    (setvar "clayer" calqo)
    )
  (command "_ctab" "MODELE")
  )

2025-03-21_14-21-21.thumb.gif.e63d1c6ed02210b797a81989cf275081.gif

  • Upvote 1

Éternel débutant…
Mon site perso : Programmer dans AutoCAD

 

Posté(e)

Bonjour Olivier !

@Olivier Eckmann @didier
MERCI 1000 FOIS pour votre aide inestimable ! Ca fonctionne d'enfer et en plus c'est super rapide !

Quand je pense que nos amis IA me proposait des LISP de plus de 120 lignes ... et que vos 2 propositions font le travail PARFAITEMENT en seulement une trentaine de ligne ...

 

AutoCAD Map 3D 2026
Covadis 18.3d + AutoPiste
Windows 11 Famille v.24H2 - 64 bits

Toujours à l'affût des bonnes astuces

Posté(e)

Voilà une petite amélioration qui permet de ne gérer que les calques avec un filtre qui est demandé au lancement de la commande.

Pour le texte j'ai utilisé le champ ctab qui fait le taff !

 

Encore Merci messieurs !

(defun C:1pres1lay ( / bFirst oLayer sLayerName pattern layersToProcess)
  ;; Merci Didier et Olivier Heckmann @CadXP pour la réalisation de ce lisp
  ;;---------------------------------------------------------------------------
  ;; Demander le motif de filtre à utiliser
  (setq pattern (getstring T "\nEntrez le motif de filtre (ex: MUR* ou * pour tous): "))
  
  ;; Si aucun motif n'est fourni, utiliser "*" (tous les calques)
  (if (= pattern "") (setq pattern "*"))
  
  ;; Collecter d'abord tous les calques correspondant au filtre
  (setq layersToProcess '())
  (setq bFirst T)
  (while (setq oLayer (tblnext "LAYER" bFirst))
    (if bFirst (setq bFirst nil))
    (setq sLayerName (cdr (assoc 2 oLayer)))
    
    ;; Ne traiter que les calques qui correspondent au motif et qui ne sont pas "0"
    (if (and (/= sLayerName "0") (wcmatch sLayerName pattern))
      (setq layersToProcess (cons sLayerName layersToProcess))
    )
  )
  
  ;; Maintenant, traiter chaque calque de la liste
  (foreach sLayerName layersToProcess
    (progn
      (command "-PRESENTATION" "C" "MODELE" sLayerName)
      (setvar "CTAB" sLayerName)
      (command "ESPACEO")
      ;; Geler uniquement les autres calques du filtre, pas tous les calques
      (foreach otherLayer layersToProcess
        (if (/= otherLayer sLayerName)
          (command "fcalque" "g" otherLayer "" "li" sLayerName "" "")
        )
      )
      (command "ESPACEP")
      (setvar "TILEMODE" 1)
    )
  )
  (princ)
)

AutoCAD Map 3D 2026
Covadis 18.3d + AutoPiste
Windows 11 Famille v.24H2 - 64 bits

Toujours à l'affût des bonnes astuces

Posté(e)

Je pense que le vibe-coding va être inévitable. 

Perso j'utilise beaucoup les IA pour pas mal de sujet, dont le code (python principalement).
Je travaille cependant beaucoup le code pour le comprendre et pouvoir l'adapter et le maitriser, apprendre.

Mais beaucoup ne font pas ça. 

Pour le LISP comme mon cerveau fait visiblement une allergie a son fonctionnement (pour le moment). J'ai donc tenté le vibe ... sans succès.

Puis c'est comme le No-Code ... ceux qui ont déjà codé comprenne vite la limite.

Et pour en revenir aux IA ... je vois ça comme l'invention de la visseuse dans une industrie qui utilisais que des tourne-vis.
C'est un outil qu'il faut apprendre à utiliser pour ne pas être dépassé. 

AutoCAD Map 3D 2026
Covadis 18.3d + AutoPiste
Windows 11 Famille v.24H2 - 64 bits

Toujours à l'affût des bonnes astuces

Posté(e)

Concernant l'IA, je suis assez sceptique. Aujourd'hui les personnes qui utilisent l'IA de manière un peu réfléchie, elles l'utilisent dans des domaines qu'il connaissent bien et donc ils sont capables de juger l'IA et l'utiliser pour ce qu'elle vaut.

Si je reprends ton exemple de la vis. Si un ouvrier utilise un tournevis et demande à l'IA quels outils il peut utiliser pour faire sont travail. L'IA lui répond un tournevis, une visseuse ou un marteau. OK, le tournevis il l'utilise déjà, la visseuse c'est génial, il va gagner du temps, un marteau, c'est débile (une hallucination d'IA).

Imaginons maintenant une personne qui n'y connais rien et n'a jamais vissé une vis de sa vie, L'IA lui donne les mêmes 3 réponses. Jamais il ne sera capable de dire que le marteau est une mauvaise réponse et risque de l'utiliser pour enfoncer sa vis...

J'ai très peur que dans les années à venir, à l'école et en formation professionnelle, on apprenne aux gens comment ils doivent construire un prompt pour que l'IA ait le plus de chance de leur donner une réponse satisfaisante, mais en contre partie, on ne leur apprendra pas comment contrôler ce que la machine va sortir.

Et là on va droit dans le mur.

C'est déjà le cas aujourd'hui, où on apprend aux élèves à utiliser un logiciel, mais pas le métier qui va derrière. Donc tant que l'ordi dit que tout va bien, tant mieux, mais si l'ordinateur dit qu'il y a  une erreur, presque personne ne sait pourquoi, ni comment la corriger.

Il ne faut pas rester sur le quai et laisser passer le train de l'IA, mais beaucoup de ceux qui sont monter risquent quand même de se crasher assez fort 🙂 

 

Posté(e)
Citation

Il ne faut pas rester sur le quai et laisser passer le train de l'IA, mais beaucoup de ceux qui sont monter risquent quand même de se crasher assez fort 🙂

Attachez vos ceintures !


Je te rejoins totalement. l'IA est un outil a utiliser avec discipline et un esprit critique !

AutoCAD Map 3D 2026
Covadis 18.3d + AutoPiste
Windows 11 Famille v.24H2 - 64 bits

Toujours à l'affût des bonnes astuces

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é