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. Bonjour, c'est marrant, j'utilise aussi depuis des lustres 2 lisps qui ressemblent beaucoup aux précédents (defun C:WW (/ OLDOS OBJETS NOMFIC) ; Copie (WBLOC) d'une sélection dans un fichier temporaire (setvar "cmdecho" 0) (setq OLDOS (getvar"osmode")) (setvar "osmode" 0) (if (not (setq OBJETS (cadr (ssgetfirst)))) (setq OBJETS (ssget)) ) (setq NOMFIC (strcat (getvar "TEMPPREFIX") "temp.dwg")) (command "_ucs" "_w") (if (findfile NOMFIC) (command "_wblock" NOMFIC "_y" "" '(0 0 0) OBJETS "") (command "_wblock" NOMFIC "" '(0 0 0) OBJETS "") ) (command "_oops") (command "_ucs" "_p") (setvar "osmode" OLDOS) (princ) ) ; WW (defun C:II (/ OLDOS NOMFIC) (setq NOMFIC (strcat (getvar "TEMPPREFIX") "temp.dwg")) (if (findfile NOMFIC) (progn ; Coller de la sélection dans un autre dessin (setvar "cmdecho" 0) (command "_ucs" "_w") (setq OLDOS (getvar"osmode")) (setvar "osmode" 0) ;; insérer le bloc temporaire en le décomposant (command "_insert" (strcat "*" NOMFIC) '(0 0 0) "1" "0") (command "_ucs" "_p") (setvar "osmode" OLDOS) ) (alert (strcat "Fichier temporaire\n" NOMFIC "\nnon trouvé")) ) (princ) ) ; II Amicalement Vincent
  2. Bonjour, ça vaut ce que ça vaut. C'est sans doute moins précis (le 100ème), mais comme je suis une bille en récursion je vous propose ceci (defun r2f (N / PREC PGCD) (setq PREC 100) (setq N (fix (* N PREC))) (setq PGCD (float (gcd N PREC))) (list (/ N PGCD) (/ PREC PGCD)) ) En même temps, je n'ai jamais eu l'occasion d'utiliser la fonction gcd. Voilà, c'est chose faite. Amicalement Vincent
  3. Sage conseil ! Et dans les caractères spéciaux, on peut rajouter les lettres avec des accents. Il m'est arrivé de galérer à cause de cela. Ce n'était pas avec Autocad, mais c'était, si ma mémoire est bonne, un transfert de fichiers d'un serveur Windows vers un serveur Linux. Les noms de fichiers qui comprenait des accents, je ne vous raconte pas ce que cela donnait à l'arrivée... Amicalement Vincent
  4. j'ai commencé ma réponse et j'ai été interrompu. J'ai envoyé plus tard et la réponse de Bonuscad était déjà arrivée. Désolé. N'empêche que la connaissance de l'apostrophe inverse, qui saute les caractères spéciaux et qui permet de lire le prochain caractère littéralement, et ainsi "étouffer" son statut de caractère de remplacement, est précieuse. Merci à Bonuscad de nous l'avoir remémorée. J'aime aussi assez le nota dans l'aide de wcmatch : Amicalement Vincent
  5. Bonjour, version 2014 : ssget ne trouve rien. mais, au niveau des filtres de ssget [...] correspond à "un seul des caractères inclus entre les crochets" [~...] sauf ceux inclus entre les crochets donc c'est normal que ça ne fonctionne pas. Amicalement Vincent
  6. zebulon_

    Type de ligne flèches

    plus de 10 ans pour y parvenir, c'est laborieux ! Amicalement Vincent
  7. zebulon_

    Type de ligne flèches

    oui, un bloc dynamique me semble plus simple (voir exemple joint) ou alors un lisp (defun c:appui () (setq P1 (getpoint "\nPremier point : ")) (setq P2 (getpoint P1 "\nDeuxième point : ")) (setq d (getdist "\nDistance approx. entre chaque perpendiculaire : ")) (command "_line" "_non" P1 "_non" P2 "") (setq A (angle P1 P2)) (setq n (fix (/ (distance P1 P2) d))) (setq d (/ (distance P1 P2) n)) (setq PA P1) (repeat (1+ n) (setq PN (polar PA (- A (/ pi 2)) d)) (command "_line" "_non" PA "_non" PN "") (setq PA (polar PA A d)) ) (princ) ) mais c'est plus compliqué. Amicalement Vincent appui.zip
  8. Bonjour, Je connais le principe du bloc dynamique, ce n'est pas le problème. Je trouve juste que l'idée n'a pas été poussée assez loin, compte tenu qu'un bloc dynamique étirable n'est pas étiré par la commande ETIRER. Merci à VDH-Bruno de m'avoir confirmé, de façon tout à fait constructive, que ce fonctionnement n'est pas dû à une erreur de ma part. Amicalement Vincent
  9. Bonjour, j'ai utilisé un bloc dynamique, qui contient une action Etirer. Le but étant d'avoir un bloc qui s'allonge en fonction de la géométrie du projet. Donc, je clique sur le bloc, puis j'attrape la poignée d'étirement et je mets le bloc à la bonne taille. Cela marche très bien et c'est parfait ! Mais, parce qu'il y a un mais, je pensais naïvement que la commande ETIRER, à partir du moment où elle sélectionne le point d'étirement du bloc dynamique, allait faire changer ce bloc. Le bloc dynamique n'est pas sensible à la commande ETIRER : tout mon projet est étiré par la commande ETIRER, sauf les blocs dynamiques, quand bien même ils sont "étirables" et que la fenêtre de capture contient le point d'étirement. En ce sens, les blocs dynamiques fonctionnent comme des blocs traditionnels et gardent une certaine inertie. C'est dommmage ou alors c'est moi qui m'y prend mal ? Amicalement Vincent
  10. Bonjour, oops, je n'ai pas vu qu'il s'agissait de Creo et pas d'Autocad. Pas compétant, donc. Amicalement Vincent
  11. zebulon_

    TriSSStesse

    Bonjour, il y a les 2 versions : Charlie Brown ou Charles de Gaulle. Mais il semblerait bien que le prénom Charlie dans le titre serait une référence à Charles de Gaulle selon Georges Wolinski (cf., L’Écho des savanes no 239). Compte tenu que Hara Kiri a été censuré suite à un crime de lèse-majesté à l'encontre de l'icône nationale Charles de Gaulle, cela me plait assez de penser que des gens comme Wolinski aient choisi ce nom par pure dérision. Mais le premier numéro de Charlie hebdo contenait aussi des bd des Peanuts. Donc, je ne suis pas en mesure d'arbitrer entre l'une et l'autre version et c'est somme toute assez secondaire. Amicalement Vincent
  12. zebulon_

    TriSSStesse

    Après la sidération, puis la colère, la peur aussi... vient le moment de parler sans ces mauvaises conseillères. En tuant des journalistes et, ne l'oublions pas, des policiers, on s'est attaqué à la fois à la liberté et à l'ordre. Sans liberté, c'est la dictature et sans ordre c'est l'anarchie. Pour moi, la démocratie c'est justement un équilibre précaire entre ces deux extrêmes, équilibre que ces individus ont tenté de bousculer. Et en tentant de bousculer la démocratie, je me suis senti attaqué dans ma propre chair. Il est certain que les unes de Charlie ou de Hara Kiri, autoproclamé journal bête et méchant ou journal irresponsable, n'était pas du goût de tout le monde, loin s'en faut. Mais de là à régler un différent avec comme argument une Kalatchnikov, il y a plus qu'un pas. Le rire de Charlie, qui désacralise la bêtise sur le même mode, se moque de tout et de tout le monde. On peut donc rire de tout, oui, mais avec tout le monde ? Près d'un terroriste extrémiste je pouffe à peine, comme disait Desproges, sans vraiment répondre à cette deuxième question, mais de façon presque prophétique. Bien malgré lui, Charlie est devenu sacré à son tour. Comme affiché dans un message précédent, on voit la une qui compare les livres saints à des torche-culs. Cela me heurte et je le dis sans commettre un délit de blasphème. Enfin, j'espère ! Mettre tous les croyants dans le même sac que ces illuminés extrémistes, qu'ils soient chrétiens, juifs, boudhistes ou musulmans est tout simplement infondé et crée des raccourcis dangereux : musulman = terroriste ; juif = sioniste ; chrétien = traditonaliste et d'extrême droite ; boudhiste = on doit aussi trouver des boudhistes qui n'ont pas la zen attitude, en cherchant un peu du côté de la Birmanie. Sur le plan politique, on peut trouver également une foule d'exemples. Mais, si la caricature ne force pas le trait, cela n'est plus une caricature. Je préfère cependant lorsque la caricature est plus fine, comme celle de Cabu ici, qui précise bien l'adversaire et ne loge pas tout le monde à la même enseigne. La une qui a cloué Hara Kiri au pilori était "Bal tragique à Colombey : 1 mort" et a donné naissance à Charlie Hebdo ; Charlie en référence à Charles de Gaulle... Aujourd'hui, la une c'est "Balles tragiques à Paris : 12 morts"... Je suis Charlie
  13. zebulon_

    La pensée du jour

    Bonjour, c'est vrai que si Jésus était né en Ecosse plutôt qu'en Palestine, on boirait du whisky à l'eucharistie. Il y aurait peut être plus de monde à la messe du dimanche ? Si on se réfère aux textes originaux, les noms des apôtres ou de Jésus ou d'autres personnages bibliques sont beaucoup moins européens, je dirais plutôt français, que leur traduction de la bible. On trouve des noms araméens, hébreux, grecs ou romains qui ont été parfois très altérés par la traduction. Jésus s'appelait Yeshoua, Pierre s'appelait Shimon et a été surnommé Kéfas (qui veut dire rocher), Paul s'appelait Shaul (ou Paulus, compte tenu qu'il était citoyen romain), Jean s'appelait Yohanane, Jacques était Yaakov etc... A noter que la traduction de ces prénoms en allemand est beaucoup plus proche de l'original. On constate la même dérive avec les noms de la mythologie grecque ou romaine. Par exemple, Ulysse : en allemand cela donne Odysseus (avec le y qui se prononce comme un u). Ou d'autres exemples qu'on trouve à la pelle. Il est donc impropre de parler de "prénoms européens". Les prénoms, bibliques ou non, qui sont constants d'une langue européenne à l'autre sont extrêmement rares. Amicalement Vincent
  14. Bonjour, (defun c:dentelle () (setq PAS 0.70) (setq PT1 '(0 0)) (repeat 18 (setq PT2 '(6 0)) (repeat 18 (command "_line" "_non" PT1 "_non" PT2 "") (setq PT2 (polar PT2 (/ pi 2) PAS)) ) (setq PT1 (polar PT1 (/ pi 2) PAS)) ) (princ) ) extrait du "Pendule de Foucault" d'Umberto Eco. Une illustration que j'ai trouvée jolie. Amicalement Vincent
  15. Bonjour, Une belle fête de Noël à tous, avec un peu de neige, c'est mon voeux. Une très belle année 2015, riche en entraide. Même si tout n'est pas rose, efforçons-nous de voir le verre à moitié plein, plutôt que de le voir à moitié vide. Vous faites tous partie de ceux qui me donnent des raisons d'espérer. Ceux qui présentent une facette de l'humanité que j'aime : la fraternité, une valeur universelle puisqu'elle n'est reniée ni pas la République, ni par les religions. Universelle, peut-être, mais de plus en plus rare au quotidien. Je ne vous remercierai donc jamais assez d'être ce que vous êtes. Amicalement Vincent PS : désolé si je me suis laissé aller à un peu de lyrisme
  16. Bonjour, Bonne idée de regrouper les pièges et les subtilités à seul endroit. A ce propos un grand classique : je pense au comportement de la fonction (/ nb1 nb2) qui peut paraitre curieux. Elle permet de diviser, on s'en doute, nb1 par nb2. Compte tenu que nb1 et nb2 peuvent être entiers ou réels, il arrive de se faire piéger quand nb1 et nb2 sont entiers. (/ 5 2) renvoie 2 et non 2.5, comme on aurait pu s'y attendre. Comme 5 et 2 sont des entiers, lisp fait une division entière. Pour avoir une valeur réelle, il faut qu'un des 2 nombres soit réel. Il faut donc écrire (/ 5 2.0) pour avoir 2.5 Amicalement Vincent
  17. Bonjour, un autre endroit où l'on peut utiliser ces jokers : la fonction (ssget [mode] [pt1 [pt2]] [liste-pt] [liste-filtres]) Plus précisément, on s'en doute, dans la rubrique [liste-filtres] Ce dont parlait Bonuscad ici En conclusion, dès qu'on a affaire à une fonction qui sait filtrer, on doit s'intéresser à ?, *, #, ~, @, [...], [~...], -, ` et la virgule elle-même, sans oublier le point. Amicalement Vincent
  18. Bonjour, (vl-load-com) (defun modif_attrib (E ETIQ VALEUR / LATT ATT) (if (= (type E) 'ENAME) (setq E (vlax-ename->vla-object E)) ) (setq LATT (vlax-invoke E 'getAttributes)) (foreach ATT LATT (if (= (strcase (vla-get-TagString ATT)) (strcase ETIQ)) (vla-put-TextString ATT VALEUR) ) ) ) (defun c:lay2att () (setq js (ssget "_X" '((0 . "INSERT") (2 . "MettreIciLeNomDuBloc")))) (setq I 0) (repeat (sslength js) (setq e (ssname js I)) (setq I (+ I 1)) (setq LAY (cdr (assoc 8 (entget e)))) (modif_attrib e "MettreIciLeNomDAttribut" LAY) ) (princ) ) Amicalement Vincent PS : quand il n'y a qu'un seul souci, il n'y a pas besoin de mettre de s. Jusqu'à dernièrement je mettais un s également, compte tenu de la proximité avec le mot "souris".
  19. Bonjour, juste pour compléter un peu la dicussion sur les filtres : comme dit plus haut, ils sont utiles dans la fonction (wcmatch chaine modèle), les commandes Filter et Rechercher... On peut aussi utiliser les mêmes caractères jokers dans les filtres du gestionnaire des propriétés des calques. Par exemple pour filtrer tous les calques qui ne sont pas issus d'une xref : ~*|* Les nostalgiques qui ont commencé l'infomatique avec MS-DOS se souviennent d'avoir utilisé ce genre de caractères en long, en large et en diagonale. Amicalement Vincent
  20. Bonjour, (defun c:laysel (/ SS FILTRE I E LAY) (setq SS (ssget)) (if SS (progn (setq FILTRE '((-4 . "OR>")) ) (setq I 0) (while (< I (sslength SS)) (setq E (entget (ssname SS I))) (setq LAY (assoc 8 E)) (setq FILTRE (cons LAY FILTRE)) (setq I (+ I 1)) ) (setq FILTRE (cons '(-4 . "<OR") FILTRE)) (setq SS (ssget "_X" FILTRE)) (sssetfirst SS SS) ) ) (princ) ) Voilà ce que j'utilise pour sélectionner plusieurs calques par désignation Amicalement Vincent
  21. C'est bien ce que je me disais ! Quel est le besoin d'avoir un lisp dans ce cas ? A moins que l'export vers excel ne soit une des fonctionnalités dégradées par le déplombage du logiciel :D Amicalement Vincent
  22. Bonsoir, rentier, ça m'irait bien aussi. Donc, je pose également ma candidature. Il est vrai que notre ami aedc a eu une formulation maladroite en commençant presque d'emblée par "je veux", mais d'un autre côté, le message débute par "salut" et finit par "merci". Je suis un éternel optimiste et je m'efforce de voir également le côté positif des choses. Par ailleurs, je reçois régulièrement des axes en plans, profils en long etc... pour les exploiter dans le but de concevoir des ouvrages d'art et quelquefois j'ai ces listings au format excel. Je suppose donc que les logiciels qui fabriquent des axes routiers savent exporter vers excel. Mais je ne suis pas un spécialiste : je ne fais qu'utiliser des petits bouts d'axes routiers que d'autres ont conçus. De très petits bouts, même. Mais ils sont d'une importance primordiale pour le projet d'ouvrage, car, n'est-ce pas, il vaut mieux implanter le pont là où passeront les routes. Et si l'axe routier change, le projet d'ouvrage part plus ou moins à la poubelle. Je profite d'avoir l'attention d'un concepteur de routes pour lui dire que les ouvrages sont une contrainte importante quand on fait un projet de route et qu'un projet de route bien pensé peut simplifier le travail de toute la chaîne qui vient en aval : du concepteur d'ouvrage jusqu'au maçon. Les axes qui se croisent à 100gr dès que c'est possible, le profil en long sur ouvrage avec un rayon dont le point haut est à l'axe du pont... C'est tellement rare de trouver de tels axes que je me dis que ceux qui fabriquent des axes routiers ne se préoccupent que rarement de ce genre de simplification majeure ou ne peuvent pas les mettre en oeuvre compte tenu d'autres paramètres plus importants. Mais je m'égare... Désolé ! Amicalement Vincent
  23. Il faudrait un seul bloc par pièce et chaque fois le même bloc dans les x pièces. Chaque bloc est construit avec y nombre d'attributs. L'un des attributs est la surface qui peut être un champ lié à un contour. Après c'est bien ordonné dans excel Amicalement Vincent Surf.zip
  24. Bonjour, si le texte à l'intérieur de la pièce était un bloc avec des attributs (désignation, surface, nature du sol, etc...), ce serait beaucoup plus facile d'en obtenir un listing avec EXTATTBE Amicalement Vincent
  25. zebulon_

    Lisp bande d'etanchéité

    Bonjour, dans le lisp fourni plus haut, quand on construit la polyligne, on peut faire des segments courbes. Sinon, je pense que l'idée de la polylogne épaisse reste ce qu'il y a de plus simple. On fait une polyligne d'épaisseur D dont le style de ligne est "cache", on fait 2 décalages de D/2 qu'on met sur un style "Continuous" pour faire les bords. On pourra ainsi s'attacher, soit à l'axe, soit sur les côtés. On peut tout mettre dans un groupe, y compris les 2 petits segments qui ferment aux extrémités. La question est de savoir : on part de quoi ? - On clique sur un axe existant et le lisp habille cet axe - On saisit des segments droits, le lisp crée des raccords entre chaque (valeur du rayon ? gestion d'erreur si le rayon est trop grand...) en fait un axe et habille le tout - Nom des calques, couleurs etc... Ci dessous un lisp pour dessiner une gaine à partir d'un axe ;;; ;;; lancer une commande autocad (defun mycmd (LCMD / CMD ETL LELEM RES OLDCMDECHO) (setq ETL (entlast)) (setq OLDCMDECHO (getvar "CMDECHO")) (setvar "CMDECHO" 1) (foreach CMD LCMD (command CMD) ) (while (not (zerop (getvar "cmdactive"))) (command pause) ) (setvar "CMDECHO" OLDCMDECHO) (setq LELEM nil) (if (not ETL) (setq ETL (entnext)) (setq ETL (entnext ETL)) ) (while ETL (setq LELEM (cons ETL LELEM)) (setq ETL (entnext ETL)) ) (setq RES LELEM) ) (defun c:chem_gaine (/ PLENAM PLOBJ OFFSETD OFFSETG PTOD PTFD PTOG PTFG AcDoc Space LO LF) (vl-load-com) ;; largeur de la polyligne (setq D (getreal "\nLargeur de la gaine : ")) ;; tracer une polyligne (setq PLENAM (car (mycmd '("_pline")))) ;; transformer en vla-object (setq PLOBJ (vlax-ename->vla-object PLENAM)) ;; faire les décallages (vla-offset PLOBJ (/ D 2.0)) ; à droite (setq OFFSETD (vlax-ename->vla-object (entlast))) (vla-offset PLOBJ (/ D -2.0)) ; à gauche (setq OFFSETG (vlax-ename->vla-object (entlast))) ;; effacer la polyligne d'origine ;; (vla-erase PLOBJ) ; fermer les extrémités avec des lignes (setq PTOD (vlax-curve-getStartPoint OFFSETD)) (setq PTFD (vlax-curve-getEndPoint OFFSETD)) (setq PTOG (vlax-curve-getStartPoint OFFSETG)) (setq PTFG (vlax-curve-getEndPoint OFFSETG)) (setq AcDoc (vla-get-activeDocument (vlax-get-acad-object)) Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) (vla-addLine Space (vlax-3d-point PTOD) (vlax-3d-point PTOG) ) (setq LO (entlast)) (vla-addLine Space (vlax-3d-point PTFD) (vlax-3d-point PTFG) ) (setq LF (entlast)) ;; on fait un PEDIT "Joindre" avec tout ça (setvar "peditaccept" 1) (command "_pedit" "_m" LO (vlax-vla-object->ename OFFSETD) LF (vlax-vla-object->ename OFFSETG) "" "_j" 0.1 "_w" "0.0" "") (princ) ) 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é