-
Compteur de contenus
2 764 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Bred
-
Quadro FX2500M mis à mal ! retour d\'expérience
Bred a répondu à un(e) sujet de zags dans Ordinateurs
oui.... Salut, Il faut rester réaliste.... faire du temps réel 3D en réaliste (ou autre style à calculer) fait partie d"une utopie que beaucoup de personnes ont du mal à comprendre.... Demander à une machine de calculer en temps réel un mouvement de texture (et je ne parle pas d'ombre) n'est pas réaliste, surtout pour les machines standart actuel, et encore plus pour Autocad avec son moteur 3D vieillissant.... Lorque l'on pense que pour faire une seconde de film 3D (dessin animée récent, effets spéciaux....) il faut à X serveurs X temps de calculs, vous comprendrez que vouloir faire "tourner" un solide en faisant calculer à l'ordi tous le paramètres utile en temps réel est impossible !!!! (... pour l'instant ?....) -
Routines pour TEXT/MTEXT - Inférieur/Supérieur
Bred a répondu à un(e) sujet de lecrabe dans Routines LISP
C'est S'là oui.... Corrigé.... Désolé .... :calim: -
Routines pour TEXT/MTEXT - Inférieur/Supérieur
Bred a répondu à un(e) sujet de lecrabe dans Routines LISP
Hop là ! Une sous-routine d'info que je n'ai pas mis... mais inutile. j'ai modifié les codes ci-dessus. -
Salut, je n'ai pas de LT sous la main, mais l'option "Geler ou libérer dans la fenêtre courante" devrait te convenir, si j'ai bien compris... http://xs317.xs.to/xs317/07304/2007-07-26_150359.jpg
-
Routines pour TEXT/MTEXT - Inférieur/Supérieur
Bred a répondu à un(e) sujet de lecrabe dans Routines LISP
Cela dépends de chacun : pour moi, j'ai commencé en ne savant rien, et en cherchant, et surtout en demandant de l'aide dans CADxp, j'en suis là.... -
Salut, je ne pensais pas, mais j'ai eu un peu de mal (à cause de l'incrémentation négative). Fonctionne pour Niveau -999 à Niveau 999. commande : niv+ ou niv- ;;; incrémentation +/- "Niveau" onglet présentation (defun c:niv+ () (incremente-niv +)) (defun c:niv- () (incremente-niv -)) (defun incremente-niv (val / IND IND1 IND2 IND3 L NAME POS-IND) (if (= (getvar "CVPORT") 1) (progn (setq l (vla-get-layout (vla-get-PaperSpace (vla-get-ActiveDocument (vlax-get-acad-object)))) Name (vla-get-Name l) pos-ind (+ (vl-string-search "Niveau " Name) 7) ind1 (chr (vl-string-elt Name pos-ind)) ind2 (chr (vl-string-elt Name (1+ pos-ind))) ind3 (chr (vl-string-elt Name (+ pos-ind 2)))) (if (and (> (ascii ind1) 47)(< (ascii ind1) 58)) (setq ind (atoi (strcat ind1)))) (if (and (> (ascii ind2) 47)(< (ascii ind2) 58)) (setq ind (atoi (strcat ind1 ind2)))) (if (and (> (ascii ind3) 47)(< (ascii ind3) 58)) (setq ind (atoi (strcat ind1 ind2 ind3)))) (if (< ind 0) (progn (vla-put-Name l (vl-string-subst (strcat "Niveau " (rtos (val ind 1))) (strcat "Niveau " (rtos ind)) Name)) ) (progn (vla-put-Name l (vl-string-subst (strcat "Niveau " (rtos (val ind 1))) (strcat "Niveau " (rtos ind)) Name)) ) ) ) (princ "\n *** Fonction non Valable en Espace Objet ***") ) (princ) ) J'en ai profité pour faire la même chose pour l'indice : ind+ ou ind- ;;; incrémentation +/- indice onglet présentation (defun c:ind+ () (incremente-ind +)) (defun c:ind- () (incremente-ind -)) (defun incremente-ind (val / L NAME POS-IND) (if (= (getvar "CVPORT") 1) (progn (setq l (vla-get-layout (vla-get-PaperSpace (vla-get-ActiveDocument (vlax-get-acad-object)))) Name (vla-get-Name l) pos-ind (+ (vl-string-search "indice " Name) 7)) (vla-put-Name l (vl-string-subst (strcat "indice " (chr (val (vl-string-elt Name pos-ind) 1))) (strcat "indice " (chr (vl-string-elt Name pos-ind))) Name)) ) (princ "\n *** Fonction non Valable en Espace Objet ***") ) (princ) )
-
Routines pour TEXT/MTEXT - Inférieur/Supérieur
Bred a répondu à un(e) sujet de lecrabe dans Routines LISP
Salut, à tester : ;;;;;;;;;;;;;;;;;;; ;;; Selectionne texte valeur numérique compris entre ... ;;; mais exclus valeur donné (defun c:selvaltxtex (/ I Q SEL SEL-T VAL VAL-MAXI VAL-MINI LST-VAL-EXCLU VAL-EXCLU) (princ "\n Sélection de Texte numérique par Fourchette de valeur.") (setq val-mini (getreal "\n Valeur minimum :") val-maxi (getreal "\n Valeur Maximum :") sel-T (ssadd) lst-val-exclu nil val-exclu 1) (while val-exclu (setq val-exclu (getreal "\n Valeur à exclure : < Q >")) (if val-exclu (setq lst-val-exclu (append (list val-exclu) lst-val-exclu))) ) (initget "S T") (setq Q (getkword "\n Sélection ou Tous (S/T) ? < S >")) (if (equal Q "T") (setq sel (ssget "_X" (list (cons 0 "TEXT,MTEXT")))) (setq sel (ssget (list (cons 0 "TEXT,MTEXT")))) ) (sssetfirst nil nil) (repeat (setq i (sslength sel)) (setq val (atof (cdr (assoc 1 (entget (ssname sel (setq i (1- i)))))))) (if (and (>= val val-mini) (<= val val-maxi) (not (member val lst-val-exclu))) (ssadd (ssname sel i) sel-T) ) ) (sssetfirst nil sel-T) (if (> (sslength sel-T) 1) (princ (strcat "\n"(rtos (sslength sel-T)) " Textes sélectionnés." "")) (princ (strcat "\n"(rtos (sslength sel-T)) " Texte sélectionné." ""))) (princ) ) Edit : hop là : le bbcode "< S >" me barrait le code.... [Edité le 26/7/2007 par Bred] -
Routines pour TEXT/MTEXT - Inférieur/Supérieur
Bred a répondu à un(e) sujet de lecrabe dans Routines LISP
merci ! :D ... c'est le détail qui tue !.... -
Salut, (setq Tablier (ssget))
-
ajouter / soustraire entite de groupe
Bred a répondu à un(e) sujet de PHILPHIL dans Pour aller plus loin en LISP
Oui, mais j'apprends et j'essaye de faire le mieux possible... le plus "programmation".... Ci-dessous une commande pour ajouter une selection d'objet à un groupe. ;;; ajouter selection à un groupe (defun c:[b]ajoutagr[/b] (/ GROUPES I NOM-GROUPE SEL G) (setq nom-groupe nil) (while (not nom-groupe) (setq nom-groupe (Get-Nom-Groupe (car (entsel "\n Choix du Groupe :")))) ) (princ (strcat "\n Groupe " nom-groupe " sélectionné.")) (setq groupes (vla-get-groups (vla-get-activedocument (vlax-get-acad-object)))) (vlax-for n groupes (if (equal (vla-get-name n) nom-groupe) (progn (setq g n)(vla-Highlight g :vlax-false)))) (princ (strcat "\nChoix des Objets à rajouter au Groupe " nom-groupe)) (setq sel (ssget)) (vla-Highlight g :vlax-True) (repeat (setq i (sslength sel)) (vlax-invoke g 'AppendItems (list (vlax-ename->vla-object (ssname sel (setq i (1- i)))))) ) (princ (strcat "\n"(rtos (sslength sel)) " objet(s) ajouté au groupe " nom-groupe)) (princ) ) ; routine retournant le nom du groupe de l'objet sélectionné (defun Get-Nom-Groupe (sel / GR GROUPES LST LSTF NG VLA-SEL X) (if sel (progn (setq groupes (vla-get-groups (vla-get-activedocument (vlax-get-acad-object))) lstF nil) (vlax-for n groupes (setq ng (vla-get-name n) lst nil) (vlax-for i (vla-item groupes ng) (setq lst (cons i lst)) ) (setq lstF (append (list (cons ng lst)) lstF)) ) (setq vla-sel (vlax-ename->vla-object sel)) (repeat (setq x (length lstF)) (if (member vla-sel (nth (setq x (1- x)) lstF)) (setq gr (car (nth x lstF))) ) ) ) ) gr ) [Edité le 25/7/2007 par Bred] -
ajouter / soustraire entite de groupe
Bred a répondu à un(e) sujet de PHILPHIL dans Pour aller plus loin en LISP
C'est ça, en effet, tu as compris... Mais savoir si c'est la bonne méhode, et la seule, j'avoues ne pas le savoir (mais on va vite l'apprendre : je vois quelqu'un qui est connecté qui va nous sauter dessus !) J'apprends aussi, je cherche... J'étais au début passé par les codes dxf, mais je trouvais le code trop long.... ... pour une fois que j'utilise (vlax-for .... Par contre tu pourrais chercher à ne pas passer pas (command "-GROUPE" ... pour ajouter ou retirer une entitée d'un groupe .... -
Routines pour TEXT/MTEXT - Inférieur/Supérieur
Bred a répondu à un(e) sujet de lecrabe dans Routines LISP
Salut, à tester : (defun c:selvaltxt (/ I Q SEL SEL-T VAL VAL-MAXI VAL-MINI) (princ "\n Sélection de Texte numérique par Fourchette de valeur.") (setq val-mini (getreal "\n Valeur minimum :") val-maxi (getreal "\n Valeur Maximum :") sel-T (ssadd)) (initget "S T") (setq Q (getkword "\n Sélection ou Tous (S/T) ? < S >")) (if (equal Q "T") (setq sel (ssget "_X" (list (cons 0 "TEXT,MTEXT")))) (setq sel (ssget (list (cons 0 "TEXT,MTEXT")))) ) (sssetfirst nil nil) (repeat (setq i (sslength sel)) (setq val (atof (cdr (assoc 1 (entget (ssname sel (setq i (1- i)))))))) (if (and (>= val val-mini) (<= val val-maxi)) (ssadd (ssname sel i) sel-T) ) ) (sssetfirst nil sel-T) (if (> (sslength sel-T) 1) (princ (strcat "\n"(rtos (sslength sel-T)) " Textes sélectionnés." "")) (princ (strcat "\n"(rtos (sslength sel-T)) " Texte sélectionné." ""))) (princ) ) [Edité le 26/7/2007 par Bred] -
Re, Si tu veux en faire une routine : (defun Get-Nom-Groupe (sel / GR GROUPES LST LSTF NG VLA-SEL X) ;;; listes (Groupes (objet1 objet2 ...)) (setq groupes (vla-get-groups (vla-get-activedocument (vlax-get-acad-object))) lstF nil) (vlax-for n groupes (setq ng (vla-get-name n) lst nil) (vlax-for i (vla-item groupes ng) (setq lst (cons i lst)) ) (setq lstF (append (list (cons ng lst)) lstF)) ) (setq vla-sel (vlax-ename->vla-object sel)) (repeat (setq x (length lstF)) (if (member vla-sel (nth (setq x (1- x)) lstF)) (setq gr (car (nth x lstF))) ) ) gr ) => (setq nom-groupe (Get-Nom-Groupe (car (entsel "\n Choix de l'objet :"))))
-
Salut, je viens de faire ça, c'est pas parfait... à poffiner : (il doit y avoir plus simple...) (defun c:grob (/ GROUPES LST LSTF NG VLA-SEL X) ;;; listes (Groupes (objet1 objet2 ...)) (setq groupes (vla-get-groups (vla-get-activedocument (vlax-get-acad-object))) lstF nil) (vlax-for n groupes (setq ng (vla-get-name n) lst nil) (vlax-for i (vla-item groupes ng) (setq lst (cons i lst)) ) (setq lstF (append (list (cons ng lst)) lstF)) ) (setq vla-sel (vlax-ename->vla-object (car (entsel "\n Choix de l'objet :")))) (repeat (setq x (length lstF)) (if (member vla-sel (nth (setq x (1- x)) lstF)) (princ (strcat "\n Groupe : " (car (nth x lstF)))) ) ) (princ) )
-
Re, à tester. "indice X" peut se trouver n'importe où dans le nom : (defun c:ind () (if (= (getvar "CVPORT") 1) (progn (setq l (vla-get-layout (vla-get-PaperSpace (vla-get-ActiveDocument (vlax-get-acad-object)))) Name (vla-get-Name l) pos-ind (+ (vl-string-search "indice " Name) 7)) (vla-put-Name l (vl-string-subst (strcat "indice " (chr (1+ (vl-string-elt Name pos-ind)))) (strcat "indice " (chr (vl-string-elt Name pos-ind))) Name)) ) (princ "\n *** Fonction non Valable en Espace Objet ***") ) (princ) )
-
Salut, Je n'utilise pas Covadis : ma réponse était dans le doute que gi² parlait de la difficulté de gérer une liste d'échelle Autocad sous 2008. Le lisp que je site permet de gérer cela (ce lisp est d'ailleur demandé par Pieroka, utilisateur de Covadis). ... Ceci pour cela .... j'Edit : Hop là, remarque croisé de Pieroka répondant à ta question... Qu'est ce qu'il est bien ce garçon ! [Edité le 25/7/2007 par Bred]
-
Salut, si c'est sous 2008, peut-être ceci te conviendrait....
-
Re, Alors, déjà, voici pour l'indice : Comme je ne savais pas le niveau d'automatisme que tu voulais, j'ai fait le code de tel sorte qu'il faut que tu sois dans l'onglet dont tu veux modifier l'indice, tu lances la commande "ind", et l'indice doit s'incrémenter.... (defun c:ind () (if (= (getvar "CVPORT") 1) (progn (setq l (vla-get-layout (vla-get-PaperSpace (vla-get-ActiveDocument (vlax-get-acad-object))))) (vla-put-Name l (strcat (vl-string-right-trim (strcat "indice " (chr (vl-string-elt (vla-get-Name l) 26))) (vla-get-Name l)) " indice " (chr (1+ (vl-string-elt (vla-get-Name l) 26))))) ) (princ "\n *** Fonction non Valable en Espace Objet ***") ) (princ) ) Attention : n'est valable que pour les noms d'onglets que tu as donné (ou finissans par "indice X") Test le, si le procédé te va, on peux voir la suite... sinon dis le !
-
Non... Au Pastis voyons ! (ça, y'en a !!!!)
-
trouver l\'invite attribut de bloc
Bred a répondu à un(e) sujet de bseb67 dans Pour aller plus loin en LISP
Salut, exemple en passant par les codes dxf, grâce à une routine récursive de Bonuscad : (xplore (car (entsel "\n Choix du Bloc :"))) ;;; Routine de Bonuscad (defun xplore (ent / l) (while ent (setq l (entget ent)) (if (eq (cdr (assoc 0 l)) "INSERT") (xplore (cdr (assoc -2 (tblsearch "BLOCK" (cdr (assoc 2 l))))) ) ) (if (eq (cdr (assoc 0 l)) "ATTDEF") (print (strcat "Etiquette = " (cdr (assoc 2 l)) " ; Valeur = " (cdr (assoc 1 l)))) ) (setq ent (entnext ent)) ) ) -
Re, pour dessiner une polyligne (et pour d'autre chose équivalente), en autolisp il faut vérifier que l'on a toujours une commande active, et la "boucler" tant qu'on ne lui dit pas d'arrêter : (command "_.pline" (while (> (getvar "cmdactive") 0) (command pause) ) )
-
Merci Patrick_35 ! la bière est dans le frigo... y'en a qu'une seule, alors dépeches-toi !!!.... .... trop tards !... ;)
-
Salut et Bienvenue ! Tu n'as qu'à faire une impression en rendu (en pdf).
-
Salut, modifier le nom d'onglet est possible, mais comment veut tu procéder ? Tu lancerais une commande qui chaque fois que tu la lancerais t'incrémenterais les noms de +1 ?
-
Salut, Ne voudrais-tu pas plûtot le faire entièrement en lisp ? (parceque le mélange caractère spéciaux, diesel et lisp n'est pas mon fort....)
