Aller au contenu

Patrick_35

Membres
  • Compteur de contenus

    6 374
  • Inscription

  • Dernière visite

  • Jours gagnés

    30

Tout ce qui a été posté par Patrick_35

  1. Patrick_35

    premier cours

    Il suffit de mettre ton pdf sur ton site perso, puis d'intégrer un lien sur le prochain post @+
  2. Patrick_35

    nil

    Ou encore faire des tables, des listes sur une variable, mais c'était pour essayer d'être plus clair sur le nil et comme la lumière fût, je m’éclipse @+
  3. Patrick_35

    nil

    Je ne connaissais pas cette subtilité avec les deux pointeurs et j'ai eu entre parenthèse un peu de mal à comprendre, mais je me demande à quoi ça peut servir concrètement. Définir une variable avec deux valeurs en simultanées, autant faire deux variables, mais c'est quand même utile à connaître. Juste une question pour Rimbo, sait-tu à quoi sert une variable ?
  4. Patrick_35

    nil

    Oui, ça veux dire que la variable n'a aucune valeur ou qu'elle n'existe pas Tu peut faire une boucle sur la table des layers par exemple avec un (tblnext "layer") et une fois que tu pointe sur le nil, la boucle est terminé un exemple qui compte le nombre de calques dans un dessin (tblnext "layer" T) ; pointe sur le premier calque (setq tot 0) (while (tblnext "layer") (setq tot (1+ tot)) ) (princ (strcat "\n" (itoa tot) " calques")) (princ) @+
  5. Patrick_35

    Afficher layers

    Tramber à raison, c'est avec le code 8 dans la table de l'objet qu'on connaît le nom du calque. Cette table de l'objet contient tout les éléments ce qui la compose (couleur, calque, coord x y z, etc..) Pour plus d'info concernant ces tables, il faut aller voir au chapitre 6 des références dxf Juste une info, pour la sélection d'un seul objet, il existe aussi la fonction entsel
  6. Patrick_35

    Ce mettre au lisp

    D'accord avec les différents niveaux, apparemment, je dois être un mauvais pédagogue au vu de vos réponses, je pensais avoir été clair et simple :( Labletech, puisque tu fais de la formation, lance par exemple le lundi un sujet avec des exemples et des explications, on donne des réponses pour le mercredi au plus tard, puis on débat des réponses jusqu’au vendredi par exemple Patrick, si tu nous écoute, peut-tu créer une rubrique Apprentissage du lisp
  7. Patrick_35

    Ce mettre au lisp

    Pour Ecotec Je pense avoir compris, je regarde ça demain @+
  8. Patrick_35

    Ce mettre au lisp

    Pour Labletech Ce n'est absolument pas la critique de mon savoir faire comme tu dis (et toutes critiques à du bon dans un sens comme dans l'autre et une marge de progression existe encore), mais le sens du post qui laisse à penser à un je sais tout. Je pense qu’on c’est tout simplement pas compris @+
  9. Patrick_35

    Ce mettre au lisp

    J'ai bien vu, mais je ne comprends pas ce que tu veux ??? @+
  10. Patrick_35

    Ce mettre au lisp

    Ce n'est rien Ecotec, juste une échauffourée, ce sont des choses qui arrivent Pour le poste un peu long, il suffit de faire un copier/coller sur le bloc-notes par exemple, puis le sauvegarder ou à l'imprimer Pour continuer de progresser, il y a peut-être la solution de lancer différents sujets comme une fonction que l'on souhaite acquérir avec les explications du lisp, puis en regardant la source, essayer de comprendre, ou encore de voir avec Patrick si il peut animer ce style de débat @+
  11. Patrick_35

    Ce mettre au lisp

    houla, il ne faut pas mal prendre ma réponse, il est sur Labletech qu'on peut faire le lisp en deux ou trois lignes, je voulais juste montrer qu'il y a une autre manière de faire, et comme c'est pour apprendre, c’est de faire voir différentes fonctions avec des explications dans le cadre de l’exercice. En aucun cas, je n'ai jugé ton lisp. On est là soit pour donner des conseils ou apprendre différentes choses et pas pour commencer à se chamailler
  12. Patrick_35

    Ce mettre au lisp

    Bonjour à tous Passer par les command est une première approche, très bien, mais comme on est là pour apprendre le lisp, autant pousser plus loin et essayer de s'en passer Première chose très importante, les parenthèses vont toujours par paires () il est possible de faire une fonction dans la fonction ex : (setq n (1+ n)), 1+ n permet d'incrémenter de 1 la valeur actuel de n (ex n=10 soit 11 comme résultat) et le setq me permet de stocker dans la variable n Maintenant, pour l'exemple en cours... Je défini déjà le nom de la fonction avec les variables en local (defun c:ex1(/ obj n crea_obj) Je sélection un objet dans le dessin (fonction entsel) et je stocke le résultat dans la variable obj (setq obj (entsel)) Je récupère les valeurs de l'objet (fonction entget) sur la première entrée (fonction car) (setq obj (entget (car obj))) je fixe la variable n à 1 afin de commencer ma futur boucle de copy d'un objet pour éviter de prendre l'identifiant de l'objet sélectionné qui est sur la valeur 0 (setq n 1) je fais ma boucle tant qu'elle n'est pas vide (si (nth n obj)=nil, valeur vide et je sors de la boucle) (while (nth n obj) je crée une liste (fonction append) que je stocke dans la variable crea_obj (setq crea_obj (append crea_obj (list (nth n obj)))) j'incrémente ma variable n afin de passer au suivant (setq n (1+ n)) je termine ma boucle while (pour apparier mes parenthèses) ) je créé maintenant l'objet (entmake crea_obj) J'ai maintenant fait une copie de l'objet sélectionné, reste à lui changer sa couleur Je sélectionne l'objet créé, soit logiquement le dernier dans mon dessin (setq obj (entget (entlast))) Je défini la nouvelle couleur à lui attribuer dans la variable couleur (soit le 1 qui correspond au rouge par exemple) (setq couleur 1) Je regarde si l'objet n'a pas la couleur ducalque (dans ce cas, pas de code 62) (if (not (cdr (assoc 62 obj))) si oui, j'ajoute la couleur à l'objet (setq obj (append obj (list (cons 62 couleur)))) autrement, je lui change sa couleur (fonction subst, changer un élément de la liste) (setq obj (subst (cons 62 couleur) (assoc 62 obj) obj)) je ferme ma condition (fonction if) ) je modifie dans la base l'objet (entmod obj) Je mets à jour à l'écran l'objet (entupd (cdr (assoc -1 obj))) et pour éviter d'avoir un message indésirable, je mets un silence (princ) je ferme ma fonction ex1 ) je mets encore un silence (princ) Soir maintenant la fonction ex1 au complet (ouf...) (defun c:ex1(/ obj n crea_obj) (setq obj (entsel)) (setq obj (entget (car obj))) (setq n 1) (while (nth n obj) (setq crea_obj (append crea_obj (list (nth n obj)))) (setq n (1+ n)) ) (entmake crea_obj) (setq obj (entget (entlast))) (setq couleur 1) (if (not (cdr (assoc 62 obj))) (setq obj (append obj (list (cons 62 couleur)))) (setq obj (subst (cons 62 couleur) (assoc 62 obj) obj)) ) (entmod obj) (entupd (cdr (assoc -1 obj))) (princ) ) (princ) @+
  13. Patrick_35

    Ce mettre au lisp

    C'est vrai que l'idée de l'objectif avec un exemple est loin d'être idiote et je constate qu’apparemment les personnes qui maîtrise le lisp sont des autodidactes, donc à vos bouquins et neurones @+
  14. Et en voici d'autres dans le même style pour les zooms (defun c:za(/ cmd) (setq cmd (getvar "cmdecho")) (setvar "cmdecho" 0) (command "_.zoom" "_p") (setvar "cmdecho" cmd) (princ) ) (defun c:zc(/ cmd) (setq cmd (getvar "cmdecho")) (setvar "cmdecho" 0) (command "_.zoom" "_c") (setvar "cmdecho" cmd) (princ) ) (defun c:zd(/ cmd) (setq cmd (getvar "cmdecho")) (setvar "cmdecho" 0) (command "_.zoom" "_d") (setvar "cmdecho" cmd) (princ) ) (defun c:ze(/ cmd) (setq cmd (getvar "cmdecho")) (setvar "cmdecho" 0) (command "_.zoom" "_e") (setvar "cmdecho" cmd) (princ) ) (defun c:zf(/ cmd) (setq cmd (getvar "cmdecho")) (setvar "cmdecho" 0) (command "_.zoom" "_w") (setvar "cmdecho" cmd) (princ) ) (defun c:zt(/ cmd) (setq cmd (getvar "cmdecho")) (setvar "cmdecho" 0) (command "_.zoom" "_a") (setvar "cmdecho" cmd) (princ) ) (princ) Et encore une pour effacer en une seule commande les derniers éléments (defun c:efd(/ cmd n nb1 sel) (setq cmd (getvar "cmdecho")) (setvar "cmdecho" 0) (command "_undo" "_group") (setq nb (getint "\nCombien à effacer : ")) (if (and nb (> nb 0)) (progn (setq n 1) (while (<= n nb) (setq sel (entlast)) (entdel sel) (setq n (1+ n)) ) ) ) (command "_undo" "_end") (setvar "cmdecho" cmd) (princ) ) @+
  15. Patrick_35

    Ce mettre au lisp

    Bonjour à tous Je pense connaître assez bien le lisp et je veux bien vous donner quelques conseils (valable aussi pour du dcl), et de plus, le forum est aussi là pour ça. Vous pouvez déjà commencer par regarder les pdfs qui se trouvent dans le répertoire d'aide d'autocad qui ont plein d'exemples et permettent justement de bien comprendre les commandes (en anglais :( ) Pour répondre à Rimbo, si il faut apprendre un langage, autant commencer avec le vba, ce ne sera pas plus simple que le lisp, mais il aura l’avantage de pouvoir programmer sur d’autres logiciels et aussi la possibilité de récupérer plus facilement des infos sur divers programmes (des liaisons avec Excel/Autocad par exemple) J'ai remarqué que d'autre personnes connaissent aussi bien le lisp et ont un bon niveau, alors n'hésitez pas, posez vos questions @+
  16. humm, cela reste à voir, il faut faire le test et installer les tools de la 2000 sur la 2004 et voir si ça colle J'ai fais un paquet de lisp sur la version 12 qui ont migrés vers la 2000 sans presque aucune adaptation (seulement une variable nommée T qui est devenue valeur true) @+
  17. Oui, et je n'ai aucun problèmes, il faut juste faire attention à la variable visretain et avoir des dessins bien structurés (géré avec lman) et on peut se servir des filtres de calques @+
  18. Autant en faire un bloc, puis à l'insérer en multiple avec des facteurs d'échelles différents @+
  19. Petit à petit, l'oiseau fait son nid, un jour peut être des formules feront leurs apparitions @+
  20. Patrick_35

    Layer freeze

    Bonjour, J’ai été un peu susceptible sur ce coup là mais on peut lire la réponse de deux manières, enfin le principal est que ça a dépanné @+
  21. Patrick_35

    Layer freeze

    Evidemment quoi ???
  22. Patrick_35

    Mon premier ordinateur

    Et les premiers Amstrad avec le 464, 664 puis 6128 Ah souvenir, souvenir... @+
  23. Patrick_35

    Layer freeze

    Bonjour, Les calques sont peut être inactif ??? Et en faisant un regen, les objets apparaissent-ils ???. Si c'est le cas c'est la variable regenmode à mettre a 1 ou la commande regnauto à rendre active @+
  24. Salut Eric, dommage que tu nous quitte, on regrettera tes interventions qui sont souvent très pertinentes. Bon courage et bonne continuation @+
  25. Patrick_35

    Ctrl C Crtl V

    Bonjour, Il se peut que tu as le même nom des calques entre le dessin d'origine et celui de destination.Si ces calques sont gelés sur le dessin de destination, il est donc tout à fait possible de ne rien voir une fois le ctrl+c fait. @+
×
×
  • 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é