Aller au contenu

pierrevig

Membres
  • Compteur de contenus

    27
  • Inscription

  • Dernière visite

Tout ce qui a été posté par pierrevig

  1. Bravo Laurent, je n'y avais pas pensé ! c'est exactement ce que je cherchai... merci, merci.
  2. Bonjour, je souhaiterai savoir comment je peux modifier l'altitude des 3 sommets d'un seul coup d'une face de MNT en rentrant juste une altitude. J'explique encore plus, j'ai des face MNT créé spécialement pour un travail précis, ces faces doivent être horizontales donc parfois il y a un coin qui n'est pas à la bonne altitude pour diverses raison que je n'expliquerai pas ici, mais mon interet actuellement est que par une simple selection (entget) d'une face puis en entrant une altitude manuellement, les 3 coins de la face sélectionné changent... au lieu de faire défiler un par un les coins par la fonction propriété qui va me prendre une journée vu le nombre de face a vérifier.
  3. merci pour ta réponse didier @+ Pierre.
  4. Bonjour à tous, Voici mon cas, j'ai plusieurs fenêtres dans une seul présentation et je souhaiterai pouvoir obtenir chaque fenêtre dans un onglet présentation individuelle. exist-il une fonction pour çà dans la version v2008 ou peut etre v2009? Ou dois-je créer un lisp ? Ceci dans le but de pouvoir exporter les présentations depuis autocad v2009 pour infos nous possédons autocad 2008 et 2009. Merci pour votre aide, Pierre.
  5. c'est parfait ! c'est exactement ce que je voulais savoir, merci encore, chapeau bas ! @+ Pierre. [Edité le 16/11/2008 par pierrevig]
  6. Merci, pour cette infos çà roule. Et j'ai une autre question, j'ai des calques "geler" dans une fenêtre et pas dans l'espace objet ou dans les autres fenêtres. j'aimerai faire passer les calques en Geler dans toutes les fenêtres et aussi dans l'espace Objet. Comment faire, j'ai du mal là. Merci de votre aide, Pierre.
  7. Bonjour à tous, Je souhaiterai savoir s'il est possible de faire un ssget uniquement des objets visibles à l'écran. j'essai avec "X" mais celui ci parcours toute la base de donnée. Merci de votre aide, Pierre.
  8. Merci, j'ai finalement fait avec le repeat . Merci didier @+
  9. Bonjour, je souhaiterez soustraire une premier selection à une autre. d'aprés ce que j'ai pu trouver ici et là, il me faut passer chaque élément dans une boucle et comparer pour supprimer ou creer une nouvelle selection à partir des deux... Bref je me perd un peu là. Déjà que mon lisp pèse prés d'une tonne et est un peu lent à cause du nombre d'objet à traiter et de plusieurs manip effectué, j'aurai souhaité trouver ou faire une fonction légère (donc pas de moi !) du genre grossomodo : (setq ss1 (ssget "X")) (setq ss2 (ssget "W" (pt1 pt2))) (setq ss3 (- ss2 ss1)) ou (setq ss3 (ssdel ss2 ss1)) l'impossible idéal quoi... ou alors comment faire le plus simple et efficace possible sachant que chaque selection comporte pas mal d'éléments. le but de cette manoeuvre consiste à effacer du dessin ss3. ou mieux encore..., je peux creer un cadre à la place de ss2. sachant que je voudrais effacer tout ce qui se trouve à l'extèrieur de se cadre, genre clipping... Merci de votre aide, Pierre. [Edité le 11/11/2008 par pierrevig]
  10. pierrevig

    Lisp REA de Patrick_35

    C'est génial, merci beaucoups Patrick_35. pour compléter mon explication: Pour afficher la surface d'une polyligne, l'utilisateur choisi par une boite dcl le type de surface, soit : Lotissement, copro, division ou simple. avec possibilité de choisir l'échelle du dessin. si l'utilisateur choisi Lotissement, après la sélection de la polyligne, il choisi l'emplacement du texte et ainsi, il aura directement un numéro de Lot encerclé qui s'incrémente à chaque selection de polyligne et dessous l'affichage de la surface sans le "s=" et sans décimale. s'il choisi Copro, il aura un texte "désignation" et desous la surface avec le "S=" et une décimale et encore dessous "H.s.pl=". si division il aura, le texte "Lot A" et dessous la surface sans "S=" et sans décimale. si simple, uniquement la surface avec "S=" et sans déciamale. Voili, voilou. Merci beaucoups de ton aide Patrick_35, j'ai pu faire comme je voulais. @+
  11. Bonjour à tous, je me sers du lisp REA de Patrick_35 qui est excellent. j'en ai profité pour l'adapté à mes besoins, mais je suis inculte du vlr ou vlax qui semble pourtant bien puissant. Bref, pour comprendre voici les modifs que j'y ai apporté : - création du texte et position au clic sans avoir a selectionner un texte existant. - choix d'un type de surface avant selection de la polyligne (permet de déterminé le nb de décimale et d'ajouter ou pas du texte en fonction du choix "lotissement, copro, division, standard") si je choisi "lotissement" la surface s'affiche par ex: 500m² si je choisi "copro" la surface s'affiche par ex: S= 500.3m² (S= et Une décimale) c'est super tout fonctionnent parfaitement ou presque. Car si dans le meme dessin j'ai une surface "lotissement" et une surface "copro" et que je modifie le contour d'une des deux surfaces, la surface change, mais le type aussi et prend le dernier type de surface selectionné. Et enfin, ma question ? Comment interroger les données "assoc" du texte pour controler sont type de surface et ainsi activer la variable du bon type de surfaceavant qu'elle ne soit re-écrite. le problème vient peut-être de cette partie du Lisp REA de Patrick_35: (defun modif_poly(obj rea arg-list) (if (and (vlax-read-enabled-p obj)(vlax-read-enabled-p (vlr-data rea))) (vla-put-textstring (vlr-data rea) (strcat prefix1 (rtos (vla-get-area obj) 2 nbdecimale) "m²")) (vlr-remove rea) ) ) Merci à tous de votre aide, Pierre.
  12. Sorry, çà ne fonctionne pas il semble que la variable "ok" est validé à la création de la boucle, soit "ok = 24" la dernière boucle réalisé: (action_tile (strcat "im" (itoa n))) (setq ok (nth n lst)) hors (je crois..) qu'en ajoutant les guillemets, la variable "ok" ne s'initialise que lors de la validation par le dcl: (action_tile "im1" "(setq radiook (nth 1 bloc1))") mais ce n'est pas grave, je vais rester avec mes lignes d'origines. Merci Gile.
  13. Salut, merci de ta réponse, en faite, dans mon code réel j'avais mis un "i", mais remplacé ici par un "T" pour qu'il soit plus visible... sinon, je ne savais pas que le T est réservé. Je comprend ce que normalement c'est la valeur $value, mais mon code dcl n'est pas une list. C'est un code récup sur afralisp qui permet de choisir une image. Voici un morceau du DCL: ...... :image_button{ key="im0"; width=15; height=5; fixed_width = true; allow_accept = true ; } :image_button{ key="im1"; width=15; height=5; fixed_width = true; allow_accept = true ; } :image_button{ key="im2"; width=15; height=5; fixed_width = true; allow_accept = true ; } ...... et un morceau du lisp: ....... (setq io (dos_dir "C:\\PV_Autocad_lisp\\cartouche\\*.dwg")) (setq n (length io)) (setq i 0) (repeat n (setq width (dimx_tile (strcat "im"(itoa i))) height (dimy_tile (strcat "im"(itoa i)))) (start_image (strcat "im"(itoa i))) (fill_image 0 0 width height 0) (slide_image 0 0 width height (strcat (itoa i)".sld")) (end_image) (setq i (1+ i)) ) ...... (action_tile "im1" "(setq radiook (nth 1 bloc1))") (action_tile "im2" "(setq radiook (nth 2 bloc1))") (action_tile "im3" "(setq radiook (nth 3 bloc1))") (action_tile "im4" "(setq radiook (nth 4 bloc1))") (action_tile "im5" "(setq radiook (nth 5 bloc1))") ...... le code fonctionne bien, mais par curiosité, je souhaiterai mettre l'action_tyle en boucle.
  14. Bonjour, juste une question par hasard, je dois tapez une ligne "action_tile" 20 fois et pour pas grand choses, c'est à dire : (action_tile "im0" "(setq ok (nth 0 list))") (action_tile "im1" "(setq ok (nth 1 list))") (action_tile "im2" "(setq ok (nth 2 list))") (action_tile "im3" "(setq ok (nth 3 list))") (action_tile "im4" "(setq ok (nth 4 list))") ...... Mais plutôt, je souhaiterai faire une boucle, et v'là un hic, je n'arrive pas à mettre ma variable "T" dedans pourquoi ? (setq list (list "0.005" "0.01" "0.02" "0.5" .......)) (setq T 0) (repeat 24 (action_tile (strcat "im"T) "(setq ok (nth [b]T[/b] list))") (setq T (1+ T)) ) Merci de votre aide, Pierre.
  15. pierrevig

    problème \"list\"

    C'est parfait ! Un grand Merci à Patrick_35
  16. Bonjour à vous tous, Je souhaite savoir comment on peut ajouter un composant dans une list, j'ai essayé "itoa" str$, etc... Mais rien ne fonctionne, je desespère de bloquer sur çà, donc voici le bout de code rebelle. (setq echelleG (* 100 (getvar 'LTSCALE))) (setq echelle1 (list echelleG "50" "100" "200" "250" "500" "1000" "2000" "2500" "5000")) Donc voilà, je souhaite ajouter la variable "echelleG" au debut de la liste, qui sera ensuite utiliser dans un dcl Ou alors, comment mettre le focus sur un item d'une popup_list d'un dcl ? Merci à vous tous, Pierre. [Edité le 30/5/2007 par pierrevig]
  17. Merci à vous tous. @+ Pierre.
  18. Que veux tu dire par là ? mettre les items en boutons? Pourquoi pas, mais ce n'est pas trés jolie..Et puis il peut y en avoir beaucoup... Si possible avec exemple de base svp. Tant que j'y suis j'ai une autre question, j'ai surfé partout mais je n'ai rien trouvé ou alors je n'utilise pas les bon mots clés, bref, pour un autre lisp , je souhaiterai afficher une boite de dialogue avec un aperçu de plusieurs "cartouches" avec choix de l'echelle, je souhaiterai savoir simplement comment afiicher un aperçu d'un dwg dans une boite de dialogue dcl ou odcl ? Si possible avec un exemple de base, autant pour moi que pour tous, car je crois avoir fait tous le web mais je n'ai rien trouvé d'explicite là dessus... Merci à vous tous [Edité le 1/5/2007 par pierrevig]
  19. Merci Gile, Je finissais bien par me douter que le bouton "OK" était obligatoire... Sorry pour l'emplacement de ma question. @+ Pierre,
  20. Bonjour, je me suis fait une boite de dialogue qui me propose une liste "boxed_column" celà fonctionne bien, mais je souhaiterai éviter d'avoir à cliquer sur le bouton "OK" aprés avoir choisi un item de la liste... Voici mon DCL : CHOIXtp:dialog {label = "Désignation d'une pièce"; :boxed_column{alignment = centered;width = 25;fixed_width = true;spacer; :list_box{label = "Désignations";key = "tpselec";fixed_width = true;width = 25;height = 10;} spacer; :row{alignment = centered; :button{label="OK";key="ACCEPT";is_default=true;width=5;} :button{label="Annuler";key="CANCEL";width=5;is_cancel=true;} } } } Merci à tous, Pierre. [Edité le 30/4/2007 par pierrevig]
  21. Bonjour à tous, connaissez-vous un moyen (simple et rapide...) de faire un un wbloc d'un fichier dwg et en exportant éventuellement les présentations avec le nouveau fichier créé ? Où alors est-ce faisable en lisp ? Cordialement, Pierre. [Edité le 29/3/2007 par pierrevig]
  22. Bonjour à tous, J'ai finalement fini par réussir à faire tous ce que je voulais, Le principe permet de faire des élévations de façade, quelque soit l'orientation du scu et le tout encadré. Merci à didier et zebulon qui m'ont mis sur la voie. Il y a surement plus simple à faire mais çà fonctionne... (defun c:facade (/ anccmd ancfla ancerr ancosm som pt1 pt2 pt3 ptynew ptnew sel n i nom coord pt1xa ptymini ptynew ptymax ptxmini ptxmax ptx pty ptz) (setq anccmd (getvar "cmdecho" ) ancfla (getvar "flatland" ) ancerr *error* ancosm (getvar "osmode" ) ); fin setq ;redefinition du traitement des erreurs ;************************************** (defun *error* (msg) (command "scu" "p") (setvar "cmdecho" anccmd) (setvar "flatland" ancfla) (setvar "osmode" ancosm) (setq *error* ancerr) (princ) );fin defun error (command "scu" "_v") ; RELEVE DES PTS ET TRANSFORMATION 2D (initget 1) (setq pt1 (getpoint "\n1er point : ")) (initget 1) (setq pt2 (getpoint pt1 "\n2eme point : ")) ; recup des 2 pts (setq pt1x (car pt1) pt1y (cadr pt1) pt1z (caddr pt1)) (setq pt1 (list pt1x pt1y 0)) (setq pt2x (car pt2) pt2y (cadr pt2)) (setq pt2 (list pt2x pt2y 0)) ; selection des points de facade (setq sel (ssget (list (cons 2 "tcpoint")))) (setq oldosmode (getvar "osmode")) (setvar "osmode" 0) ;calcul du point aligné au X (setq pt1xa (+ pt1x 10)) (setq pt3 (list pt1xa pt1y 0)) ; rotation des points parallele au X (command "_rotate" sel "" pt1 "_r" pt1 pt2 pt3) ; modif des points Z selon Y (setq n (sslength sel)) (setq i 0) (repeat n (setq nom (ssname sel i)) (setq coord (trans(cdr (assoc 10 (entget nom))) 0 1)) (setq ptx (car coord) pty (cadr coord) ptz (caddr coord)) ; extraction coord du point d'origine (setq deltaz (- pt1z ptz)) ; calcul le delta entre z et celui du refz (setq ptynew (- pt1y deltaz)) ; ajout du deltaz au y (setq ptnew (list ptx ptynew ptz)) ; nouvelle coord du point (command "_.move" nom "" coord ptnew) ; move le pt a son nouvelle emplacement ; calcul les coordonées max et mini des pts pour le cadre (if (= ptymini nil) (setq ptymini ptynew) ) (if (> ptymini ptynew) (setq ptymini ptynew) ) (if (= ptymax nil) (setq ptymax ptynew) ) (if (< ptymax ptynew) (setq ptymax ptynew) ) (if (= ptxmini nil) (setq ptxmini ptx) ) (if (> ptxmini ptx) (setq ptxmini ptx) ) (if (= ptxmax nil) (setq ptxmax ptx) ) (if (< ptxmax ptx) (setq ptxmax ptx) ) (setq i (1+ i)) ) ; FIN DE LA BOUCLE ; ajoute 5m. pour décaler le cadre des pts (setq ptxmax (+ 5 ptxmax)) (setq ptymax (+ 5 ptymax)) (setq ptxmini (+ -5 ptxmini)) (setq ptymini (+ -5 ptymini)) ; construit les pts du cadre et le dessine (setq ptHD (list ptxmax ptymax 0)) (setq ptBG (list ptxmini ptymini 0)) (command "_rectang" ptHD ptBG) (command "scu" "_p" "") (setvar "osmode" oldosmode) (princ) ) [Edité le 27/3/2007 par pierrevig]
  23. J'ai encore mieux de ce que je voudrais faire et en image s'il vous plaît... http://freejeux.free.fr/test.jpg [Edité le 25/3/2007 par pierrevig]
  24. Bonjour à tous, Pour mon 2ème lisp, Le principe consiste a dessiner les points relevés d'une façade de batiment, en général les points brut se retrouve tous les un sur les autres sur une ligne (façade du batiment) puisque ils sont principalement différent en Z. Pour çà, je selectionne (ssget) les points interessant de la façade et indique le sens de la façade par 2 pts, puis je transfert les z en y et dessine la ligne horizontal du batiment , jusque là j'y arrive, mais je n'arrive pas à aligner mon dessin parallele à l'écran, car il se trouve que mon scu n'est pas forcément aligné à l'écran... j'ai essayé ttes sortes de manière mais rien à faire, je flanche... Question : 1 - Comment aligner mon dessin a l'écran ? 2 - dessiner un cadre autour de mon dessin ? Merci à vous tous, Pierre. Voici mon code qui fonctionne : (defun c:test (/ som pt1 pt1x pt1xa pt1y pt2 pt2x pt2y pt3 sel n i nom coord ptx pty ptz pto ptn ) ; RELEVE DES PTS ET TRANSFORMATION 2D (initget 1) (setq pt1 (getpoint "\n1er point : ")) (initget 1) (setq pt2 (getpoint pt1 "\n2eme point : ")) ; selection des points de facade (setq sel (ssget (list (cons 2 "tcpoint")))) (setq oldosmode (getvar "osmode")) (setvar "osmode" 0) ; recup (setq pt1x (car pt1) pt1y (cadr pt1) pt1z (caddr pt1)) (setq pt1 (list pt1x pt1y 0)) (setq pt2x (car pt2) pt2y (cadr pt2)) (setq pt2 (list pt2x pt2y 0)) ;calcul du point aligné au X (setq pt1xa (+ pt1x 10)) (setq pt3 (list pt1xa pt1y 0)) ; rotation des points parallele au X (command "_rotate" sel "" pt1 "_r" pt1 pt2 pt3) ; modif des points Y selon Z (setq n (sslength sel)) (setq i 0) (repeat n (setq nom (ssname sel i)) (setq coord (cdr (assoc 10 (entget nom)))) (setq ptx (car coord) pty (cadr coord) ptz (caddr coord)) ; extraction coord du point d'origine (setq deltaz (- pt1z ptz)) ; calcul le delta entre z et celui du refz (setq ptynew (- pt1y deltaz)) ; ajout du deltaz au y (setq ptn1 (list ptx ptynew ptz)) ; nouvelle coord du point (command "_move" nom "" coord ptn1) ; move le pt a son nouvelle emplacement (setq i (1+ i)) ) ; FIN DE LA BOUCLE ; dessine la ligne d'horizon par rapport à la façade (setq dis (distance pt1 pt2)) (setq li (polar pt1 0 dis)) (command "_line" pt1 li "") (setvar "osmode" oldosmode) (princ) ) [Edité le 25/3/2007 par pierrevig] [Edité le 25/3/2007 par pierrevig]
  25. Merci Bonuscad, je modifie tous çà. @+
×
×
  • 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é