Aller au contenu

Worms69

Membres
  • Compteur de contenus

    26
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Worms69

  1. Ca marche :D !!! fallait y penser à celle-là... Tu es impressionnant (gile). Merci
  2. Salut, En fait, la solution que tu proposes joue sur l'épaisseur de la ligne et non pas sur l'épaisseur du shape qui constitue cette ligne. Donc le trait qui est entre les ronds s'élargit, mais pas le rond. Après avoir lu la doc autocad en anglais http://docs.autodesk.com/ACD/2011/ENU/filesACG/WS73099cc142f4875513fb5cd10c4aa30d6b-7f2e.htm , je cherche à créer un shape qui soit plein, ce qui est difficile puisqu'un shape, il me semble, est un objet vectoriel. - j'ai essayé'de créer plein de cercles en décalant à chaque fois de 0.01 mon trait, de manière à avoir quelque chose de plein ou presque ; ca ne me fait figurer toujours qu'un seul cercle - j'ai essayé en faisant un anneau, ca ne marche pas non plus. Mon soucis est d'arriver à dessiner un shape plein...
  3. Bonjour à tous, Je cherche à avoir les deux symboliques linéaires suivantes : - cercle plein (et j'insiste sur le plein), espace, cercle plein, espace - carré plein, espace, carré plein, espace Or j'ai crée, à partir de types de lignes existants les deux symboliques. Mais je n'arrive pas à avoir les formes pleines. Quelqu'un a-t-il une idée? J'ai trifouillé dans les fichiers ltypeshp.shx et ltypeshp.shp, (objet CIRC1 et BOX) mais rien n'y fait, je na'rrive à mettre ces formes pleines. Merci de votre aide
  4. Mercid e votre aide! Je vais essayer de comprendre les simplifications du filtre. [Edité le 23/8/2010 par Worms69]
  5. En fait, je voulais juste changer l'inclinaison des textes et la couleur. Et après avoir lu diverses contributions sur _style ici et là, j'en déduis que c'est plus rentable de le faire à la main. A priori, je n'ai qu'une inclinaison pour tous mes textes... Par contre, je voudrais bien pouvoir changer avec command la couleur et mettre une couleur RGB, si possible. Je vais continuer à chercher Merci de votre aide
  6. Je comptais faire avec command mais c'est parce que je connais que ca pour l'instant. ( defun c:convline () ;affecter la bon type et la bonne couleur aux textes (setq t70_et_t100 (ssget "X" '( (-4 . " (-4 . " (0 . "TEXT,MTEXT") (62 . 70) (-4 . "and>") (-4 . " (0 . "TEXT,MTEXT") (62 . 100) (-4 . "and>") (-4 . "or>") );pour sélectionner les textes et mtextes qui ont 70 ou 100 comme couleur ) ) (sssetfirst nil t70_et_t100) (command "_modtext" t70_et_t100 "" "co" "150")) Sachant qu'ensuite, je souhaite modifier le style de texte et éventuellement la hauteur. [Edité le 20/8/2010 par Worms69]
  7. Bonjour, Pour les lignes, il est possible de modifier les couleurs par des types RGB. Pour les textes, est-il possible de faire la même chose? Cela ne semble pas être le cas à première vue. Faut-il que j'affecte ces textes, en type du calque, dans un calque qui lui aura une couleur de type RGB? Merci de votre aide
  8. C'est bon, à force de réfléchir et d'essayer, j'ai trouvé. (command "chprop" a "" "co" "u" "46,139,87" "") Pardon pour le doublon ; j'essaie de le supprimer, mais ca ne marche pas. [Edité le 19/8/2010 par Worms69]
  9. Bonjour à tous, Je débute en Lisp et je voudrais faire un petit programme, dont voici le début. Je voudrais sélectionner des lignes pour ensuite modifier la couleur. ( defun c:convline () (setq a (ssget "X" '((0 . "ARC,LINE,POLYLINE,LWPOLYLINE") (62 . 34)))) ; sélectionner tous les ARCS, LIGNES, POLYLIGNES qui ont la couleur 34 (command "chprop" a "" "co" "u" "" 46,139,87 "") ) J'ai un problème de syntaxe avec command, l'erreur renvoyée quand j'utilise le programme est Commande: convline chprop Choix des objets: 81 trouvé(s) Choix des objets: Entrez la propriété à modifier [COuleur/CAlque/Tligne/EChltl/EPaisseurl/Hauteur/Matériau/Annotatif]: co Nouvelle couleur [coUleursvraies/CArnet de couleurs] <34>: u Rouge,Vert,Bleu: Couleur non valide. Entrez trois valeurs comprises entre 0 et 255, séparées par une virgule. Merci de votre aide
  10. .... s'l vous plaït, un peu d'aide? merci
  11. (bonne année à tous!) effectivement, la solution de zebulon est efficace et évite toute programmation dés lors que l'on veut ajouter un préfixe (ou suffixe) à un nom de couche ; néanmoins, toujours dans le but de m'améliorer, j'ai un lisp pour renommer des couches qui se présente de la manière suivante : ; 3 possibilités dans le renommage (3 sous-parties) ; si je veux changer tous les noms, 1è sous-partie ; si je veux changer le nom au cas par cas, 2è sous-partie ; si je veux ajouter un préfixe, 3è sous-partie (defun c:layc (/ x y lay1 lay2 lay3 calque) (prompt "Bonjour, choisissez ce que vous voulez faire :") (initget 1 "1 2 3") (setq x (getkword "\n Renommage total (1) ou Renommage couche par couche (2) ou Ajouter un préfixe (3) ? (1 ou 2 ou 3) ")) ; 1ère sous-partie ; change le nom des couches ; tout se fait automatiquement, pas de pause, pas d'entrée clavier, pas de choix dans le renommage, ; un remplacement basic (if (= x "1") (princ "Bienvenue dans le programme qui permet de renommer en 1 coup le nom des couches ") (setq lay1 (tblnext "LAYER" T)) (while lay1 (if (member (cdr (assoc 2 lay1)) '("FGT")) (command "_rename" "_layer" "FGT" "Relief") "") (if (member (cdr (assoc 2 lay1)) '("FA1")) (command "_rename" "_layer" "FA1" "Batiments") "") ; j'ai sucré le reste des lignes concernant les autres couches, car y'en a 50 (setq lay1 (tblnext "LAYER")) ) (princ "\n Traitement n°1 terminé. Ne pas tenir compte du message d'erreur qui va suivre ") (princ) (exit) ; 2è sous-partie ; change le nom des couches ; parcourt 1 à 1 la liste des couches ; affiche le nom de la couche ; demande si on veut changer son nom ; demande le nom de remplacement ; => un remplacement plus "évolué" avec intervention de l'utilisateur à chaque nom de couche (if (= x "2") (princ "Bienvenue dans le programme qui permet de renommer 1 à 1 le nom des couches ")) (setq lay2 (tblnext "LAYER" T)) ;parcourir le tableau (while lay2 ; tant que y'a une couche (setq calque (cdr (assoc 2 lay2))) ; on affecte à "calque" le nom de la couche (princ "\n Le nom de la couche est ") (princ calque) (princ "\n ") (initget 1 "Oui Non") (setq y (getkword "\n Voulez-vous renommer cette couche? (Oui ou Non) ")) (if (= y "Oui") (command "_rename" "_layer" calque (getstring "\n Entrez le nouveau nom pour la couche ") ) ) (setq lay2 (tblnext "LAYER")) ; passe à la couche suivante ) (princ "\n Traitement n°2 terminé. Ne pas tenir compte du message d'erreur qui va suivre ") (princ) (exit) ; 3è sous-partie ; change le nom des couches en rajoutant un préfixe à toutes les couches ; => un rajout de préfix basic devant chaque nom de couche (if (= x "3") (princ "Bienvenue dans le programme qui permet de rajouter un préfixe à tous les noms de couches ")) (setq lay3 (tblnext "LAYER" T)) ;parcourir le tableau (while lay3 ; tant que y'a une couche (setq calque (cdr (assoc 2 lay3))) ; on affecte à "calque" le nom de la couche (princ "\n Le nom de la couche est ") (princ calque) (princ "\n ") ;(initget 1 "Oui Non") ;(setq y (getkword "\n Voulez-vous renommer cette couche? (Oui ou Non) ")) ;(if (= y "Oui") (setq prefixe (getstring "\n Entrez le préfixe que vous voulez ajouter ")) (command "_rename" "_layer" calque (strcat "calque" "prefixe")) ; concaténation ) (setq lay3 (tblnext "LAYER")) ; passe à la couche suivante (princ "\n Traitement n°3 terminé. Ne pas tenir compte du message d'erreur qui va suivre ") (princ) (exit) ) les trois sous-parties marchent séparement (c'est-à-dire dans trois fichiers différentes) mais pas lorsque je les mets ensemble, pour avoir le choix du traitement ; j'ai un soucis : quelque soit ma réponse à la question, je n'arrive pas à lui faire faire la 2è sous-partie, ni la 3è, seule la 1ère marche. J'ai un problème avec le choix dans la question posée au départ : il me faudrait un GOTO, mais j'ai cru comprendre que ca n'existait pas en Autolisp. J'ai trop d'arguments pour pouvoir imbriquer tout. je ne sais plus trop comment faire : j'ai pensé à faire 3 sous-fonctions, et a imbriquer les fonctions de la manière suivante, après le choix au tout début : (if (= x 1) sous_fonction1 (if (= x 2) sous_fonction2 (if (= x 3) sous_fonction3))) mais je sais pas si ca marcherait. il se pose le soucis aussi de la gestion des messages d'erreur, que je ne préfère pour l'instant pas trop aborder ; je souhaite garder la 3è sous-partie, pour l'améliorer ensuite et travailler sur les chaînes de caractères pour par exemple si on rajoute un préfixe, se débrouiller pour que le nouveau ne contienne qu'une majuscule en début de nom (et pas 2 en conservant celle de l'ancien nom...), des trucs dans le genre... je vais chercher en espérant avoir été clair Merci de votre aide
  12. Merci à vous trois pour les conseils, je vais chercher! [Edité le 19/12/2006 par Worms69]
  13. en fait, j'avais oublié des "" autour de FGT dans (if (member (cdr (assoc 2 lay)) '(FGT)) ... et du coup, ca marche :D
  14. le but à terme : parcourir toute la table des noms de couche et ajouter un préfixe à chaque nom. Je pensais qu'au départ, fallait d'abord apprendre à changer le nom d'une couche car changer le nom d'une couche n'est pas très éloignée de rajouter un préfixe à une couche non?? ensuite, une fois qu'on sait comment changer le nom d'une couche, il reste plus qu'à ajouter un préfixe au lieu de modifier... je n'ai surement pas la bonne logique, mais c'est comme ca que je le voyais...
  15. Merci à toi. effectivement, je suis tombé sur cette commande dans l'aide si je fais (hors d'une boucle): (command "_rename" "_layer" "FGT" "Toto23" "") ca marche impeccable par contre si je le mets dans une boucle : (defun C:LAYCHANGE () (setq lay (tblnext "LAYER" T)) (while lay (if (member (cdr (assoc 2 lay)) '(FGT)) (command "_rename" "_layer" "FGT" "Toto23" "") ) (setq lay (tblnext "LAYER")) ) ) ca marche pas... je dois avoir un problème au niveau de : (if (member (cdr (assoc 2 lay)) '(FGT))
  16. Bonjour à tous, je cherche à automatiser le renommage de noms de couches ; le but étant, à la fin, de pouvoir ajouter un préfixe à chaque nom de couche (dans un fichier qui en compte 150). Bref, c'est pas pour aujourd'hui... à partir d'un message posté ici, j'ai trouvé le bout de code suivant posté par (gile) (encore lui :)): (defun C:LAYCHANGE () (setq lay (tblnext "LAYER" T)) (while lay (if (member (cdr (assoc 62 lay)) '(2 50 51)) (command "_.-layer" "_color" 7 (cdr (assoc 2 lay)) "" "") ) (setq lay (tblnext "LAYER")) ) ) ce code permet de changer la couleur (en 7) d'une couche si elle est de couleur 2 ou 50 ou 51. la boucle permet de le faire sur tout le fichier. Partant de là, je veux changer le nom de la couche FGT (qui existe dans mon dessin) en Toto : (defun C:LAYCHANGE () (setq lay (tblnext "LAYER" T)) (while lay (if (member (cdr (assoc 2 lay)) '(FGT)) (command "_.-layer" "_name" "Toto" (cdr (assoc 2 lay)) "" "") ) (setq lay (tblnext "LAYER")) ) oh surprise! ca ne marche pas. pourquoi donc? à quoi sert le dernier (cdr (assoc 2 lay))?? Merci
  17. Worms69

    Colorier un objet

    B'red => effectivement, pourquoi une polyligne et pas un rectangle... mais j'ai besoin d'un point qui soit à l'intersection des diagonales, pour pouvoir tracer l'anneau ensuite... donc si je trace un rectangle, je sais pas encore comment récupérer les coordonnées des 4 sommets pour pouvoir ensuitre définir un point qui sera au centre du rectangle... Patrick 35 => en effet, faut que j'apprenne à "jouer" avec cette variable cmdecho... Merci pour vos remarques constructives
  18. Worms69

    Colorier un objet

    Voilà la version finale ;Poly_rectangle ; dessiner un rectangle par 4 points (defun c:poly_rect (/ pt0 pt1 pt2 pt3 longueur largeur epaisseur rectangl mil-poly pt0x pt0y pt0z) (setq pt0 (getpoint "\nPoint de départ en bas à gauche: ")) (setq pt0x (car pt0) pt0y (cadr pt0) pt0z (caddr pt0)) ; récupérer les coordonnées de pt0 (setq longueur (getdist pt0 "\nLongueur du rectangle: ")) (setq largeur (getdist pt0 "\nLargeur du rectangle: ")) (setq epaisseur (getreal "\nEpaisseur: ")) (setq pt1 (polar pt0 0.0 longueur)); point en bas a droite (setq pt2 (polar pt1 (/ PI 2) largeur)); point en haut a droite (setq pt3 (polar pt2 PI longueur)); point en haut a gauche (setvar "plinewid" epaisseur) ; affecter la vcaleur epaisseur à la variable plinewid (command "polylign" pt0 pt1 pt2 pt3 "C") ; dessiner la polyligne (setq rectangl (entlast)) ; rectangle désigne la polyligne fermée de 4 points ; hachurer le rectangle (setq mil-poly (list (+ pt0x (/ longueur 2)) (+ pt0y (/ largeur 2)) pt0z)) ; centre du rectangle, nécessaire pour le dessin des hachures et du cercle (command "fhach" mil-poly "") ; hachurer (command "_change" (entlast) "" "P" "CO" "T" "255,255,255" "") ; changer la couleur des hachures (command "_change" rectangl "" "P" "CO" "255" "") ; changer la couleur de la polyligne (de la même couleur que les hachures) ; tracer un anneau (command "anneau" 0 (/ largeur 1.5) mil-poly "") ; anneau (command "_change" (entlast) "" "p" "co" 1 "") ; couleur anneau en rouge (1) ) y'a des choses qui pourraient être améliorées, mais pour l'instant, c'est un début encourageant :)
  19. Worms69

    Colorier un objet

    merci pour ton aide, c'est sympa. J'ai remarqué que dans ton programme, on avait une polyligne de 2 points, et cette polyligne avait une largeur et c'est cette largeur qui était colorée. On avait pas vraiment une polyligne de 4 points et une surface délimitée par ces 4 points qui est coloriée. Puis, j'ai aussi appris à utiliser les commandes "_change" et autres, qui sont en fait des commandes autocad... j'aurais pu le deviner tout seul... :P Encore merci
  20. Worms69

    Colorier un objet

    L'un de lisp que tu me cites (drapeau suisse) utilise la commance "_solid" qui crée un "solide 2D à maillage"... c'est une solution... Je serais d'avis de le faire en polilygne personnellement (longueur + largeur = rectangle), et tu changes la couleur comme définis plus haut.... dans ce cas-là, ca change juste la couleur du contour, pas le remplissage (ou alors j'ai rien compris) POur le disque solaire, je pense au hachurage. Ou tu hachures tout (ce qui te permettras d'éviter le risque de superposition du rond plein sur le rectangle..) merci, je retiens ca c'est un peu frustrant : je peux faire un truc pas compliqué, et j'y arrive pas... j'ai pas encore une grosse connaissance au niveau des fonctions, je sais pas trop par où commencer... le problème (mais ce qui fait aussi son intérêt) c'est que y'a pas UNE seule solution possible pour arriver à ce qu'on veut... => oui, je veux bien que tu fasses quelque chose, car je trouve ca de moins en moins rigolo... :(
  21. Worms69

    Colorier un objet

    d'après un poste de Krynn http://www.cadxp.com/sujetXForum-147.htm j'ai cherché moi aussi à dessiner des drapeaux. là, j'essaie celui du japon (= rectangle blanc avec un rond rouge au milieu) (defun C:RECTANGLE () (prompt "Nous allons dessinerle drapeau du japon!") (setq pd (getpoint "\nPremier point: ")) (setq lon (getdist pd "\nLongueur du drapeau: ")) (setq lar (/ lon 2)) (setq p2 (polar pd 0.0 lon)) (setq p3 (polar p2 (/ PI 2.0) lar)) (setq p4 (polar p3 PI lon)) (command "polylign" pd p2 p3 p4 "C" ) (setq centre (list (+ (car pd) (/ lon 2)) (+ (cadr pd) (/ lar 2)) 0.0)) (command "cercle" centre (/ lar 3)) ) je ne pense pas vouloir le hachurer (sauf si hachurer = colorier l'intérieur d'un objet) ; dans le code de Krynn, elle définit 4 pts puis, une fois défini, elle dit que ces 4 points sont un solide et ensuite elle le colorie avec _.fill je n'ai pas trouvé d 'aide concernant ces fonctions dans mon aide autocad (en faisant F1..) je cherche juste à colorier le cercle en rouge et a colorier le fond en blanc... comment on fait pour donner un nom à l'objet cercle que l'on vient de créer avec (command "cercle" centre (/ lar 3)) j'ai essayé avec (setq c1 (command "cercle" centre (/ lar 3))) mais ca marche pas... Merci[Edité le 15/12/2006 par Worms69] [Edité le 15/12/2006 par Worms69]
  22. Worms69

    Colorier un objet

    Je n'ai peut-être pas été clair, je recommence : j'ai dessiné un rectangle : ce rectangle est "vide", ses contours sont noirs, mais il n'est pas colorié, il a la même couleur que l'arrière-plan. je voudrais donc que l'intérieur du rectangle soit colorié d'une couleur. Merci
  23. Bonjour à tous, (toujours aussi débutant en autolisp ;) ) Je voudrais savoir ce qu'il faut faire pour colorier par exemple un rectangle une foisqu'il a été dessiné. J'ai regardé dans l'aide, mais ca me renvoit à du VBA... Merci de votre aide
  24. je crois qu'il manque une parenthèse a la fin de la ligne 11
  25. Worms69

    argument et liste

    pardon, je croyais que autolisp et vlisp était identique.... quelle est la différence? je sais que autolisp et commonlisp sont pas pareil non plus, ce qui est bien embêtant car le tutorial http://dept-info.labri.u-bordeaux.fr/~strandh/Teaching/Programmation-Symbolique/Common/Book/HTML/node88.html concerne le clisp... et que y'a pas d'exos corrigés...
×
×
  • 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é