-
Compteur de contenus
2 764 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Bred
-
Re, désolé, c'est pas trés beau... mais ça marche : cela enlève les "wblocs" dont le chemin de support est déclaré. ça enregistre sous c: (à modifier) (defun c:cwb (/ ACDOC B BLOCKS I LST-B-C NBT P S X) (setq AcDoc (vla-get-ActiveDocument (vlax-get-acad-object)) Blocks (vla-get-Blocks AcDoc) lst-b-c nil) (vlax-for o Blocks (if (and (not (vl-string-search "*" (vla-get-name o))) (not (findfile (strcat (vla-get-name o) ".dwg")))) (setq lst-b-c (append (list o) lst-b-c)))) (repeat (setq i (length lst-b-c)) (setq b (nth (setq i (1- i)) lst-b-c)) (command "_-INSERT" (vla-get-name b) "_none" '(0 0 0) "1" "1" 0) (setq b (vlax-ename->vla-object (entlast)) p (vla-explode b) p (vlax-safearray->list (vlax-variant-value p)) s (ssadd)) (mapcar '(lambda (x) (ssadd (vlax-vla-object->ename x) s)) p) (setq NBT (strcat "C:\\" (vla-get-name b) ".dwg")) (command "wbloc" NBT "" '(0 0 0) s "") (vla-delete b) ) (princ (strcat "\n" (rtos (length lst-b-c)) " Wblocs Créés")) (princ) )
-
Salut, Si tu veux parler des "wblocs", voilà un exemple : avec : nom du bloc sous C: (tu peux le modifier) point d'insertion à 0 0 0 puis réinsertion du bloc créer dans le plan. (defun c:wbc (/ NBT sel) (while (or (equal NBT "") (equal NBT nil)) (setq NBT (getstring "\n Nom du Bloc ?" t))) (setq sel (ssget)) (setq NBT [b](strcat "C:\\" NBT ".dwg")[/b]) (command "wbloc" NBT ""[b] '(0 0 0)[/b] sel "") (command "_-INSERT" NBT "_none" '(0 0 0) "1" "1" 0) (princ) )
-
Bonsoir lili2006, c'est cette ligne : (setq NBT (itoa (fix (* (getvar "TDUSRTIMER") 10000000)))) La variable système TDUSRTIMER donne la valeur en jours. Je multiplie cette valeur par 10000000 et je la "fix"afin d'avoir un nombre entier. Je la transforme en string avec "itoa", et cela me fait mon nom de bloc. Bien sûr. Si tu veux lui donner un nom en passant par la ligne de commande, à la place de la ligne ci-dessus automatisant le nom, tu mets : (while (or (equal NBT "") (equal NBT nil)) (setq NBT (getstring "\n Nom du Bloc ?" t)) )
-
lisp rectangle avec texte a l\'interieur
Bred a répondu à un(e) sujet de rafael7776 dans AutoCAD 2008
Re, Tu peux allez voir dans l'aide pour plus d'explication. Mais le principe est de créer un rectangle représentant ton stand dans les bonne dimansions. puis tu y place des attributs (textes) grâce à Dessin / Bloc / Définir les attributs.... là tu y rentre tes invites. Tu crées ensuite un "wbloc" de ce rectangle + attributs. Lorques tu insereras ce blocs, il te sera demandé de remplir les invites avec le texte de ton choix. -
lisp rectangle avec texte a l\'interieur
Bred a répondu à un(e) sujet de rafael7776 dans AutoCAD 2008
Bonjour rafael7776, connais-tu les Attributs ? -
nth inversé .... sur member
Bred a répondu à un(e) sujet de stephan_35 dans Pour aller plus loin en LISP
Salut, la fonction que tu cherches est vl-position (vl-position "c" '("a" "b" "c" "d")) retourne "2" (0 = 1er membre) [Edité le 26/11/2007 par Bred] -
Re, Ce post réponds à tout sur ce sujet : http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=14630#pid tu rajoutes à la fin (après la parenthèse) (princ "\n Taper bcr pour lancer la commande") cela prendras comme point de base toujours 0 0 0 : (defun c:bcr (/ ss nbt) (setq ss (ssget)) (setq NBT (itoa (fix (* (getvar "TDUSRTIMER") 10000000)))) (command "_-block" NBT "_none" '(0 0 0) ss "" "") (command "_-INSERT" NBT "_none" '(0 0 0) "1" "1" 0) (princ) ) (princ "\n Taper bcr pour lancer la commande") Si tu parles des echelles et rotations, c'est de l'autolisp, c'est assez clair en fait, puisque c'est la commande Autocad qui est lancé : (command [b]"_-INSERT"[/b] NBT "_none" '(0 0 0) [b]"1" "1" 0[/b]) [Edité le 26/11/2007 par Bred]
-
Editeur Création de Macro ?
Bred a répondu à un(e) sujet de Bred dans Personnalisation, macros, DIESEL
merci kkwet ! c'est clair, testé, et trés pratique ! -
Salut, vite, fait, une méthode : (defun c:bcr (/ ss p nbt) (setq ss (ssget) p (getpoint "\n Point d'insert :")) (setq NBT (itoa (fix (* (getvar "TDUSRTIMER") 10000000)))) (command "_-block" NBT "_none" p ss "" "") (command "_-INSERT" NBT "_none" p "1" "1" 0) (princ) )
-
C'est pour moi un logiciel parfait.... malgré ces imperfections (mais que l'on arrive toujours à contourner) C'est une autre logique. Mais si Autocad est le logiciel le plus utilisé en DAO, et qu'il le reste... c'est qu'il y a une raison. (entre-autre d'une existence "ancestral", et d'un marketing efficace !...) Va faire un tour dans les différentes sections d'Autocad de ce forum, tu pourras t'en faire une idée !
-
Salut, Sur 2006, le calcul du rendu se fait pour une image fixe, un "cliché". Donc il ne calcul pas en temps réel le rendu d'une pièce que tu déplace. yaya moyen Tu assemble des solides que tu as créés. Par contre tu n'as pas de moteur de mouvement de pièce.
-
Editeur Création de Macro ?
Bred a répondu à un(e) sujet de Bred dans Personnalisation, macros, DIESEL
Salut, Tu pourrais être plus explicite s'il-te-plaît ? :casstet: -
Liste de fonctions d\'un lisp
Bred a répondu à un(e) sujet de vinz34 dans Pour aller plus loin en LISP
Salut, une possibilité : dans l'éditeur visual-lisp d'Autocad, tu fais "vérifier le fenêtre d'édition". -
Salut, Test ça : (lisp de (gile)) (defun c:explode () (vl-load-com) (vlax-for b (vla-get-Blocks (vla-get-ActiveDocument (vlax-get-acad-object)) ) (or (wcmatch (vla-get-Name b) "`**_Space*") (vla-put-explodable b :vlax-true) ) ) (princ) )
-
La commande pour charger ses menu perso est : CHARGIUPERSO c'est à dire ? :casstet:
-
Tu enregistres tes barres d'outils, menus, etc dans un cui perso que tu charges au besoin. (idem que les mnu 2006....)
-
sélection multiple d\'objets - propriété
Bred a répondu à un(e) sujet de rimbo dans AutoCAD, liste de souhaits
Salut, si tu n'es pas sous LT, on peut le faire en lisp. Mais sous quel forme veux-tu les info ? - boite de dialogue ? - Tableau Excel ? - Fichier texte ? - Texte dans dessin ? .... -
Salut, Outils/Personnaliser http://xs221.xs.to/xs221/07472/2007-11-20_095939.jpg [Edité le 20/11/2007 par Bred]
-
Les Lisps de Patrick_35 ne sont pas tous avec des réacteurs... Regarde son lisp "LSTBL" ... Tu n'as pas besoin d'enrgistrer des variables en passant par les USERR... Tu fait une selection de tes blocs. (setq sel (ssget "_X" '((0 . "INSERT")))) ... puis tu les passes tous un par un en revu afin d'en extraire les etiquettes et les valeurs correspondantes : (repeat (setq i (sslength sel)) (setq ref (vlax-ename->vla-object (ssname sel (setq i (1- i))))) (setq lst-att (safearray-value (vlax-variant-value (vla-getAttributes ref)))) (foreach n lst-att (setq lst (append (list (cons (vla-get-TagString n) (vla-get-TextString n))) lst)) ) ) ... tu obtiens ainsi une liste que tu peux enregistrer dans un fichier .csv que tu traites ensuite avec tes macro Excel.... (setq f (open "C:\\TEST.csv" "w") i 0) (repeat (length lst) (princ (car (nth i lst)) f) (princ ";" f) (princ (cdr (nth i lst)) f) (princ "\n" f) (setq i (1+ i)) ) (close f)
-
Salut, Il m'est arrivé le même problème. J'ai été obligé de me créer une extraction d'attribut n'utilisant pas celui d'Autocad. Il est trop spécifique à mes blocs pour qu'il te serves à quelque chose pour les tiens. Regarde dans les Lisp de Patrick_35, tu peux y trouver ton bonheur...
-
Salut, graphiquement tu pourrais essayé de le faire avec une polyligne 3D. (PS: une vue du dessus ce fait dessous une élévation... ) ;)
-
Salut. variable FILEDIA à 1. (je pense que c'est le sujet le plus abordé sur CadXP !....) ;)
-
Salut, J'ai lancé un post à ce sujet il n'y a pas longtemps ici !. [Edité le 18/11/2007 par Bred]
-
merci ;) . J'avoue que je n'en vois pas trop une "utilité indispensable" (surtout que l'on peut faire pareil en quelques manipulations), mais faire ce genre de code permet de se poser des problèmes (et d'essayer de trouver des solutions) qui peuvent se rencontrer dans des lisp plus interressant.
-
Salut, par "jeux", j'ai écrit un petit lisp qui fait ce que tu demandes... en fait, pas vraiment petit... Mais tu peux selectionner comme objet sur lequel projeter ta ligne un cercle, une polylgne, un arc, .... (ps : piquage de routines... merci) (defun c:lint (/ L OB/PT P P1 P2) (setq p1 (getpoint "\n Spécifiez le premier point:")) (while (not ob/pt) (setq ob/pt (entsel "\n Sélectionner l'objet sur lequel projeter la droite Orthogonalement :"))) (if (or (<=val<= (/ pi 4) (angle p1 (setq p (cadr ob/pt))) (* 3 (/ pi 4))) (<=val<= (* 5 (/ pi 4)) (angle p1 (setq p (cadr ob/pt))) (* 7 (/ pi 4)))) (setq p (list (car p1) (cadr p) (caddr p))) (setq p (list (car p) (cadr p1) (caddr p)))) (setq l (vla-AddLine (getSpace)(vlax-3d-point p1)(vlax-3d-point p)) p2 (vlax-invoke l 'IntersectWith (vlax-ename->vla-object (car ob/pt)) acExtendBoth)) (if (> (length p2) 3) (progn (setq lst (lst2mat p2 3) d (distance p1 (setq p2 (car lst))) i (1- (length lst))) (repeat i (if (< (distance p1 (nth i lst)) d) (setq p2 (nth i lst))) (setq i (1- i)))) ) (if p2 (vla-AddLine (getSpace)(vlax-3d-point p1)(vlax-3d-point p2)) (princ "\n ** Impossible de trouver l'intersection avec l'objet. **")) (vla-delete l) (princ) ) (defun getSpace () (if (= (getvar "CVPORT") 1) (vla-get-PaperSpace (vla-get-ActiveDocument (vlax-get-acad-object))) (vla-get-ModelSpace (vla-get-ActiveDocument (vlax-get-acad-object))) ) ) ; Valeur +Grande ou égale et +Petite ou égale que ; 2<=50<=90 -> (<=val<= 2 50 90) => T ; 45<=48<=48 -> (<=val<= 45 48 48) => T (defun <=val<= (val- val val+) (if (and (> val val-) (< val val+)) t (if (or (equal val val-) (equal val val+)) t)) ) ;;; SUBLST Retourne une sous-liste ;;; Premier élément : 1 ;;; (sublst '(1 2 3 4 5 6) 3 2) -> (3 4) ;;; (sublst '(1 2 3 4 5 6) 3 -1) -> (3 4 5 6) ;;; (sublst '(1 2 3 4 5 6) 3 12) -> (3 4 5 6) ;;; (sublst '(1 2 3 4 5 6) 3 nil) -> (3 4 5 6) (defun sublst (lst start leng / rslt) (if (not (<= 1 leng (- (length lst) start))) (setq leng (- (length lst) (1- start))) ) (repeat leng (setq rslt (cons (nth (1- start) lst) rslt) start (1+ start) ) ) (reverse rslt) ) ;;; LST2MAT Retourne un liste de listes du nombre d'éléments spécifié (matrice) ;;; (lst2mat '(1 2 3 4 5 6) 2) -> ((1 2) (3 4) (5 6)) ;;; (lst2mat '(1 2 3 4 5 6) 3) -> ((1 2 3) (4 5 6)) (defun lst2mat (lst n) (if (and lst (zerop (rem (length lst) n))) (cons (sublst lst 1 n) (lst2mat (sublst lst (1+ n) (- (length lst) n)) n) ) ) ) [Edité le 16/11/2007 par Bred]
