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. Bonsoir, j'ai essayé de faire quelque chose qui intègre les cotes, les textes, les mtexts et les mleaders (vl-load-com) (defun c:rotdim (/ s ANG) (setq ANG (getvar "VIEWTWIST")) (if (ssget '((0 . "DIMENSION,MULTILEADER,TEXT,MTEXT"))) (progn (vlax-for o (setq s (vla-get-activeselectionset (vla-get-activedocument (vlax-get-acad-object)))) (cond ((= (vla-get-objectname o) "AcDbMLeader") (vla-put-textrotation o 0)) ((= (vla-get-objectname o) "AcDbMText") (vla-put-rotation o 0)) (T (vla-put-rotation o ANG)) ) ) (vla-delete s) ) ) (princ) ) Selon le type d'objet, il faut mettre la propriété "rotation" soit à 0, soit à l'angle donné par viewtwist Amicalement Vincent
  2. Exactement ! et on peut rajouter que les "tables" sont plutôt des données qui existaient déjà dans les versions "archaïques", si j'ose dire, alors que les dictionnaires sont des concepts plus récents, ainsi que les objets non graphiques qu'ils stockent, forcément. Amicalement Vincent
  3. Bonjour Christian, cela vient du fait que les présentations ne sont pas de même nature que les tables qu'on peut récupérer via TBLSEARCH. Mais cela n'empêcherait pas les développeurs d'Autodesk de faire la commande qui va bien, puisqu'on y arrive avec un lisp. Amicalement Vincent
  4. zebulon_

    Bonne année

    Bonjour, Mes meilleurs voeux à tous ! Je vois qu'il y en a qui ont commencé l'année en trombe. T'inquiète pas, d'ici peu, ton enfant te dira quand il n'a pas classe. Moi, l'avantage c'est que j'habite juste en face de l'école primaire, donc je pouvais me repérer à la sonnerie. Mais cela ne marchais que dans un sens : généralement il faut 2 ou 3 jours au début des vacances pour que quelqu'un pense à couper la sonnerie... A la rentrée, ça marchais mieux et on n'oublie pas de la rallumer. Maintenant que les enfants sont au lycée ou au collège, ils se gèrent. Amicalement Vincent
  5. Bonjour, Offre d'emploi DESSINATEUR / PROJETEUR Le BE Arlaud, avec qui je travaille régulièrement et qui est situé à Chenôve (tout près de Dijon) cherche actuellement un dessinateur / projeteur. La mission principale est la réalisation de plans de coffrage et d'armatures d'ouvrages d'art à l'aide des logiciels Autocad et Adfer. Pour plus de détails, je vous invite à contacter le bureau d'études par mail que vous trouverez ici C'est un poste à pourvoir rapidement. Joyeux Noël à tous ! Amicalement Vincent
  6. Bonjour, et en remplaçant les caractères spéciaux par leur unicode ? Du style \u+041F\u+041B etc... En effet, bloc note ne sait pas sauvegarder des caractères au delà de 8 bits, donc de l'ascii 255, et il va remplacer ces caractères spéciaux par des ???? Notepad émet d'ailleurs un message d'alerte au moment de la sauvegarde du fichier texte s'il contient des caractères spéciaux. Sinon, la solution de Tramber est à explorer, compte tenu que les notepad++ et consorts semblent savoir gérer des environnements multi-langages. Amicalement Vincent
  7. s'esch garn gschaan oui, c'était un vl-put-taborder, mais il faut d'abord piocher dans la liste des présentations celle qui a le nom recherché. Il y a sans doute d'autres moyens pour parvenir à la même chose sans les vl Amicalement Vincent
  8. Bonjour, (defun movelayout (NLAY POSLAY / LAY FLAG) (setq POSLAY (min POSLAY (length (layoutlist)))) ;; pas plus que le nombre de présentations (setq POSLAY (max 1 POSLAY)) ;; pas moins que 1 (vlax-for LAY (vla-get-layouts (vla-get-activedocument (vlax-get-acad-object))) (if (= (strcase (vla-get-name LAY)) (strcase NLAY)) (progn (setq FLAG T) ;; on a trouvé (vla-put-taborder LAY POSLAY) ) ) ) FLAG ) (defun c:test () (if (not (movelayout "toto" 3)) (alert "Présentation non trouvée !") ) (princ) ) Amicalement Vincent
  9. Bonjour, (defun offsetpline (e d pt1 / lseg I seg PTD BULGE PTF ARCINFO A1 aDroite angd angf R RES) (setq aDroite (PtaDroiteObj e PT1)) (setq RES nil) ;; trouver la liste des segments de polyligne (setq lseg (getpolysegs e)) ;; faire les offsets de chaque segment (if aDroite (setq ANG (* 3 (/ pi 2))) (setq ANG (/ pi 2)) ) (setq I 0) (repeat (length lseg) (setq seg (nth I lseg)) (setq PTD (car seg)) (setq BULGE (cadr seg)) (setq PTF (caddr seg)) (if (zerop bulge) (progn (setq A1 (angle PTD PTF)) (setq PTD (polar PTD (+ A1 ANG) D)) (setq PTF (polar PTF (+ A1 ANG) D)) (vla-addline space (vlax-3d-point PTD) (vlax-3d-point PTF)) (setq RES (cons (entlast) RES)) ) (progn (setq ARCINFO (getArcInfo seg)) (if (> bulge 0) (progn (setq angd (angle (car ARCINFO) PTD)) (setq angf (angle (car ARCINFO) PTF)) (if aDroite (setq R (+ (cadr ARCINFO) D)) (setq R (- (cadr ARCINFO) D)) ) ) (progn (setq angd (angle (car ARCINFO) PTF)) (setq angf (angle (car ARCINFO) PTD)) (if aDroite (setq R (- (cadr ARCINFO) D)) (setq R (+ (cadr ARCINFO) D)) ) ) ) (vla-addarc space (vlax-3d-point (car ARCINFO)) R angd angf) (setq RES (cons (entlast) RES)) ) ) (setq I (+ I 1)) ) (reverse RES) ) qui utilise aussi : (setq AcDoc (vla-get-activeDocument (vlax-get-acad-object)) Space (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace AcDoc) (vla-get-ModelSpace AcDoc) ) ) et (defun PTaDroiteObj (obj pt / PTN PM fder PT1DERIV) (if (= (type Obj) 'ENAME) (setq Obj (vlax-ename->vla-object Obj)) ) (setq PTN (vlax-curve-GetClosestPointTo obj PT)) (setq PM (vlax-curve-GetParamAtPoint obj PTN)) (setq fder (vlax-curve-getfirstderiv obj PM)) (setq PT1DERIV (mapcar '+ PTN fder)) (< (sin (- (angle PTN PT) (angle PTN PT1DERIV))) -1e-14) ) (defun getpolySegs (ent / PTL I PTB SEG LSEG) (if (= (type ent) 'ENAME) (setq ent (vlax-ename->vla-object ent)) ) ;; collecter la liste des point sous la forme (x1 y1 x2 y2 ... xn yn) (setq PTL (vlax-safearray->list (vlax-variant-value (vla-get-Coordinates ENT)))) ;; collecter la liste des bulges (setq I 0) (repeat (/ (length PTL) 2) (setq PTB (cons (vla-GetBulge ent I) PTB)) (setq I (1+ I)) ) (setq PTB (reverse PTB)) ;; polyligne fermée -> rajouter le premier point à la liste de points (if (= (vla-get-closed ent) :vlax-true) (setq PTL (append PTL (list (car PTL) (cadr PTL)))) ) ;; transformer en liste de segments (setq I 0) (repeat (- (/ (length PTL) 2) 1) (setq SEG (list (list (nth I PTL) (nth (+ I 1) PTL)) (nth (/ I 2) PTB) (list (nth (+ I 2) PTL) (nth (+ I 3) PTL)) ) ) (setq LSEG (cons SEG LSEG)) (setq I (+ I 2)) ) (reverse LSEG) ) (defun getArcInfo (segment / a p1 bulge p2 c p3 p4 p r s result) ;; assigner variables avec les valeurs de l'argument (mapcar 'set '(p1 bulge p2) segment) (if (not (zerop bulge)) (progn ;; trouver la corde (setq c (distance p1 p2)) ;; trouver la flèche (setq s (* (/ c 2.0) (abs bulge))) ;; trouver le rayon par Pythagore (setq r (/ (+ (expt s 2.0) (expt (/ c 2.0) 2.0)) (* 2.0 s))) ;; distance au centre (setq a (- r s)) ;; coordonnées du milieu de p1 et P2 (setq P4 (polar P1 (angle P1 P2) (/ c 2.0))) ;; coordonnées du centre (setq p (if (>= bulge 0) (polar p4 (+ (angle p1 p2) (/ pi 2.0)) a) (polar p4 (- (angle p1 p2) (/ pi 2.0)) a) ) ) ;; coordonnées de P3 (setq p3 (if (>= bulge 0) (polar p4 (- (angle p1 p2) (/ pi 2.0)) s) (polar p4 (+ (angle p1 p2) (/ pi 2.0)) s) ) ) (setq result (list p r)) ) (setq result nil) ) result ) En principe, offsetpline crée l'offset de chaque segment et renvoie une liste contenant chaque segment créé. J'ai créé cette fonction pour gérer des polylignes dont les segments successifs sont tangents (une droite, un arc, une droite, un arc, etc...) et je n'ai pas eu à me préoccuper du raccord entre chaque segment décalé nouvellement créé. (offsetpline e d PT1) e : ename ou obj de la polyligne à décaler d : la distance pt1 : le point indiquant le côté (en SCG) Amicalement Vincent PS : si j'ai oublié une fonction, n'hésite pas à me solliciter.
  10. Bonjour, Pas tant que ça, compte tenu que les locuteurs allemands (allemands, suisses, autrichiens...) utilisent encore plus d'anglicismes que les français. Particulièrement dans les abréviations de SMS comme le montre cette page suisse. Ce n'est très certainement pas mon cas... Tout de même, je fais la différence phonétique entre cote et côte, car dans ma langue maternelle les deux o existent, ce qui n'est pas le cas du français méridional. Merci à (gile) pour cet éclairage. Anecdote : le phonème /z/ (comme dans zéro ou douze) n'existe pas dans ma langue maternelle et, quand je parle français ce phonème est souvent remplacé par ce que j'ai de plus proche en magasin, à savoir le /s/. Ces deux consonnes sont toutes deux fricatives alvéolaires, donc très proches mais pas identiques, tout de même. Dès lors, quand j'étais petit et qu'on a commencé à parler de malades séropositifs, j'ai eu très peur parce que je suis du groupe O+... que je lisais zéro positif. Ne riez pas ! Donc pour moi, phonétiquement, séropositif et zéro positif, c'était pareil ! D'où mon angoisse passagère... qui a bien fait rire mon médecin de famille. Amicalement Vincent
  11. Bonjour, quand on pratique plusieurs langues de façon régulière et soutenue - comme c'est mon cas - la phonétique est primordiale. D'autant plus qu'une des langues que je pratique régulièrement est l'allemand qui se décompose en une foule de dialectes qui se différencient principalement par leur diphtongaison et, plus généralement, par le changement de prononciation des voyelles. Certains de ces dialectes utilisent d'ailleurs des voyelles qu'on ne trouve ni en français ni en allemand classique, ni en anglais. Il y a aussi quelques consonnes qui changent : il n'y a qu'à aller en Suisse alémanique ou dans le Sundgau pour s'en convaincre, car chez eux le k se prononce un peu comme une jota espagnole. Kind (enfant en allemand) devient RRRRRénd... Pire, Christkind (enfant Jésus) devient Rrrrréstrrrrénd. Donc, pour s'en sortir, il faut savoir bien écouter et avoir une bouche qui sait produire un maximum des variantes phonétiques que l'humanité a su créer. Ce n'est pas toujours simple si on n'a pas baigné dans telle ou telle langue depuis tout petit. Demander, par exemple, à un allemand de prononcer un J français est impossible : cette consonne ne fait pas partie de sa culture. Au mieux on aura un "ch" et c'est ce qui donne l'accent germanique caractéristique. Vive la phonétique ! Amicalement Vincent
  12. "Côte" ou "Cote" ? Déjà, ça ne se prononce pas pareil. Le premier a un "o" fermé et le second un "o" ouvert, donc on devrait déjà entendre une différence phonétique. Sinon, il faut retenir que "cote" ne prend pas d'accent circonflexe dès que le mot fait référence à une valeur, une notation ou un classement (cote de popularité, cote d'une entreprise en bourse, cote 304 de Verdun ou encore la cote sur un plan, celle dont il est question ici). Dans tous les autres cas, on met un accent (côte d'agneau, Côte d'Azur etc...) Après, on trouve aussi le ou la cotte : poisson ou vêtement de travail ou d'armes... Amicalement Vincent
  13. c'est ce que j'ai compris aussi. Sinon, la façon "macro" est très élégante :) Amicalement Vincent
  14. Bonjour, oui, mais je pense que le but est d'avoir également la cote divisée par deux et pas seulement la valeur. Si ce n'était que la valeur, le passage par le style de cote serait bien sûr la manière la plus simple. Donc, on est bien obligé de calculer le point moyen comme l'indique (gile). Personnellement, j'aurais utilisé polar, angle et distance pour calculer le point milieu, mais c'est parce que j'aime bien la fonction polar... Par ailleurs, il faut faire attention aux accrochages aux objets quand on utilise ce genre de command (command "_dimlinear" pdep pmilieu) car pdep et pmilieu peuvent s'accrocher à un sommet ou un centre ou autre. Alors qu'on veut que ça se place au point calculé. Un petit "_non" avant pdep et un autre avant pmilieu seraient bienvenus. Pour finir, la commande _dimlinear demande aussi un point pour positionner la cote. Ce serait peut être bien de rajouter un pause dans la commande pour permettre à l'utilisateur de placer sa cote où il veut. (defun c:topher (/ pdep pfin) (setq pdep (getpoint "\nSpécifiez le premier point: ")) ;; point de départ de la côte (setq pfin (getpoint pdep "\nSpécifiez le deuxième point: ")) ;; point de fin de la côte (command "_dimlinear" "_non" pdep "_non" (polar pdep (angle pdep pfin) (* (distance pdep pfin) 0.5)) pause ) (princ) ) Amicalement Vincent PS : côte, on le voit souvent avec accent circonflexe, ce qui est orthographiquement correct. Mais dans ce cas, c'est un os :)
  15. zebulon_

    texte

    Bonjour, sujet abordé récemment ici Amicalement Vincent
  16. bonjour, c'est vrai que "ouvrage d'art" ça fait pompeux. On fait plus souvent des petits ouvrages autoroutiers ou ferroviaires que des viaducs, c'est évident. Ou de la réparation d'ouvrages anciens (une niche très intéressante et pleine d'avenir, compte tenu de l'âge du parc autoroutier français). C'est comme lorsqu'on gratifie quelqu'un du titre "homme de l'art". Il n'est pas artiste pour autant :D D'ailleurs, l'expression "femme de l'art" devrait se populariser compte tenu que nos métiers se féminisent peu à peu, timidement dans les BE et pas beaucoup sur les chantiers. Amicalement Vincent
  17. Il semblerait, en effet. S'il y en a d'autres qui sévissent dans les ouvrages d'art, qu'ils se dénoncent ! Amicalement Vincent
  18. Bonjour, je suis projeteur et je sévis dans le domaine des ouvrages d'art. Là non plus, il n'y a pas vraiment d'école pour apprendre le métier. A l'époque à laquelle j'ai commencé dans un bureau d'études, j'avais encore des cheveux et les filles ne m'appelaient pas papa... et le BE n'avait que 2 postes de DAO que personne n'utilisait. Entre temps, les choses ont bien changé ! L'avantage, à l'époque, c'est qu'on apprenait le métier en dessinant sur la planche : on n'avait pas besoin d'apprendre un logiciel en parallèle. L'avantage, aussi, c'est que les plus jeunes ont pu être les moteurs de la mise en place des outils informatiques, sous le regard moqueur des plus anciens.. "ça ne marchera jamais... en plus tes plans sont moches etc..." Aujourd'hui il faut connaitre au moins un logiciel, le plus souvent Autocad dans les BE de structure OA, ainsi qu'un applicatif pour le ferraillage comme Armacad ou autre. Sinon, c'est dur de trouver un poste. Le métier en lui-même, on peut l'apprendre sur le tas, mais les outils de dessin nécessaires au métier doivent être maitrisés un minimum. L'avantage de la branche "ouvrages d'art" par rapport au "bâtiment" est que c'est plus simple. Plus simple car il y a moins d'intervenants : c'est avant tout du béton armé, éventuellement précontraint, ou du métal. Il faut connaitre les rudiments de tracé routier. Les équipements se limitent à des gardes-corps, des barrières de sécurité et des appareils d'appuis. Il n'y a pas 25 corps de métier à gérer ! En plus, on participe à la construction d'objets assez imposants qui vont rester pour longtemps (enfin on l'espère... quand je vois ce qui s'est passé en Italie dernièrement). Bon, on a tendance à la ramener un peu : "ouais, j'ai travaillé sur la LGV Est Européenne, j'ai fait un viaduc de 800m...". Comme si on était tout seul à le faire et que cet ouvrage devenait notre propriété parce qu'on en a fait les plans ! Les BE qui font de l'ouvrage d'art et avec lesquels j'ai pu travailler un jour ou l'autre : http://www.tpi.setec.fr/FR/010-home/index.php https://www.arcadis.com/fr/france/ http://www.ingerop.fr/fr/talents/recrutement http://www.be-arlaud.com/ http://www.le-site-de.com/bureau-d-etudes-favier-verne-et-associes-quatzenheim_63909.html Dans les barrages, les centrales nucléaires et les travaux maritimes : http://www.tractebel-engie.com/offices/europe/france/ (anciennement Coyne et Bellier) Amicalement Vincent
  19. Bonjour Denis, je persiste à croire que si tu étais resté en accrochage en haut, tu n'aurais pas eu de souci avec les parenthèses. Mais c'est secondaire, l'important c'est que ça marche. :) Amicalement Vincent
  20. Bonjour, je reviens sur le sujet pour avoir la confirmation que les textes s'alignent bien si a un point d'insertion en haut, même s'ils contiennent des parenthèses. Les textes étaient justifiés "HD" et "HG" au départ. De ce fait, je ne comprends pas pourquoi ils ne s'alignaient pas bien alors qu'ils devraient. Amicalement Vincent
  21. Mais je ne vois toujours pas où est le problème des parenthèses puisque Denis justifie les textes en "HD" et "HG". Dans ce cas, les parenthèses s'alignent avec le haut des autres lettres. Le problème survient lorsque, comme Ju, on a un texte justifié en bas. J'en arrive à la conclusion que, dans le premier message de Denis, il n'y a pas correspondance entre l'image (où le texte doit être justifié en bas) et le code qui justifie en haut. Je suis perplexe... Amicalement Vincent
  22. Bonjour, chez moi ça s'aligne bien avec de l'arial, avec ou sans parenthèses, et avec des largeurs nulles. Je ne vois pas pourquoi ça ne marche pas chez Denis, puisque le fait de donner deux fois le même point, ce qu'il fait, revient à faire une fenêtre de largeur nulle. Ce que j'ai proposé dans mon message précédent est donc une fausse piste, puisque Denis fait la même chose d'une autre manière. Par ailleurs, j'ai regardé la solution qui consisterait à créer un seul texte qui contient tout le baratin et en jouant sur les tabulations. Mais là, il faut disposer de la règle, comme dans Word, pour pouvoir placer des tabulations. Il faut définir un cadre ou au moins une largeur pour disposer de la règle, cela me semble obligatoire. Après, on injecte dans le texte les caractères spéciaux qui permettent de définir les taquets de tabulation \\pxtr, puis on met les tabulations \t et les sauts de ligne \\P qui vont bien dans le texte. Un exemple avec un texte dont le style est de hauteur 150mm (defun c:txzeb () (setq Pt_ins (getpoint "\nPoint d'insertion du texte : ")) (command "_.-MTEXT" "_non" PT_ins "_w" "4000" ;; je définis une largeur, la hauteur reste à 0 et s'adapte "\\pxtr12,14;\tLIG1 à gauche()\tLIG1 à droite\\P\tLIG2 à gauche\tLIG2 à droite()\\P\tLIG3 à gauche()\tLIG3 à droite\\P\tLIG4 à gauche\tLIG4 à droite\\{\\}" "" ) ) Le premier taquet se met à 12, soit 12x150 = 1800, le second à 14 soit 2100mm et la largeur du texte est défini à 4000mm. Faut un peu tester pour s'assurer que tout rentre dans la largeur. Amicalement Vincent
  23. Bonjour Denis, "éméteur", ça s'écrit pas plutôt "émetteur" ? Concernant les mtext, je leur donne toujours une largeur nulle, comme ça je ne m'embête pas à définir un rectangle dans lequel le texte doit rentrer. Essaye avec des mtext de largeur 0, donc sans définir de boite de contour, et dis-nous si cela a pu résoudre ton problème d'alignement. Amicalement Vincent
  24. Bonjour (gile), j'ai eu peur d'être hors sujet avec ma contribution, compte tenu que la question a été publiée dans "Débuter en LISP". Mais, l'exploitation des polylignes n'est pas une chose simple. Polysegments.lsp non plus, a fortiori. Amicalement Vincent
  25. Ok, pas de souci. Mais l'exploitation des polylignes mérite qu'on s'y attarde et je t'invite à bien consulter les pages sur Afralisp qui en parlent (voir le lien dans le message précédent). C'est en anglais, mais c'est bien illustré et compréhensible même si le niveau d'anglais n'est que scolaire, ce qui est mon cas. Bon, mon niveau de français est aussi scolaire, compte tenu que ce n'est pas ma langue maternelle, mais je crois que le verbe oublier est du 1er groupe. Donc, attention à tous ces verbes qui se terminent par "ier" à l'infinitif (publier, trier, crier...), qu'on a tendance à vouloir conjuguer comme des verbes du 2ème groupe et qui ont aussi la particularité de doubler le "i" à la première et deuxième personne du pluriel à l'imparfait de l'indicatif (nous oubliions, vous oubliiez). 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é