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. Hé Denis, il va falloir que tu changes bientôt de forum. A l'allure à laquelle tu progresses ces deniers jours, "Débuter en LISP" n'est plus un endroit pour toi :) Amicalement Zebulon_
  2. bonjour, Quelque chose comme ça ? (defun c:prefixe (/ ss PREF I ETX IDX NEWIDX) (setq ss (ssget '((0 . "*TEXT")))) (if ss (progn (setq PREF "T=") (setq I 0) (while (< I (sslength ss)) (setq ETX (entget (ssname ss I))) (setq IDX (cdr (assoc 1 ETX))) (setq NEWIDX (strcat PREF IDX)) (setq ETX (subst (cons 1 NEWIDX) (assoc 1 ETX) ETX) ) (entmod ETX) (setq I (+ I 1)) ) ) ) (princ) ) Amicalement Zebulon_
  3. Bonjour, c'est vrai que ça faisait un peu "14 juillet", mais ça donne une idée de la nouvelle discipline olympique du lancer de rayon (dans laquelle je suis un champion... :D ) Blague à part, Vlisp est effectivement dans ce cas d'une efficacité et d'une discrétion redoutables. Bon, je crois qu'avec ça le Décapode va nous trouver un qualificatif de son cru : Le Décapode "Rayonnant" Le Décapode "MaxHatchurant" ... selon qu'il préfère une solution ou l'autre Amicalement Zebulon_
  4. Bonjour, Mais on peut quand même faire appel au hasard, j'ai changé l'angle fixe pi/4 pour un angle pseudo-aléatoire compris entre 0 et 2*pi. (C'est curieux de ne pas avoir de fonction random dans lisp :casstet: ) Ensuite, plutôt que de faire un seul test, j'en fais 10. Et si, dans ces conditions, je tombe 5 fois sur 10 sur un angle ou un point de tangence, c'est que j'ai vraiment pas de chance. Mais il parraît qu'on a une chance sur un million de se faire mordre par une chauve-souris enragée.. Bon, admettons... :) ça donne ça (defun randnum (/ modulus multiplier increment random) ;;--------------------------------------------------;; ;;Source http://www.afralisp.net/Tips/code104.htm ;; ;;--------------------------------------------------;; ;;retourne un nombre pseudo-aléatoire entre 0 et 1 ;; ;;--------------------------------------------------;; (if (not randnum_seed) (setq randnum_seed (getvar "DATE")) ) (setq modulus 65536 multiplier 25173 increment 13849 randnum_seed (rem (+ (* multiplier randnum_seed) increment) modulus) random (/ randnum_seed modulus) ) ) (defun nb_intersect (e1 e2) (setq e1 (vlax-ename->vla-object e1)) (setq e2 (vlax-ename->vla-object e2)) (/ (length (vlax-invoke e1 'IntersectWith e2 acExtendNone)) 3) ) (defun main_txextrude () (setvar "cmdecho" 0) (setq oldDELOBJ (getvar "DELOBJ")) (setvar "DELOBJ" 0) ;;sélectionner tous les contours (setq sscont (ssget "_X" (list (cons 8 CONTLAY) '(-4 . "< OR") '(-4 . "< AND") '(0 . "LWPOLYLINE") '(70 . 1) '(-4 . "AND>") '(0 . "CIRCLE") '(0 . "ELLIPSE") '(0 . "REGION") '(-4 . "OR>") ) ) ) (if sscont (progn (setq sstx (ssget "_X" (list (cons 8 TXLAY) '(0 . "TEXT")))) (setq I 0) (while (< I (sslength sscont)) (setq etcont (ssname sscont I)) (setq J 0) (setq TROUVE nil) (while (and (not TROUVE) (< J (sslength sstx))) (setq etx (ssname sstx J)) (setq PTINS (cdr (assoc 10 (entget etx)))) (setq NBPAIR 0) (setq NBIMPAIR 0) (repeat 10 ;; faire la demi-droite, angle aléatoire (setq RANDOM_ANGLE (* 2 pi (randnum))) ;; compris entre 0 et 2*pi (command "_ray" "_non" (trans PTINS 0 1) "_non" (polar (trans PTINS 0 1) RANDOM_ANGLE 1) "") (setq eray (entlast)) (setq nbpts (nb_intersect eray etcont)) ;; j'efface la demi_droite (command "_erase" eray "") (if (zerop (rem nbpts 2)) ;; nbpts est pair (setq NBPAIR (+ NBPAIR 1)) (setq NBIMPAIR (+ NBIMPAIR 1)) ) ) ;; fin repeat (setq J (+ J 1)) (if (setq TROUVE (> NBIMPAIR NBPAIR)) ;; il y a plus d'impairs que de pairs. J'ai vraiment pas de bol si ça marche pas. (progn ;; j'enlève etx du jeu de sélection sstx, puisque etx à trouvé son contour (setq sstx (ssdel etx sstx)) ;; puis j'extrude (if (< 16 (atoi (substr (getvar "acadver") 1 2))) (command "_.extrude" etcont "" (cdr (assoc 1 (entget etx)))) (command "_.extrude" etcont "" (cdr (assoc 1 (entget etx))) 0.0) ) ) ) ) (setq I (+ I 1)) ) ) (alert "pas de contour") ) (setvar "DELOBJ" oldDELOBJ) ) (defun c:txextrude () (setq etx (car (entsel "\nSélectionner le texte dont vous voulez récupérer le calque ..."))) (if etx (progn (setq etx (entget etx)) (if (= (cdr (assoc 0 etx)) "TEXT") (progn (setq TXLAY (cdr (assoc 8 etx))) (alert TXLAY) (setq etcont (car (entsel "\nSélectionner le contour dont vous voulez récupérer le calque ..."))) (if etcont (progn (setq etcont (entget etcont)) (setq CONTLAY (cdr (assoc 8 etcont))) (alert CONTLAY) (main_txextrude) ) ) ) (alert "pas un texte") ) ) ) (princ) ) Amicalement Zebulon_
  5. Bonjour, C'est vrai. Il faudrait vérifier que le _ray ne passe pas par un sommet ou un point tangent. Pour les polylignes, les cercles et les ellipses, on arrive à gérer. Pour les régions, c'est un peu plus coton. Amicalement Zebulon_ [Edité le 18/10/2006 par zebulon_]
  6. zebulon_

    Revision ........???

    bonjour, (ssadd nom-ent js) ssadd sert à ajouter un élément nom_ent au jeu de sélection js. Mais comme ssget retourne un jeu de sélection, l'utilisation du ssadd ne me semblait pas utile. Amicalement Zebulon_
  7. Bonjour, faut, je pense, chercher du côté des dictionaires, mais je n'y connais pas grand chose. (dictsearch (namedobjdict) "ACAD_MLINESTYLE") Amicalement Zebulon_
  8. zebulon_

    Revision ........???

    Bonjour, Comme ça ? (defun c:selection () (setq ma_sel (ssget)) (setq nb_ma_sel (sslength ma_sel )) (setq n 0 ) (while (< n nb_ma_sel ) (setq ma_sel_ssname (ssname ma_sel n)) (print (cdr (assoc 0 (entget ma_sel_ssname)))) (setq n ( + 1 n)) ) (princ) ) - Je n'ai pas compris le pourquoi du ssadd - sslength ne s'écrit pas sselngth - ssname : il faut mettre le jeu de sélection avant l'indice (ssname js indice) Amicalement Zebulon_
  9. Voilà ce que ça donnerait en vrai (defun nb_intersect (e1 e2) (setq e1 (vlax-ename->vla-object e1)) (setq e2 (vlax-ename->vla-object e2)) (/ (length (vlax-invoke e1 'IntersectWith e2 acExtendNone)) 3) ) (defun main_txextrude () (setq oldDELOBJ (getvar "DELOBJ")) (setvar "DELOBJ" 0) ;;sélectionner tous les contours (setq sscont (ssget "_X" (list (cons 8 CONTLAY) [surligneur] '(-4 . "< OR") '(-4 . "< AND")[/surligneur] '(0 . "LWPOLYLINE") '(70 . 1) '(-4 . "AND>") '(0 . "CIRCLE") '(0 . "ELLIPSE") '(0 . "REGION") '(-4 . "OR>") ) ) ) (if sscont (progn (setq sstx (ssget "_X" (list (cons 8 TXLAY) '(0 . "TEXT")))) (setq I 0) (while (< I (sslength sscont)) (setq etcont (ssname sscont I)) (setq J 0) (while (< J (sslength sstx)) (setq etx (ssname sstx J)) (setq PTINS (cdr (assoc 10 (entget etx)))) ;; faire la demi-droite, on va dire à 45° (command "_ray" "_non" (trans PTINS 0 1) "_non" (polar (trans PTINS 0 1) (/ pi 4) 1) "") (setq eray (entlast)) (setq nbpts (nb_intersect eray etcont)) ;; j'efface la demi_droite (command "_erase" eray "") (if (not (zerop (rem nbpts 2))) ;; nbpts est impair ;; puis j'extrude (if (< 16 (atoi (substr (getvar "acadver") 1 2))) (command "_.extrude" etcont "" (cdr (assoc 1 (entget etx)))) (command "_.extrude" etcont "" (cdr (assoc 1 (entget etx))) 0.0) ) ) (setq J (+ J 1)) ) (setq I (+ I 1)) ) ) (alert "pas de contour") ) (setvar "DELOBJ" oldDELOBJ) ) (defun c:txextrude () (setq etx (car (entsel "\nSélectionner le texte dont vous voulez récupérer le calque ..."))) (if etx (progn (setq etx (entget etx)) (if (= (cdr (assoc 0 etx)) "TEXT") (progn (setq TXLAY (cdr (assoc 8 etx))) (alert TXLAY) (setq etcont (car (entsel "\nSélectionner le contour dont vous voulez récupérer le calque ..."))) (if etcont (progn (setq etcont (entget etcont)) (setq CONTLAY (cdr (assoc 8 etcont))) (alert CONTLAY) (main_txextrude) ) ) ) (alert "pas un texte") ) ) ) (princ) ) Le vlax-invoke qui revoie la liste de points 3d d'intersection entre deux entités, c'est bien pratique. Amicalement Zebilon_
  10. Bonjour, Il y a peut-être une autre voie à explorer. En quelques mots, l'idée est de tracer une demi-droite (la commande _ray) à partir du point d'insertion du texte, avec un angle quelconque. Puis déterminer le nombre de points d'intersections avec le contour. Si ce nombre est pair (y compris 0), le point est à l'extérieur du contour, sinon il est à l'intérieur. Et comme une petite image parle mieux qu'un long discours : http://img133.imageshack.us/img133/2776/interswn4.jpg Et si la demi-droite traverse un ilôt d'une région, la règle semble valable aussi http://img245.imageshack.us/img245/2908/inters1yj0.jpg Et si le point d'origine est à l'intérieur d'un ilôt, ça semble marcher aussi http://img133.imageshack.us/img133/1052/inters2yd4.jpg Votre avis sur la question ? Amicalement Zebulon_ [Edité le 17/10/2006 par zebulon_]
  11. Re, Avec un texte placé comme dans ta première image, je n'obtiens qu'un seul solide puisque je fais l'extrusion avec la région d'origine et non les régions créées par _bpoly (qui sont effacées) Effectivement, ça marche quand même puisque _bpoly peut fabriquer un contour avec l'ilôt. Amicalement Zebulon_
  12. zebulon_

    Objet ARX

    Bonjour Pedro_alcoolix Peut-être en mettant DEMANDLOAD à 0 (ou 1 ou 2) à essayer ??? Et à consommer avec modération Amicalement Zebulon_
  13. zebulon_

    je cherche une astuce

    Excellent !! et comme on a de la suite dans les idées 123^5 donne 123 indice 5 Amicalement Zebulon_
  14. Ok gile, mais peu m'importe le nombre de polylignes (ou régions, plutôt régions d'ailleurs) créées par bpoly. Du moment qu'il y en a une, ça veut dire que le texte est à l'intérieur. Ce qui me gêne avec ta commande hachure, c'est le fait que tu choisisses un motif "ansi31" avec une echelle. Ce motif peut ne pas avoir le même aspect suivant la valeur de la variable MEASUREMENT. Si déjà il faut utiliser la commande bhatch, alors il vaut peut être mieux choisir des hachures utilisateur qui s'en foutent royalement de MEASUREMENT Du style : (command "_bhatch" "_p" "_u" ANGLE ESPACEMENT "_y" ...) Sinon, je vous propose une solution avec _bpoly (defun main_txextrude () (setq oldDELOBJ (getvar "DELOBJ")) (setvar "DELOBJ" 0) ;;sélectionner tous les contours (setq sscont (ssget "_X" (list (cons 8 CONTLAY) [surligneur] '(-4 . "< OR") '(-4 . "< AND") [/surligneur] '(0 . "LWPOLYLINE") '(70 . 1) '(-4 . "AND>") '(0 . "CIRCLE") '(0 . "ELLIPSE") '(0 . "REGION") '(-4 . "OR>") ) ) ) (if sscont (progn (setq sstx (ssget "_X" (list (cons 8 TXLAY) '(0 . "TEXT")))) (setq I 0) (while (< I (sslength sscont)) (setq etcont (ssname sscont I)) (setq J 0) (while (< J (sslength sstx)) (setq etx (ssname sstx J)) (setq PTINS (cdr (assoc 10 (entget etx)))) ;; essaye de faire un _bpoly (setq etl (entlast)) ;; la dernière entité (command "_bpoly" "_a" "_o" "_r" "_b" "_n" etcont "" "" "_non" (trans ptins 0 1) "") (setq newetl (entlast)) ;; le nouvelle dernière entité (if (/= (cdr (assoc 5 (entget etl))) (cdr (assoc 5 (entget newetl)))) (progn ;; _bpoly a fabriqué au moins un nouvel objet, donc le texte etx est à l'intérieur de etcont ;; j'efface ce que bpoly a fabriqué (while (setq etl (entnext etl)) (command "_erase" etl "") ) ;; puis j'extrude (if (< 16 (atoi (substr (getvar "acadver") 1 2))) (command "_.extrude" etcont "" (cdr (assoc 1 (entget etx)))) (command "_.extrude" etcont "" (cdr (assoc 1 (entget etx))) 0.0) ) ) ) (setq J (+ J 1)) ) (setq I (+ I 1)) ) ) (alert "pas de contour") ) (setvar "DELOBJ" oldDELOBJ) ) (defun c:txextrude () (setq etx (car (entsel "\nSélectionner le texte dont vous voulez récupérer le calque ..."))) (if etx (progn (setq etx (entget etx)) (if (= (cdr (assoc 0 etx)) "TEXT") (progn (setq TXLAY (cdr (assoc 8 etx))) (alert TXLAY) (setq etcont (car (entsel "\nSélectionner le contour dont vous voulez récupérer le calque ..."))) (if etcont (progn (setq etcont (entget etcont)) (setq CONTLAY (cdr (assoc 8 etcont))) (alert CONTLAY) (main_txextrude) ) ) ) (alert "pas un texte") ) ) ) (princ) ) Amicalement Zebulon_ [Edité le 16/10/2006 par zebulon_]
  15. Re, j'ai fait une _bpoly en utilisant un jeu de sélection "options _b _n" ne contenant que la région (la variable e). S'il y a des îlots à l'intérieur, ils ne font pas partie du jeu de sélection et ne créent pas de polyligne. A l'issue du _bpoly, il n'y aura donc qu'une seule polyligne à gérer. Enfin c'est ce qui me semble au vu de mes tests. Amicalement Zebulon_
  16. Bonjour Gile, Est-ce que l'utilisation de la commande _bpoly ne pourrait s'avérer intéressante ? en faisant un truc du style : (setq pt ...) ;; le point d'insertion du texte (setq e (car (entsel))) ;; sélectionner la région (setq etl (entlast)) ;; la dernière entité (command "_bpoly" "_a" "_o" "_p" "_b" "_n" e "" "" pt "") (setq newetl (entlast)) ;; le nouvelle dernière entité ;; puis faire une comparaison des identificateurs de etl et newetl (if (= (cdr (assoc 5 (entget etl))) (cdr (assoc 5 (entget newetl)))) (alert "Texte à l'extérieur") (alert "Texte à l'intérieur") ) Amicalement Zebulon_
  17. Pour completer un peu sur les polylignes, voici 2 fonctions bien intéressantes quand on se frotte à des polylignes avec des parties courbes. (defun getPolySegs (ent / entl p1 pt bulge seg ptlst) (cond (ent (setq entl (entget ent)) ;; save start point if polyline is closed (if (= (logand (cdr (assoc 70 entl)) 1) 1) (setq p1 (cdr (assoc 10 entl))) ) ;; run thru entity list to collect list of segments (while (setq entl (member (assoc 10 entl) entl)) ;; if segment then add to list (if (and pt bulge) (setq seg (list pt bulge)) ) ;; save next point and bulge (setq pt (cdr (assoc 10 entl)) bulge (cdr (assoc 42 entl)) ) ;; if segment is build then add last point to segment ;; and add segment to list (if seg (setq seg (append seg (list pt)) ptlst (cons seg ptlst)) ) ;; reduce list and clear temporary segment (setq entl (cdr entl) seg nil ) ) ) ) ;; if polyline is closed then add closing segment to list (if p1 (setq ptlst (cons (list pt bulge p1) ptlst))) ;; reverse and return list of segments (reverse ptlst) ) (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 ) donc, un (setq e (getpolysegs (car (entsel)))) te donne une liste des segments du polyligne sous la forme ( (premier point segment0) bulge0 (deuxième point segment0) (premier point segment1) bulge1 (deuxième point segment1) ... ) Comme le "bulge" (courbure ?) est quelque chose de concis mais difficilement exploitable, il est intéressant d'avoir quelque chose qui transforme le "bulge" en un point de centre de cercle et une valeur de rayon. Ce qui est réalisé par la fonction : (getarcinfo (nth 1 e)) qui renvoie soit nil, si le 2ème segment est une droite, soit le centre est le rayon dans le cas contraire. Tout ceci est très bien expliqué ici Merci à Stig Madsen Amicalement Zebulon_ [Edité le 16/10/2006 par zebulon_]
  18. zebulon_

    je cherche une astuce

    Bonjour, une première astuce consiste à faire un mtext et utiliser la fonction "empiler" (le petit bouton a/b situé sur la barre de menu de l'éditeur interne d'autocad) En tapant "toto5/ ", puis en sélectionnant le "5/ " puis en cliquant sur le bouton empiler. Le désavantage, c'est que le 5 sera souligné. Mais c'est quand même curieux que l'éditeur interne ne possède pas de fonction (en tout cas, je ne l'ai pas trouvée sur ma 2004) pour mettre en exposant, alors que ce formatage fonctionne avec un mtext. La preuve : vous définissez un style de cote avec des tolérances. Les tolérances se mettent en exposant de la cote. Puis vous décomposez une cote obtenue grace à ce style de cote. Vous obtiendrez un mtext avec une partie en exposant. Manque de bol, si vous éditez ce texte avec l'éditeur interne, puis vous cliquez sur ok sans avoir rien touché au texte édité, l'éditeur supprime le formatage exposant et le texte en exposant se retrouve par terrre. :casstet: Curieux non ? Amicalement Zebulon_
  19. zebulon_

    Besoin d\'aide !!

    Le fichier .lsp peut s'appeler autrement que la fonction ou les fonctions qui sont dedans. Là la fonction s'appelle break_lw et fonctionne très bien Amicalement Zebulon_
  20. En général, je n'ai pas la même chose à dire quand je fais un détail au 1/20ème ou un plan au 1/500ème, donc j'ai des textes sur un calque tx3-20 et d'autres sur le calque tx3-500 (le 3 représente la hauteur et le 20 ou le 500 l'échelle). Les premiers je les gèle dans la fmult 1:500 et les seconds dans la fmult 1:20. Et s'il y a des certaines choses à répéter, et bien je les répète. Et je mets le maximum de texte dans l'espace papier : titres, nota par exemple. Là il n'ya pas de facteur d'échelle. Quant à la cotation, ça à l'air puissant que de la mettre en espace papier, avec l'option ECHELLE DES COTES SELON PRESENTATION, puisqu'on ne gère qu'un seul style de cote qui s'adapte à tout. Maintenant, j'aime bien voir comment bougent les cotes quand je bouge un objet coté. Parce que, de temps en temps, il faut que je modifie mes plans... C'est pour ça que je préfère garder les cotes "sous la main" dans l'espace objet quitte à gérer un style de cote par echelle. En plus je supprime l'association des cotes, parce que je trouve que lorsqu'on laisse l'initiative aux cotes de bouger en fonction des modifs qu'on est amené à faire sur les objets, ça donne rarement des résultats satifaisants (sauf dans des cas simples qui sont rarement les miens). Je préfère que les cotes restent là où j'ai décidé qu'elles soient, même si je bouge l'objet coté. Je n'utilise la cotation en espace objet que lorsque je cote un modèle 3D. Et comme le dit (gile) : "chacun selon ses besoins, chacun selon ses moyens" et vice-versa. Amicalement Zebulon_ (le réac qui travaille toujours comme s'il avait une version 12)
  21. Bonjour, Moi, je suis de l'avis de Didier, qui n'a, à mon avis, rien contre Lorient. Il est, je pense, simplement déçu de l'attitude d'un compatriote breton. Maintenant, je ne suis pas psychologue et on laissera Didier s'expliquer s'il le souhaite. Pour revenir à ce forum, j'ai cru comprendre qu'il avait un but pédagogique et d'entre aide. Demander de fournir un soft gratos au premier message qu'on poste, c'est un peu pauvre en matière d'ente aide, qui suppose un retour d'ascenseur. Quant à ton patron, s'il ne se donne pas les moyens pour faire le boulot qu'il accepte, change de boîte. Pour t'aider à te mettre au lisp, nous serons au moins deux (et j'en vois quelques autres) Amicalement tout de même aussi Zebulon_
  22. Une question de rapport d'echelle. Si tu veux un texte qui fait 3mm sur le papier et que tu a fait une fmult au 1/100ème, il faut que ton texte soit 100x plus grand sur l'espace objet, soit une hauteur de 300mm (ou 0.30m si tu travailles en mètres) De même, si tu es au 1/20, c'est 3x20=60mm (ou 0.06m) Un texte de 3mm au 1/75 c'est 225mm (ou 0.225m) etc ... Il faut toujours partir du résultat qu'on veut obtenir et multiplier par l'échelle de la fmult. Par contre, pour les textes placés directement sur l'espace papier il n'y a pas de facteur d'échelle. Un texte qui doit faire 3mm de haut sur le papier, sera défini avec 3mm de haut. Bien entendu, pour les cotes, c'est le même principe. Amicalement Zebulon_ [Edité le 12/10/2006 par zebulon_]
  23. Bonjour Denis, C'est vrai que c'est un peu compliqué la façon dont est codé l'index d'un mtext. Alors, pour ne pas se casser la tête, je te propose la méthode suivante : 1°) créer un mtext dans au fichier autocad tel que tu le souhaites, avec les soulignés, les gras, les italiques aux endroits que tu souhaites. 2°) lancer les commandes lisp sur la ligne de commande (setq e (entget (car (entsel)))) puis sélectionne le texte puis (setq idx (cdr (assoc 1 e))) dans idx, tu auras quelque chose du genre "{\\Lcadastre :}\\Psection {\\fArial|b1|i0|c0|p34;AC}\\Pnuméro {\\fArial|b1|i0|c0|p34;125}\\P{\\fArial|b0|i1|c0|p34;Monsieur LAGAFFE Gaston}" 3°) lancer la commande mtext avec idx (command "_-mtext" '(0 0) "_w" 0 idx "") pour voir que ça à l'air de marcher. 4°) Après, tu peux prendre ce qui a dans idx pour le copier/coller dans un fichier .lsp à partir de la fenêtre de texte d'Autocad. Afin de pouvoir le "saucissoner" et remplacer "AC", "125" et "Monsieur LAGAFFE Gaston" par des variables, comme ci-dessous : (defun c:mytext () (setq TX1 "{\\Lcadastre :}\\Psection {\\fArial|b1|i0|c0|p34;") (setq TX2 (getstring T "\nSection : ")) (setq TX3 "}\\Pnuméro {\\fArial|b1|i0|c0|p34;") (setq TX4 (getstring T "\nNuméro : ")) (setq TX5 "}\\P{\\fArial|b0|i1|c0|p34;") (setq TX6 (getstring T "\nNom : ")) (setq TX7 "}") (command "_-mtext" '(0 0) "_w" 0 (strcat TX1 TX2 TX3 TX4 TX5 TX6 TX7) "") (princ) ) Il y a peut-être plus simple, je suis preneur Amicalement Zebulon_ [Edité le 12/10/2006 par zebulon_]
  24. Bonjour et pourquoi pas avec la commande _browser (navigateur en français) (command "_browser" "http://www.cadxp.com") ou associé à un bouton ^C^C_browser http://www.cadxp.com; Ce n'est pas très vlisp, ni ActiveX, mais ça a l'avantage de lancer le navigateur par défaut, qui n'est pas forcément IE. Amicalement Zebulon_ PS : Si je ne viens pas trop tard, tu peux me rajouter à la liste [Edité le 12/10/2006 par zebulon_]
  25. Bonjour, Autrefois, Autocad ne gérait pas d'unité et on travaillait toujours sans unité. A chacun de se définir l'unité correspondait au mètre, au mm, au cm etc. Maintenant, on peut choisir. Prenons un dessinateur A qui a choisi de travailler en mm et un dessinateur B qui a choisi de travailler en m. Si A donne une bibliothèque de blocs sans échelle à B, B doit à chaque fois appliquer un facteur d'échelle de 0.001 quand il insère un bloc de A. Par contre si A donne une bibliothèque de blocs définie en mm à B, et que B a défini qu'il travaille en m c'est autocad qui applique le facteur d'échelle tout seul. Cela peut être pratique quand on souhaite diffuser ses bibliothèques de blocs. Amicalement Zebulon_ [Edité le 9/10/2006 par zebulon_]
×
×
  • 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é