-
Compteur de contenus
2 764 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Bred
-
Duplique un calque et son contenu !
Bred a répondu à un(e) sujet de stephan35 dans Pour aller plus loin en LISP
:P Ah ben tient, depuis tout à l'heure je me disais que je pouvais simplifier ce code, je le fait, et en fait Patrick m'a devancé.... c'est la même chose, sauf que je le fait avec (repeat .... ;;;;;;;;;;;;;;;;;;;; ; copie objets d'un calque dans nouveau (defun c:cc (/ CONT-L L N-L X) (vl-load-com) (while (not L) (setq L (getstring T ":\n Nom du Calque à dupliquer (avec contenu) :")) (if (not (tblobjname "LAYER" L)) (setq L nil) ) ) (setq N-L (getstring T ":\n Nom du nouveau Calque :") cont-L (ssget "_X" (list (cons 8 L)))) (vla-add (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) N-L) (vla-put-color (vlax-ename->vla-object (tblobjname "LAYER" N-L)) (vla-get-color (vlax-ename->vla-object (tblobjname "LAYER" L)))) (vla-put-linetype (vlax-ename->vla-object (tblobjname "LAYER" N-L)) (vla-get-linetype (vlax-ename->vla-object (tblobjname "LAYER" L)))) [b](repeat (setq x (sslength cont-L)) (vla-put-layer (vla-copy (vlax-ename->vla-object (ssname cont-L (setq x (1- x))))) N-L) )[/b] (princ) ) -
Re, Vite fait, à approfondir : ;;; liste d'écart (defun list_tri_txt () (list [b] "Nom_du_calque" (cons 0 3) (cons 4 9) (cons 10 19)[/b] ) ) ;;; Commande à Lancer (defun c:test () (vl-load-com) (if (setq lst (list_tri_txt)) (progn (repeat (1- (setq x (length lst))) (vla-add (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) (strcat (car lst) "-" (rtos (car (nth (setq x (1- x)) lst))) "_" (rtos (cdr (nth x lst)))))) (setq sel (ssget (list (cons 0 "TEXT,MTEXT")))) (repeat (setq i (sslength sel)) (setq val (atof (cdr (assoc 1 (entget (ssname sel (setq i (1- i)))))))) (repeat (1- (setq x (length lst))) (if (and (> val (car (nth (setq x (1- x)) lst))) (< val (cdr (nth x lst)))) (vla-put-layer (vlax-ename->vla-object (ssname sel i)) (strcat (car lst) "-" (rtos (car (nth x lst))) "_" (rtos (cdr (nth x lst))))) ) ) ) ) ) (princ) )
-
Qualque soit le type d'impression.
-
Ok, merci !
-
Duplique un calque et son contenu !
Bred a répondu à un(e) sujet de stephan35 dans Pour aller plus loin en LISP
RE, En te copiant outrageseument ici. (defun c:cc (/ CONT-L L LST-SEL N-L X COUL-L) (vl-load-com) (setq L nil) (while (not L) (setq L (getstring T ":\n Nom du Calque (+ contenu) à dupliquer :")) (if (not (tblobjname "LAYER" L)) (setq L nil) ) ) (setq N-L (getstring T ":\n Nom du nouveau Calque :") coul-L (vla-get-color (vlax-ename->vla-object (tblobjname "LAYER" L))) cont-L (ssget "_X" (list (cons 8 L))) lst-sel nil) (vla-add (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) N-L) (vla-put-color (vlax-ename->vla-object (tblobjname "LAYER" N-L)) coul-L) [b] (vla-copyobjects (vla-get-ActiveDocument (vlax-get-acad-object)) (vlax-safearray-fill (vlax-make-safearray vlax-vbObject (cons 0 (1- (sslength cont-L)))) (mapcar '(lambda(x) (vlax-ename->vla-object (cadr x))) (ssnamex cont-L))))[/b] [i](repeat (setq x (sslength cont-L)) (setq lst-sel (append lst-sel (list (vlax-ename->vla-object (ssname cont-L (setq x (1- x))))))) ) (foreach n lst-sel (vla-put-layer n N-L))[/i] (princ) ) Mais pour le changement de calque, la question reste en suspend, dirait-on .... -
Salut Patrik_35. Ben je vais te piquer ton filtre alors... mais.... c'est quoi des "Rtexts" ??? :casstet:
-
[LISP - Autocad MAP] Ne prend pas en compte la validation
Bred a répondu à un(e) sujet de Darkthur dans Débuter en LISP
Salut, En lisp, pour valider une commande, c'est "" (deux guillements) . (tu confonds lisp et macro-commande) -
Salut, Je n'utilise que ça pour des gros plan 3D (et surtout en rendu !) C'est une révolution dans Autocad ! Plus la peine d'aller prendre un café en attendant la sortie : je continus à bosser pendant le calcul d'impression. Il est vrais que pour des tirages rapides, il vaut mieux utiliser le tirage en premier plan.
-
Salut, à tester : (defun c:add-txt (/ S SEL X) (setq sel (ssget (list (cons 0 "TEXT,MTEXT"))) s 0) (repeat (setq x (sslength sel)) (setq s (+ s (atof (cdr (assoc 1 (entget (ssname sel (setq x (1- x))))))))) ) (alert (strcat "Somme = " (rtos s))) (princ) ) (defun c:coef-txt (/ COEF N-VAL SEL X L LST-ENT) (vl-load-com) (setq sel (ssget (list (cons 0 "TEXT,MTEXT"))) coef (getreal "\n Coefficient à appliquer :") L (getstring T ":\n Nom du Calque sur Lequel créer les textes :")) (if (not (tblobjname "LAYER" L)) (vla-add (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) L) ) (repeat (setq x (sslength sel)) (setq N-val (* coef (atof (cdr (assoc 1 (entget (ssname sel (setq x (1- x)))))))) lst-ent (cdr (subst (cons 1 (rtos N-val)) (assoc 1 (entget (ssname sel x))) (entget (ssname sel x)))) lst-ent (subst (cons 8 L) (assoc 8 (entget (ssname sel x))) lst-ent)) (entmake lst-ent) ) (princ) ) [Edité le 11/7/2007 par Bred] [Edité le 11/7/2007 par Bred]
-
Duplique un calque et son contenu !
Bred a répondu à un(e) sujet de stephan35 dans Pour aller plus loin en LISP
Salut, fait rapidement, à tester. (defun c:cc (/ CONT-L L LST-SEL N-L X COUL-L) (setq L nil) (while (not L) (setq L (getstring T ":\n Nom du Calque (+ contenu) à dupliquer :")) (if (not (tblobjname "LAYER" L)) (setq L nil) ) ) (setq N-L (getstring T ":\n Nom du nouveau Calque :") coul-L (vla-get-color (vlax-ename->vla-object (tblobjname "LAYER" L))) cont-L (ssget "_X" (list (cons 8 L))) lst-sel nil) (vla-add (vla-get-Layers (vla-get-ActiveDocument (vlax-get-acad-object))) N-L) (vla-put-color (vlax-ename->vla-object (tblobjname "LAYER" N-L)) coul-L) (repeat (setq x (sslength cont-L)) (setq lst-sel (append lst-sel (list (vlax-ename->vla-object (ssname cont-L (setq x (1- x))))))) ) (foreach n lst-sel (vla-copy n)) (foreach n lst-sel (vla-put-layer n N-L)) (princ) ) [Edité le 11/7/2007 par Bred] -
Salut et bienvenue ! Position du curseur : (cadr (grread T))
-
Salut, il y a beaucoup de possibilités pour que ça ne fonctionne pas : - Le solide 3D a été créé avec une version anterieur à 2007. - Tu as fait une opération boléenne sur ton solide As tu essayé de cliquer sur la partie que tu veux modifiés (face, arrête...) en appuyant sur Ctrl en même temps ?
-
Re, (sssetfirst nil nil) fonctionne donc .... merci !!!! Ouaouh !.... En fait j'avais l'impression de ne pas me faire comprendre, pour me rendre compte que je faisais totalement fausse route ! Pour moi, que la selection soit faites avant ou après, c'était toujours le même type de "surlignement" !... Mais non ! Vous venez de me faire découvrir l'évidence : En fait c'est faux de dire "sélection avant commande" ! La "sélection avant commande" est en fait un outils qui lance les grips, et si on lance une commande, l'outils "grips" passe en sélection !.... C'est marrant, je me fait jamais avoir par ce genre de logique (évidente) informatique d'habitude.... je vieillis.....
-
Salut, et bienvenue à un nouveau lispeur ! J'avoues ne pas bien comprendre ce que tu cherches à faire. Tu récupères avec "getpoint" dans p1 une liste de cordonnée sous le forme (x y z) Si tu veux récupérer : x = (car p1) y = (cadr p1) z = (caddr p1) donc si tu veux reconstruire ton point avec un Z différent : (setq new-pt (list (car p1) (cadr p1) alt)) ou donc : (setq New-pt (list (car p1) (- (cadr p1) alt) (caddr p1))
-
Salut, un petit lisp mettant les valeurs des textes dans des cases d'un tableau Excel (au format csv transposable en xls) (defun c:txtxl () (setq sel (ssget '((0 . "*TEXT"))) lst-txt nil) (if sel (repeat (setq x (sslength sel)) (setq lst-txt (cons (cdr (assoc 1 (entget (ssname sel (setq x (1- x)))))) lst-txt)) ) ) (setq nomfichier (getfiled "Nom du fichier Exportation" (strcat (getvar "dwgprefix") (substr (getvar "dwgname") 1 (- (strlen (getvar "dwgname")) 4)) " " (menucmd "M=$(edtime,$(getvar,date),DD-MO-YYYY)"))"csv" 1)) (setq f (open nomfichier "w")) (foreach n lst-txt (princ n f) (princ ";" f)) (close f) (princ) ) par contre, si tu veux spécifier des cellules exactes, il faut plus programmer, en utilisant ces routines par exemple.
-
Salut bonuscad, en fait je n'ai pas tout dit : ça ne fonctionne pas si la selection est faites avant de lancer la commande ! Test ça en selectionnant avant de lancer "test" : (defun c:test (/ sel lst-sel x) (setq sel nil x 0 sel (ssget "I")) (while (not sel) (setq sel (ssget ":L"))) (repeat (sslength sel) (setq lst-sel (append lst-sel (list (vlax-ename->vla-object (ssname sel x)))) x (+ 1 x))) (alert "Test enleves Surbrillance") (foreach n lst-sel (vla-mirror3D n (vlax-3D-point '(0 1 0)) (vlax-3D-point '(2 10 0))(vlax-3D-point '(0 0 0)))) (foreach n lst-sel (vla-Highlight n :vlax-False)) )
-
Ah, ben une manière qui à l'air moins lourde : (command) .... votre avis ?
-
Salut et bienvenue ! c'est peut-être une fonction lisp équivalente aux express... essaye : (c:MAPDIGITIZE) (avec ou sans Under Score) [Edité le 10/7/2007 par Bred]
-
Alors, vla-update ne fonctionne pas (j'ai l'impression que ça me remet à jour la selection, mais sans m'enlever la surbrillance) et (redraw ent 4) ne fontionne pas....
-
pffffffff.... non mais quel c.. je suis !!! :P :P :P désolé bonuscad, j'étais en parrallèle sur un autre post et j'ai mélangé les 2 !!! merci ! merci ! merci ! :calim:
-
Salut, Alors, assez rapidement, on purra aprofondir si tu veux : Pour créer une nouvelle fenêtre, tu peux copier une existante, ou tu ouvres la barre d'outils "fenêtre", et tu y trouveras les outils désiré. Lorque tu as créés cette fenêtre, tu peux y "rentrer" dedans en double cliquant à l'interieur. Tu te trouves alors en espca objet. Tu peux zoomer, travailler, etc... Pour sortir de la fenêtre, tu doubles-cliques à l'exterieur de la fenêtre (ou bouton "objet" dans la barre d'état. etc ....
-
Salut vous deux , et merci ;) Bonuscad : j'ai en effet aussi vu cette remarque, mais j'avous ne pas la comprendre... j'ai essayé aussi avec vla-update, mais je n'ai pas réussis à l'utiliser car cela m'a renvoyer une erreur "update inconnu" ... Patrick_35 : En effet, mais c'est du tapé à la volée et je suis allez encore trops vite : :vlax-False ou 0 n'a pas l'air de fonctionner !.... [Edité le 10/7/2007 par Bred]
-
http://xs117.xs.to/xs117/07281/3iiiiiiiiiiiiiii.JPG
-
Salut, pour enlever la surbrillance d'un groupe d'objet vla (lister dans lst-sel), ceci ne fonctionne pas : (foreach n lst-sel (vla-Highlight n False)) je suis obligé de faire un (vla-Regen (vla-get-ActiveDocument (vlax-get-acad-object)) acActiveViewport) ce qui est vraiment trés lourd !!!! Auriez-vous une solution svp ? merci.
-
Ok placer ta souris ? .... Voici ton cylindre, je veux lui faire faire une rotion de 90 sur les Y (je veux donc m'aligner à la ligne rouge) : http://xs317.xs.to/xs317/07281/1iiiiiiiiiiiiiiiii.jpg voir ligne de commande. (le point d'axe sur Y étant le centre du haut du cylindre) http://xs217.xs.to/xs217/07281/2iiiiiiiiiiiiiiiii.jpg
