Aller au contenu

DenisHen

Membres
  • Compteur de contenus

    4 029
  • Inscription

  • Dernière visite

  • Jours gagnés

    21

Tout ce qui a été posté par DenisHen

  1. Oh lalalala ! ! ! :o (gile) :o ! ! ! Il a pas déclaré une variable ! ! ! ! :o (defun c:pref (/ ss txt) J'ai bien appris ma leçon t'as vu ? ;) Merci pour ce code.... Mais la vache ! ! C'est du concentré ! ! Waow Denis...
  2. Merci zebulon_... Je n'ai jamais appris...(problème de mémoire). Heureusement, dès que je comprend, dès que le "déclic" a eut lieu, c'est bon, je pourrais toujours recomprendre plus tard... L'inconvéniant, c'est que je peux perdre un temps fou avant de comprendre... Pour la manipulation des listes... Ca commence à venir... Mais le chemin est encore long... La prochaine étape, c'est la liste "DXF" des entités... Comme ce que tu m'as écris dans ta routine... Mais il y a encore trop de truc que je ne maitrise pas, mais que j'utilise par des "copier/coller" dans mes routines... Comme les (ssget '((0 . "*TEXT"))))... les (entget, les (ssname et alors encore moins les (assoc, (subst, (cons, (entmod. Mais je lis et relis l'Aide aux développeurs.... Pour (gile), je regarde ta routine avec les (vl-* (comme dans Gile.lsp ;) ) Je regarde et m'entraine... Merci encore à tous, Denis...
  3. Mais faudrait pas qu'il y en ait qui s'amuse à déplacer la mire... Si non, Comment qu'on fait ? ? ;) Merci Patrick_35... Je commence à voir qu'il en faut pas beaucoup pour s'y noyer, dans les listes... D'un autre coté, plus on peu compliquer, plus on a de possibilités... Tu voulais parler d'un truc comme ça ? (setq p1 (car return) ;premier point de la pline p2 (cadr return) ;deuxième point de la pline return (reverse return) ; inversion de la liste p3 (cadr return) ;avant dernier point de la pline p4 (car return) ;dernier point de la pline ) ;_ Fin de setq
  4. Zebulon_ Merci, c'est exactement ce dont j'avais besoin... Pile Poil ! ! Denis...
  5. fabcad : Parceque ce sont des altitudes, qu'il y en a parfois des centaines et qu'il faut les orienter selon l'entité qu'il cote, et que surtout : 95% sont sans préfix et que les 5% qui restent sont partagés entre "T=" "R=" "F=" "F et R=" On peut même avoir "Repère=" ou "Clou=".... Ont peut aussi avoir dans une coupe par exemple : "Plf=" C'est pour cela que je pense à un préfixe à un texte... Pas toit ? Toute hypothèse est la bienvenue... Zebulon_ : Je regarde ça cette après-midi... Merci à tous, Denis...
  6. Bonjour à tous... Voilà, je cherche à "modifier" un texte en cliquant dessus, exemple : Je clique sur un texte "124.36" et je lui rajoute un préfixe pour avoir "T=124.36"... J'aimerai automatiser ce "T=" J'aimerai quelques conseils ou quelques astuces... Car il va falloir manipuler des ssget..... Et je ne les connais absolument pas, enfin... pas encore... Merci, Denis...
  7. Merci à toi (gile)... Mais j'oublie toujours d'utiliser la console de cette façon... Merci encore, Denis...
  8. Ah bon ? Même ça ? (setq p1 (car return) ;premier point p2 (cadr return) ;deuxième point p3 (nth (- (length return) 2) return) ;avant dernier point p4 (last return) ;dernier point ) ;_ Fin de setq Denis...
  9. Merci Patrick_35, mais celà ne fonctionne que si ma liste comporte 4 éléments... Pour ma routine, ma liste peut en comporter de 2 à une infinité... Si elle en comprte - 2 : p1 et p3 sont confondus et p2 et p4 pareil... - 3 : p2 et p3 sont confondus - 4 ou + : p1 p4 sont 4 points distincts... C'est çà ? Je pense ce sujet résolu... Wais ! ! Merci encore, Denis...
  10. Merci à toi, (gile) On se fais un petit ping pong ? ? ;) je t'ai posté une réponse ds un autre forum... Merci encore, Denis...
  11. J'ai déjà essayé avec (getreal... Mais il n'accepte pas de valeur négative... Je regarde en ce moment un poste de (gile) (tu connais ? ;) qui en traite pour une autre routine que je fais en ce moment même ! ! : (while (= (caddr p1) (caddr p1b)) (if (not (setq p1b (getpoint "\n Spécifiez le second point ou < distance >: " ) ;_ Fin de getpoint ) ;_ Fin de setq ) ;_ Fin de not (setq dist (getdist p1 "\nSpécifiez la distance: ") p2 (list (car p1) (cadr p1) (+ (caddr p1) dist)) ) ;_ Fin de setq (setq p2 (list (car p1) (cadr p1) (caddr p2)) ) ;_ Fin de setq ) ;_ Fin de if ) Pour le (initget 1 "Oui Non"), je suis en train de voir ça sérieusement en fouillant dans les forums... Car l'aide est en Anglais, et je pèche en thermes techniques... Je commence à développer des routines avec des interventions de l'utilisateur... Je travaille en grades (comme ts les géomètres) Mais je crois que "(angle p1 p2)" est calculé par AutoCAD en radians Puis je le converti en grades "(* 200 (/ (angle p1 p2) pi))" et le (if... vérifie si l'angle est bien dans le cadrans, même si je pense que ça ne sert à rien... au sujet d'(angtos... ce truc a eut raison de mon courage... malgrés toutes les lectures des forums en traitant, j'ai laissé tombé (angtos.... Je n'y arrive tous simplement pas... Plustard, peut-être... (pour avis, je suis en grades, sens horaire, 0 zénithal) Merci encore pour tout ! ! ! Eh, t'as vu, j'ai bien appris mes leçons, non ? ;) Denis...
  12. Merci encore... J'ai fais ça : ;return est ma liste de coordonnées (setq p1 (car return) ;premier point p2 (cadr return) ;deuxième point p3 (nth (- (length return) 2) return) ;avant dernier point p4 (last return) ;dernier point ) ;_ Fin de setq J'ai bon ? ;) Je pense que je commence à mieu saisir le code et j'essai de mieu le "synthétiser... Il n'y a pas si longtemp, j'alignais encore les (setq... (setq a 15) (setq b 18) (setq ..... Merci encore à tous, Denis...
  13. Voilà, je cherche à maitriser les (initget. Quelqu'un pourait me traduire le mde d'initget ? Je suis allé sur http://aidacad.com/fr/autolisp.htm mais il n'y a pas le détail des "bits"... 16, 32, 64 et 128, je ne pense pas en avoir besoin (trop compliqué) Merci, Denis...
  14. Par contre, (gile) tu me fais toucher du doigt ma bétise... Je connaissais (reverse, je l'avais dans une routine... Mais elle n'était pas de moi... Merci à vous deux... Je commence seulement à manipuler une liste.... Attention, j'ai dis "je commence"... Et dans "liste", comprenez "toute petite liste" ! ! ;) Encore merci à vous, Denis...
  15. Désolé ! ! remplacer : par : (if (<= (- 500 (* 200 (/ (angle p1 p2) pi))) 400) (setq rot1 (- (- 500 (* 200 (/ (angle p1 p2) pi))) 400)) (setq rot1 (- 500 (* 200 (/ (angle p1 p2) pi)))) ) ;_ Fin de if (if (<= (- 500 (* 200 (/ (angle p3 p4) pi))) 400) (setq rot2 (- (- 500 (* 200 (/ (angle p3 p4) pi))) 400)) (setq rot2 (- 500 (* 200 (/ (angle p3 p4) pi)))) ) ;_ Fin de if Mille excuses...
  16. Bon... J'e fouillé la somme de mes connaissances en Lisp (et c'est vite fais)... Puis, grace aux Cadxpiens... J'ai fais ça : (defun c:phMur (Typ / p1 p2 p3 p4 p1b p4b rot1 rot2) ; Je ne pense pas en avoir oublié... ;;;Typ = Type de mur : B=Bahu (axe) P=Plein (hachures) (setq jspoly (ssadd)) (princ "\nDessinez le mur :") (command "_.pline" (while (not (zerop (getvar "cmdactive"))) (command pause) ) ;_ Fin de while ) ;_ Fin de command (setq jspoly (ssadd (entlast) jspoly)) (setq AcroObjet (getvar "OSMODE")) (setvar "OSMODE" 0) (setq ename (ssname jspoly 0)) (getVertices ename) (setq Epais (atof (getstring "\nÉpaisseur du mur (avec signe) :"))) (setq p1 (car return) p2 (cadr return) p3 (nth (- (length return) 2) return) p4 (last return) ) ;_ Fin de setq (setq p1b (polar p1 (- (angle p1 p2) (/ pi 2)) Epais)) (setq p4b (polar p4 (- (angle p3 p4) (/ pi 2)) Epais)) (if (<= (- 500 (* 200 (/ (angle p1 p2) pi))) 400) (- (- 500 (* 200 (/ (angle p1 p2) pi))) 400) (- 500 (* 200 (/ (angle p1 p2) pi))) ) ;_ Fin de if (if (<= (- 500 (* 200 (/ (angle p3 p4) pi))) 400) (- (- 500 (* 200 (/ (angle p3 p4) pi))) 400) (- 500 (* 200 (/ (angle p3 p4) pi))) ) ;_ Fin de if (if (equal Typ "B") (command "_.offset" (/ (abs Epais) 2) p1 p1b "") ) ;_ Fin de if (command "_.offset" (abs Epais) jspoly p1b "") (setq jspoly (ssadd (entlast) jspoly)) (command "_.line" p1 p1b "") (setq jspoly (ssadd (entlast) jspoly)) (initget 1 "Oui Non") (setq Debut (getstring "Début du mur fermé ?")) (command "_.line" p4 p4b "") (setq jspoly (ssadd (entlast) jspoly)) (initget 1 "Oui Non") (setq Fin (getstring "Fin du mur fermée ?")) (cond ((or (= Fin "n") (= Fin "N")) (command "_chprop" "d" "" "ca" "Titre Cache" "") ) ) ;_ Fin de cond (if (equal Typ "P") (command "_.hatch" "ANSI31" "2" (+ rot1 50) jspoly "") ) ;_ Fin de if (setvar "OSMODE" AcroObjet) (princ) ) (defun getVertices (ename / plineGet vertex vertexGet) (setq return nil) (cond ((or (/= (type ename) 'ENAME) (not (setq plineGet (entget ename)))) (setq return nil)) ((= "POLYLINE" (cdr (assoc 0 plineGet))) (setq vertex (entnext ename)) (while (= "VERTEX" (cdr (assoc 0 (setq vertexGet (entget vertex))))) (setq return (cons (cdr (assoc 10 vertexGet)) return)) (setq vertex (entnext vertex)) ) ;_ Fin de while (setq return (reverse return)) ) ((= "LWPOLYLINE" (cdr (assoc 0 plineGet))) (setq return (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) plineGet))) ) (t (setq return nil)) ) ;_ Fin de cond ) ;_ Fin de defun Bon, faut vérifier les parenthèses, car j'ai enlevé destruc qui ne servent qu'à moi et qui poluraient la routines pour que d'autres l'utilisent... On voit ici très bien que je ne "maitrise" pas encore le Lisp... Et encore moins les (getstring... et les (initget... Merci à tous pour votre aide... Elle m'a été précieuse pour cette routine. Tu as vu (gile) ? J'ai déclaré mes symboles... ;) Denis...
  17. Merci beaucoup à toi, Tramber... Je me noyais dans des boucles (while pour vider la liste jusqu'à ce qu'il ne reste plus que deux éléments........ Mais alors là ! ! (nth ! ! Merci nth... Ca voudrait dire "énième" en anglais ? Merci encore, Denis...
  18. Bonsoir à tous... Voilà, j'ai une liste avec des coordonnées d'une polyligne. Je sais pas combien de sommets elle a (length). J'ai besoin des deux permiers points et des deux derniers... Pour les deux premiers, j'ai réussi avec (car et (cadr... Mais comment faire pour récupérer les deux derniers, je pensais à une commande lisp existante (surtout que j'ai leurs positions), mais je ne la trouve pas. En gros, ce dois être l'inverse de (vl-position Merci, Denis...
  19. DenisHen

    Équivalences à vl-*

    Merci Patrick_35, Si j'aurais su que ça soye si simple... J'aurais pô d'mandé ;) Denis...
  20. DenisHen

    Équivalences à vl-*

    WAOW ! ! Super pratique... pour connaitre les vl-* Existe t'il un vl-.... qui compte les élément d'une liste ? J'y retourne, et merci pour ce post, Denis...
  21. Bonjour à tous... Voilà, tout est dans le sujet... (setq Epais (atoi "-.20")) Mais AutoCAD me répond Y-a un autre truc avec les symboles négatifs que je n'ai pas fais ? ? Merci, Denis...
  22. Merci encore (gile) pour ce lien très précieux... Tellement que j'en ai fais un gile.lsp... Il m'aidera surement à comprendre mieux le lisp, Denis...
  23. Petite précision : Cette routine ne touche QUE les calques se terminant par un nombre précédés d'un "espace"... Ne sont pas concernés : "bla bla200" "blabla 200 B" "200" Sont concernés : "blabla 200" " 200" "blabla 200.529" (mais là, chapeau pour l'échelle) Denis...
  24. Ok, donc AutoCAD m'affiche 200.000. Mais en fait, il a 199.999..... Raison pour laquelle, fix "coupe" la partie décimale et me renvoi 199... Mais j'au trouvé un super truc vachement plus simple... (non, ne te moque pas ;) ) Ech = "200" (setq Ech (rtos (arrondi (atoi Ech)) 2 0)) Mais en l'écrivant, je m'aperçois que c'est nul (puisque Ech est une saisi au clavier), et donc ça ne sert à rien ! ! Pfffff, et comme un âne, j'ai déjà posté ma routine... PFFFFFF.... :casstet: Faut que j'aille corriger ça... Bon, tu peut te moquer ! ! ;)
  25. Bonjour à tous... Bon, je poste pour la première fois, une routine (que je pense) postable Je vais expliquer à quoi elle sert car j'explique très bien ! ! (Il y en a un paquet qui doivent se bidonner en ce moment ;) ) Certains calques contiennent des entités qui n'ont pas de "taille" comme les traits, les points.... Mais d'autres calques en comportent, textes, blocks... Ces derniers peuvent avoir différentes tailles ou échelles selon leur échelle de tracé... Exemple, un texte qui sera dans le calque ".....texte 200". Ce texte ne sera tracé QUE pour faire du 1/200. Donc on libèrera ce calque dans les fenêtre au 1/200 et on le gèlera dans les autres. Il faut avant tout se mettre DANS la fenêtre de l'espace papier. Dans le fichier menu : [->Echelles 1/20]^C^C(c:LayerEchP "20"); [1/25]^C^C(c:LayerEchP "25"); [1/50]^C^C(c:LayerEchP "50"); [1/100]^C^C(c:LayerEchP "100"); [...........] Routines Lisp : ;////////////////////////////////////// Gèle / Libère les calques à l'échelle d'une fenêtre (defun c:LayerEchP (Ech / x_plan) (command "_.zoom" (strcat "1000/" Ech "xp")) (command "-calque" "e" "0" "") (setq x_plan (tblnext "layer" T)) (setq Ech (rtos (arrondi (atoi Ech)) 2 0)) (while (/= x_plan nil) (if (= (numberp (read (FinChaine (cdr (assoc 2 x_plan))))) T) (if (not (equal (FinChaine (cdr (assoc 2 x_plan))) Ech)) (command "-calque" "g" (cdr (assoc 2 x_plan)) "") (command "-calque" "l" (cdr (assoc 2 x_plan)) "") ) ;_ Fin de if ) ;_ Fin de if (setq x_plan (tblnext "layer")) ) ;_ Fin de while ) ;_ Fin de defun ;////////////////////////////////////// DenisH ;////////////////////////////////////// Merci à www.cadxp.com ;) ;////////////////////////////////////// Arrondi un nombre à sa partie entière (defun arrondi (num) (if (< (abs (- num (fix num))) (abs (- num (1+ (fix num)))) ) ;_ Fin de < (fix num) (1+ (fix num)) ) ;_ Fin de if ) ;_ Fin de defun ;////////////////////////////////////// Merci à (gile) ;) ;////////////////////////////////////// Recherche le dernier mot d'une chaine (defun FinChaine (chaine / pos) (setq pos (strlen chaine)) (while (and (not (equal (substr chaine pos 1) " ")) (> pos 1)) (setq pos (- pos 1)) ) ;_ Fin de while (setq chaine (substr chaine (+ pos 1) (- (strlen chaine) pos))) ) ;_ Fin de defun ;////////////////////////////////////// Merci à www.cadxp.com ;) J'espère ne rien avoir oublié... Eh ben voilà...Je suis très fière de pouvoir publier enfin une routine de ma composition (enfin presque). Je contribu maintenant à la vie de ce site et, je l'espère, de tous les Cadxpiens Les remarques sont les bienvenues... Biensur que si elles me flattent ! ! :D Merci à tous et à CadXP, Denis...
×
×
  • 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é