Aller au contenu

Bred

Membres
  • Compteur de contenus

    2 764
  • Inscription

  • Dernière visite

Tout ce qui a été posté par Bred

  1. Bred

    Création de blocs à la chaîne

    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) )
  2. Bred

    Création de blocs à la chaîne

    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) )
  3. Bred

    Création de blocs à la chaîne

    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)) )
  4. 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.
  5. Bonjour rafael7776, connais-tu les Attributs ?
  6. 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]
  7. Bred

    Création de blocs à la chaîne

    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]
  8. merci kkwet ! c'est clair, testé, et trés pratique !
  9. Bred

    Création de blocs à la chaîne

    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) )
  10. Bred

    rendu

    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 !
  11. Bred

    rendu

    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.
  12. Salut, Tu pourrais être plus explicite s'il-te-plaît ? :casstet:
  13. Salut, une possibilité : dans l'éditeur visual-lisp d'Autocad, tu fais "vérifier le fenêtre d'édition".
  14. Bred

    xplode impossible

    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) )
  15. Bred

    sauvegarder le menu

    La commande pour charger ses menu perso est : CHARGIUPERSO c'est à dire ? :casstet:
  16. Bred

    sauvegarder le menu

    Tu enregistres tes barres d'outils, menus, etc dans un cui perso que tu charges au besoin. (idem que les mnu 2006....)
  17. 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 ? ....
  18. Bred

    Créer ses propres icônes

    Salut, Outils/Personnaliser http://xs221.xs.to/xs221/07472/2007-11-20_095939.jpg [Edité le 20/11/2007 par Bred]
  19. 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)
  20. 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...
  21. Salut, graphiquement tu pourrais essayé de le faire avec une polyligne 3D. (PS: une vue du dessus ce fait dessous une élévation... ) ;)
  22. Bred

    prob d\'intreface TOTOCAD

    Salut. variable FILEDIA à 1. (je pense que c'est le sujet le plus abordé sur CadXP !....) ;)
  23. Bred

    extruder une esquisse

    Salut, J'ai lancé un post à ce sujet il n'y a pas longtemps ici !. [Edité le 18/11/2007 par Bred]
  24. Bred

    lignes...

    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.
  25. Bred

    lignes...

    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]
×
×
  • 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é