Aller au contenu

zebulon_

Membres
  • Compteur de contenus

    1 489
  • Inscription

  • Dernière visite

  • Jours gagnés

    19

Tout ce qui a été posté par zebulon_

  1. Merci mes amis ! La louange vaut ce que vaut celui qui la décerne. Et comme je vous tiens tous en très haute estime, elle n'en a que plus de valeur à mes yeux. Amicalement Vincent
  2. Bonsoir Vous trouverez ici tous les outils que j'utilise pour faire des plans de ferraillage, ainsi que quelques exemples de plans. J'ai fait un menu qui donne accès à chaque module. C'est du lisp/dcl compilé en vlx. Comme j'ai été sollicité par ailleurs et si ça peut intéresser du monde, j'ai fait une qui montre comment ça marche. Merci à tous ceux, ils se reconnaitront, qui ont participé indirectement à ce projet en répondant à mes questions et en mettant des lignes de code à disposition sur CADXP. Il y a encore du travail pour améliorer mais, pour l'instant, ça me convient pour mon travail quotidien. Il y a sans doute mieux, mais c'est plus cher ! Amicalement Vincent
  3. J'ai utilisé cette figure de style ? Dans l'affirmative, c'est à l'insu de mon plein gré ! Sombre clarté - Silence assourdissant sont des exemples d'oxymores. Je pensais plutôt à des synonymes quand j'ai écrit ce que j'ai écrit. Amicalement Vincent
  4. zebulon_

    Attention

    Bonjour, La langue française, de celles que je maitrise, c'est sans doute la plus compliquée. Mais ce n'est pas une excuse pour ne pas respecter ses règles. Je fais aussi des fautes, mais j'essaie de limiter... J'essaie de différencier être et avoir, faire attention aux pluriels, différencier les verbes du premier groupe à l'infinitif et au participe passé, de respecter la conjugaison des verbes du troisième groupe, d'accorder en genre et en nombre, etc... Pour ma culture générale, est-ce qu'il y a une épreuve de français pour devenir fonctionnaire ? Si oui, elle consiste en quoi ? Amicalement Vincent
  5. Avec les fonctions vlisp ça marche aussi, mais ce n'est pas plus simple. En même temps, c'est difficile de faire plus simple que deux lignes de code. (setq hh (car (entsel))) (setq obj (vlax-ename->vla-object hh)) (vla-put-patternscale obj 2) Ici aussi, on dispose de la fonction vla-get Amicalement Vincent
  6. Bonjour, c'est curieux en effet ! Essaie ceci : (setq hh (car (entsel))) (setpropertyvalue hh "PatternScale" 2) Bien entendu, on dispose aussi du getpropertyvalue Amicalement Vincent Ah, trop tard, Didier a déjà répondu.
  7. zebulon_

    Attention

    Bonjour, eh bien, j'ai les yeux qui saignent. J'ai toujours souffert d'un complexe d'infériorité parce que le français n'est pas ma langue maternelle, mais là, je n'ai qu'un mot à dire : merci ! Je n'ai plus de complexe à avoir, mes amis ! Car, comme on dit, quand je me regarde, je me désole ; quand je me compare, je me console. Bon, ce n'est pas terrible comme point de vue, je vous l'accorde, car c'est se dire qu'on est assez bien parce qu'on peut toujours trouver pire. Amicalement Vincent
  8. zebulon_

    Textmask

    C'est justement ce qu'on veut éviter de faire à chaque fois qu'on crée un texte ou une ligne de repère multiple, puisque, et le problème est là à mon avis, la présence ou non d'un masque d'arrière plan et l'écart correspondant ne sont sauvegardés ni dans un style de texte ni dans un style de ligne de repère multiple. Alors que dans un style de cote, on peut activer ou non le masque d'arrière plan (mais pas définir l'écart...) C'est pas génial ! Amicalement Vincent
  9. zebulon_

    Textmask

    très juste, le DXF 45 pour un MTEXT. Pour un MLEADER, il s'agit du DXF 141 Amicalement Vincent
  10. zebulon_

    Textmask

    Ici ? Amicalement Vincent
  11. C'est bien ça, cela prend le texte jusqu'à rencontrer le code ascii 92, en supposant que le texte aura toujours cette forme. S'il n'y a qu'une seule ligne, cela ne marchera pas en l'état actuel du code. c'est le (getvar "DWGPREFIX") qui nous permet de disposer de cette information. Compte tenu que CadXP était plus ou moins en panne ces derniers jours et que nous avons déjà communiqué par mail par le passé, j'ai estimé que c'est ce qu'il fallait faire ! Amicalement Vincent
  12. (defun MsgBox (Titre Bouttons Message / Reponse WshShell) ; Valeur de Bouttons ; 0 = vbOKOnly Affiche le bouton OK uniquement. ; 1 = vbOKCancel Affiche les boutons OK et Annuler. ; 2 = vbAbortRetryIgnore Affiche le bouton Abandonner, Réessayer et Ignorer. ; 3 = vbYesNoCancel Affiche les boutons Oui, Non et Annuler. ; 4 = vbYesNo Affiche les boutons Oui et Non. ; 5 = vbRetryCancel Affiche les boutons Réessayer et Annuler. ; 16 = vbCritical Affiche l'icône Message critique. ; 32 = vbQuestion Affiche l'icône Requête d'avertissement. ; 48 = vbExclamation Affiche l'icône Message d'avertissement. ; 64 = vbInformation Affiche l'icône Message d'information. ; 0 = vbDefaultButton1 Le premier bouton est le bouton par défaut. ; 256 = vbDefaultButton2 Le deuxième bouton est le bouton par défaut. ; 512 = vbDefaultButton3 Le troisième bouton est le bouton par défaut. ; 768 = vbDefaultButton4 Le quatrième bouton est le bouton par défaut. ; 0 = vbApplicationModal Boîte de dialogue modale. L'utilisateur doit répondre au message affiché dans la zone de message avant de pouvoir continuer de travailler dans l'application en cours. ; 4096 = vbSystemModal Modal système. Toutes les applications sont interrompues jusqu'à ce que l'utilisateur réponde au message affiché dans la zone de message. ; Valeur renvoyée ; 1 = vbOK OK ; 2 = vbCancel Annuler ; 3 = vbAbort Abandonner ; 4 = vbRetry Réessayer ; 5 = vbIgnore Ignorer ; 6 = vbYes Oui ; 7 = vbNo Non (setq WshShell (vlax-create-object "WScript.Shell")) (setq Reponse (vlax-invoke WshShell 'Popup Message 0 Titre (itoa Bouttons))) (vlax-release-object WshShell) Reponse ) (defun c:savedxf (/ txt) (vl-load-com) (setq txt (car (entsel "\nSélectionner le titre : "))) (setq txt (cdr (assoc 1 (entget txt)))) (setq txt (substr txt 1 (vl-string-position 92 txt))) (setq txt (strcat (getvar "DWGPREFIX") txt ".dxf")) (if (findfile txt) (if (= (msgbox "Fichier existant" (+ 4 48 256) (strcat "Ecraser " txt " ?")) 6) ;; 4 affiche boutons oui non + 48 icone message d'avertissement + 256 non par défaut (command "_SaveAs" "_DXF" "_v" "2013" "_o" (ssget) "" "" txt "_y") ;; si oui j'écrase, sinon rien ) (command "_SaveAs" "_DXF" "_v" "2013" "_o" (ssget) "" "" txt) ;; le fichier n'existe pas, je le crée ) (princ) ) finalement, je n'utilise que les options de la commande saveas, qu'on peut aussi voir sur la ligne de commande en basculant la variable filedia à 0. Ne pas oublier de la remettre à 1 quand on a fini d'explorer les différentes options disponibles en ligne de commande. Amicalement Vincent
  13. j'ai oublié de préciser qu'il faut absolument respecter la casse dans "DefaultFormatForSave", sinon le getenv ne trouve rien ! Amicalement Vincent
  14. Bonjour, la variable qui gère le format d'enregistrement s'appelle DefaultFormatForSave. L'idée c'est de faire un lisp qui récupère le format courant en faisant (setq oldSaveFormat (getenv "DefaultFormatForSave")) puis on définit qu'on veut sauvegarder en dxf 2013, ce qui correspond au code 61 (setenv "DefaultFormatForSave" "61") Puis on enregistre en faisant le (command "_saveas" ...) après avoir pioché le nom de fichier dans le texte et après avoir vérifié que le fichier n'existe pas déjà. Puis on remet la variable d'environnement à sa valeur initiale (setenv "DefautFormatForSave" oldSaveFormat) Faut encore trouver le nom de la variable qui gère la possibilité d'enregistrer une partie du dessin Amicalement Vincent
  15. Bonjour, la commande "enregistrer sous" avec l'option "sélectionner" et le type de fichier au format dxf, comme tu le fais, mais dans un lisp qui te demandes au préalable de cliquer sur un texte qui te donnera le nom du fichier et c'est le lisp qui choisit les options de la commande saveas Un truc comme ça ? Amicalement Vincent
  16. et à l'époque on fumait encore sur le lieu de travail. Pour certains, le plumier qui équipait la table à dessin servait de cendrier ! Quand tu entrais dans le bureau de dessin, il y règnait une sorte de brouillard... C'était vraiment pénible pour les non-fumeurs... Sinon, la table à dessin avait ça de pratique qu'on pouvait la mettre à la verticale et se planquer derrière pour roupiller, quand la veille tu avais fait un peu trop la fête ! Amicalement Vincent
  17. Super, ce qui est encore un peu faiblard c'est le peu de test qui est effectué par le lisp. Est-ce que l'utilisateur, ce blaireau, saisit bien un bloc quand il faut saisir un bloc et des textes quand il faut saisir des textes ? Cela risque de se planter à chaque erreur de clic. Amicalement Vincent
  18. C'est un peu similaire à un dictionnaire. L'avantage comme évoqué, c'est qu'on peut ajouter ou supprimer des clés sans le lisp par la commande PROPDESS. L'inconvénient, a priori (je n'ai pas essayé !), c'est que les clés ne peuvent être que du texte. Il faudrait donc, si j'ai raison, toujours y penser quand on veut gérer d'autres types de données. Les ldata dont je parle plus haut ne présentent pas cet inconvénient (data : tout type de donnée LISP !), mais ne sont exploitables que par LISP. Amicalement Vincent
  19. Bonjour, l'appui sur la barre d'espace relance la dernière commande et évite de retaper à chaque fois la commande précédente, quelle qu'elle soit, y compris un lisp. Mais, si j'ai bien compris la demande, une boucle while devrait pouvoir nous aider et faire "tourner" le lisp tant qu'on clique sur un bloc à renseigner. Pour s'arrêter, on clique dans le vide. ; This will record text picked and push it into a block with attributes ; By Alan H oct 2018 ; Edit by CAB (defun c:pushtext ( / txt blk att) (while (setq blk (entsel "\nChoisir un objet bloc avec des attributs : ")) (setq blk (vlax-ename->vla-object (car blk))) (foreach att (vlax-invoke blk 'getattributes) (setq txt (vla-get-textstring (vlax-ename->vla-object (car (entsel (strcat "\nChoisir un objet texte pour l'attribut " (vla-get-TagString att) ) ) ) ) ) ) (vla-put-textstring att txt) ) ) (princ) ) Amicalement Vincent
  20. Un dictionnaire, c'est quand même plus pratique qu'un fichier texte. En plus, le dictionnaire est enregistré dans le dwg. Amicalement Vincent
  21. Bonjour, Il est assez aisé de définir des ersatz de variables système en LISP en enregistrant des valeurs dans un dictionnaire pour un enregistrement dans le dessin. Au début du lisp, on regarde si on trouve un enregistrement dans le dictionnaire. Si non, on le crée en mettant une valeur par défaut (or (setq mavariable (vlax-ldata-get "MON_DICO" "maclef")) (setq mavariable (vlax-ldata-put "MON_DICO" "maclef" 0.5)) ;; valeur par défaut ) A la fin du lisp, on sauvegarde la variable dans le dictionnaire pour pouvoir récupérer à la prochaine ouverture du fichier dwg. (vlax-ldata-put "MON_DICO" "maclef" mavariable) On peut aussi imaginer enregistrer quelque chose dans la base de registres, comme évoqué ci-dessus par Olivier, pour une variable qui devrait concerner non pas un seul fichier dwg mais tous. Amicalement Vincent
  22. Bonsoir, je pense que c'est assez facile de rajouter le texte qui indique à l'utilisateur quel est l'attribut qui est en train d'être traité. Un (vla-get-TagString att) placé judicieusement suffirait déjà ; This will record text picked and push it into a block with attributes ; By Alan H oct 2018 ; Edit by CAB (defun c:pushtext ( / txt blk att) (setq blk (vlax-ename->vla-object (car (entsel "Choisir un objet bloc avec des attributs")))) (foreach att (vlax-invoke blk 'getattributes) (setq txt (vla-get-textstring (vlax-ename->vla-object (car (entsel (strcat "\nChoisir un objet texte pour l'attribut " (vla-get-TagString att) ) ) ) ) ) ) (vla-put-textstring att txt) ) (princ) ) amicalement Vincent
  23. zebulon_

    stagiaire

    C'est si vieux que ça ? Merde alors ! Faut que je songe à prendre la retraite... Place aux jeunes ! Je peux partir tranquille puisque la relève semble être assurée... Amicalement Vincent
  24. zebulon_

    stagiaire

    +1 aussi. Je vous parle d'un temps que les moins de 20 ans ne peuvent pas connaitre où Autocad n'avait pas d'unités ! Cela fait un moment que cette fonctionnalité a été rajoutée, mais ce n'est pas encore entré dans les mœurs chez certains. Il y en a qui partent du fichier gabarit qu'ils ont toujours pris et, pas de chance, il est en "sans unités", en "pouces" ou en "millimètres" alors que le gars travaille en mètres. Je reçois assez souvent des fonds de plan topographiques, qui sont dessinés en mètres, mais paramétrés en mm. Du coup, quand on fait une xref et qu'on laisse faire l'automatisme, les coordonnées lambert sont un peu dans les choux. Le plus simple, c'est d'ouvrir la xref et changer d'unité pour mettre la bonne ! Amicalement Vincent
  25. Bonjour, le c: permet d'utiliser une fonction lisp comme une commande Autocad. Sinon, s'il n'y a pas le c:, on peut quand même appeler la fonction en ligne de commande, comme on le ferait dans un lisp, en tapant (pushtext). Rien ne t'empêche de rajouter c: devant pushtext, mais il faudrait enlever (pushtext) de la fin. Au niveau de la logique, pushtext est plus polyvalent, puisqu'il fonctionne quel que soit le nombre d'attributs et quels que soient leurs noms. Par contre, il a un gros désavantage, celui pour l'utilisateur de connaitre parfaitement l'ordre des attributs avant l'exécution de la fonction. S'il y en a que 3, c'est gérable :D On pourrait, pour améliorer Pushtext, rajouter dans la boucle foreach, le vla-get qui va bien pour récupérer le nom de l'attribut courant et l'afficher, pour que l'utilisateur sache où il en est avant de faire le "Pick text object" Amicalement Vincent
×
×
  • 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é