Aller au contenu

bonuscad

Membres
  • Compteur de contenus

    5 029
  • Inscription

  • Dernière visite

  • Jours gagnés

    56

Tout ce qui a été posté par bonuscad

  1. bonuscad

    Type ligne bizarre

    Un p"tit truc pour t'aider à régler en visuel ton échelle de type de ligne, tu pourras ainsi essayer plusieurs valeurs avant de valider ton échelle. En effet la modification n'est visible qu'après un regen de l'écran. (defun dlterr (ch) (cond ((eq ch "Function cancelled") nil) ((eq ch "quit / exit abort") nil) ((eq ch "console break") nil) (T (princ ch)) ) (setq *error* olderr) (princ) ) (defun c:dechltp ( / ent cle nwelt olderr) (setvar "cmdecho" 0) (setq olderr *error* *error* dlterr) (setq cle "No") (prompt "\n Sélection d'une entité test : ") (cond ((setq ent (nentsel)) (while (= cle "No") (princ "\n Entrer l'échelle du type de ligne ?<") (prin1 (getvar "LTSCALE")) (princ "> : ") (initget 6) (setq nwelt (getreal)) (if (= nwelt ()) (setq nwelt (getvar "LTSCALE"))) (setvar "LTSCALE" nwelt) (entupd (car ent)) (initget "Oui Non _Yes No") (setq cle (getkword "\n OK pour cette résolution[Oui/Non] ?< O > : ")) (if (eq cle ()) (setq cle "Yes")) ) (command "_.regenall") ) (T (princ "\nSélection vide")) ) (setq *error* olderr) (setvar "cmdecho" 1) (prin1) )
  2. Un autre ecrit rapidement. (à completer pour écrire le résultat dans un fichier) ((lambda ( / layer list_layers js n lst_ents typ_ent cmpt) (setq layer (tblnext "layer" t) cmpt 0) (while layer (if (zerop (boole 1 16 (cdr (assoc 70 layer)))) (setq list_layers (cons (cdr (assoc 2 layer)) list_layers)) ) (setq layer (tblnext "layer")) ) (cond (list_layers (textscr) (foreach e list_layers (setq js (ssget "_X" (list (cons 8 e)))) (setq n -1 lst_ents '()) (cond (js (repeat (sslength js) (setq typ_ent (cdr (assoc 0 (entget (ssname js (setq n (1+ n))))))) (if (not (member typ_ent lst_ents)) (setq lst_ents (cons typ_ent lst_ents)) ) ) (if lst_ents (progn (print (strcat "Le calque " e " contient: ")) (setq cmpt (1+ cmpt)) (foreach x lst_ents (if (>= cmpt 32) (progn (princ "\n<-- Tapez une touche pour la suite -->") (grread) (setq cmpt 0) ) (setq cmpt (1+ cmpt)) ) (princ "\n\t\t") (princ (itoa (sslength (ssget "_X" (list (cons 0 x) (cons 8 e)))))) (princ " ") (princ x) ) ) ) ) ) ) ) ) (prin1) )) [Edité le 15/4/2006 par bonuscad]
  3. Pour créer une bibliothèque de clichés, il faut utiliser un module extene à Autocad "SLIDELIB.EXE" en mode console DOS. Le plus simple fait une recherche de ce fichier pour le localiser. Déplace tout tes clichés dans ce même dossier En console DOS dans ce dossier, fais un: dir *.sld > slides.txt puis slidelib mescliché < slide.txt un fichier mescliche.slb devrait êtrer créé dans ce dossier. PS: J'aime pas trop lire en majuscule, et il semble que ça signifie que tu cris ou elève la voix. ;)
  4. Denis, Je n'ai rien à dire de plus sur la syntaxe que (gile), sauf un détail qui ne porte pas à conséquence. Il est préférable d'utiliser (null) au lieu de (not). Null est plutôt destiné aux listes et Not aux atomes. (tblsearch) lui renvoi une liste donc (null) est plus approprié. (mais vu que (tblsearch) renvoi nil (atome) quand il trouve rien , not fonctionne) Par contre je te conseille vivement de rajouter tons dossier "s:/config/phalène/" dans les chemins de recherches d'autocad et ainsi tu pourras faire: (command "-typeligne" "ch" TypLign "phalène.lin" "") Comme ça le jours ou tu changes ton aborecense, tu n'auras pas besoin de passer tout tes lisps en revu pour les corriger pour qu'ils fonctionnent. UN CONSEIL D'AMI n'utilise pas les caractères accentués, sa t'éviteras de te tirer les cheveux par la suite (à moins que tu n'en ais plus déjà) ;) Dernier chose si tu as des amis Quebecois, internationalise tes commandes, si eux sont bilingues, autocad ne l'est pas!
  5. (setq sel (ssget)) (command "_copy" sel "" (setq pA (getpoint)) pause) (setq pB (getvar "lastpoint")) C'était pas loin ! ;)
  6. C'est pas les accords (musicaux) de Yalta, mais ravi de t'avoir rendu heureux. ;)
  7. bonuscad

    vl-catch-all-apply

    Je pense plutôt sous cette forme: (setq n '("c:\\toto.lsp")) (vl-catch-all-apply 'load n) ou alors peut être plus interessant, sous celle-ci: (foreach n '(("c:\\titi.lsp") ("c:\\toto.lsp") ("c:\tatat.lsp") ("c:\\tutu.lsp")) (vl-catch-all-apply 'load n) )
  8. Wahouu , Tramber il esit sont post et en fait un autre avant que je clique sur réponse. Tramber Lucky Luke :P
  9. Pour une fois que le lisp basique est tout aussi efficace en plus simple, je ne vais pas me gêner ;) (cons "Model" (layoutlist))
  10. bonuscad

    Renommer bloc anonyme

    Ceux-ci ne sont pas des blocs anonymes ! Les blocs anonymes ont un nom commencant par * et suivi d'une lettre tel que U ou D (cotations) et d'autres que je ne me souviens plus et un chiffre incrémenter par AutoCad. Les anciennes hachures utilisaient ces noms par U. Je penses qu'autodesk a verrouillé le nom de ces blocs pour éviter que l'on "foute le bazard" dans les cotations par exemples. L'utilisateur peut en créer (par programmation), mais la modification dans les tables devient impossible ou pas du tout aisée.
  11. Dans mon cas, j'ai importé un DXF d'un logiciel tiers. Celui ci m'a produit plein de petite marques de repérage verticale sous forme de polyligne optimisée (toutes de même longueur, et il y en avait beaucoup) dont je n'avais aucune utilité. Au lieu de passer beucoup de temps à les efffacer manuellement (Filtre ne propose pas ce genre de chose), j'ai pu faire ça en quelque secondes (pas le programme ;) ) En fait ceci est utile pour des dessins générés en automatique et importé par la suite dans Autocad. Mais il peut y avoir d'autres raisons, que je n'ai pas en tête
  12. J'ai modifié le post original Pour les espaces à supprimer essayez de le faire comme il faut, là je ne peux pas vous aider :( C'est l'inconvénient de l'interprétation des signes < et > par le forum. Tatonnez si ça ne fonctionne pas du 1er coup. ;)
  13. La ligne originale: (if (<= dis_ent dis_ref) ; si la distance de l'entité est inférieur ou égal à la distance de référence Tu peux changer le test de condition en plusieurs possibilité (= dis_ent dis_ref) ; a priori ce qui t'interesse ou (< dis_ent dis_ref) etc... On peut même envisager aussi l'ajout d'une option comme ceci: (initget 1 "> >= < <= =") (setq key (getkword "\nChoix du test à appliquer [>/>=/< / < =/=]: ")) (if ((eval (read key)) dis_ent dis_ref) ATTENTION aux espace que j'ai du rajouter pour un affichage correct de " < "
  14. bonuscad

    Renommer bloc anonyme

    Essayé avec un bloc anonyme Bien que result -> vrai (vla-put-name result nouvnom) ne fonctionne pas! :casstet: (entmod) ou (vla-put-....) même combat :P
  15. Ouff, ca y est il a compris le (cond :P d'où l'importance de l'ordre des conditions dans certain cas comme le disais mon post en chinois :exclam:
  16. bonuscad

    Renommer bloc anonyme

    Mauvaise nouvelle l'ami ! J'ai essayé de faire quelque chose, mais je me suis heurté à une impossibilité: (entmod) refuse de modifier la table des blocs. Donc pas de solution relativement simple. La seule voie qui resterais peut être possible (mais beaucoup plus lourde à mettre en place), serait de passer par (entmake), avec lui on peut créer des blocs anonyme d'ailleurs, ce que ne peut faire la commande standard "bloc" Pour schématiser, comme si tu explosais ton bloc pour le reconstruire avec un "nom". D'ailleurs a tu essayé cette méthode manuelle pour redéfinir ton bloc avec nouveau nom? Pour info: Les blocs anonymes seront automatiquement purgés, s'ils ne sont pas référencés (insérés) dans le dessin lors de la prochaine ouverture de celui-ci.
  17. Je viens juste de me créer une petite routine pour supprimer des lignes ou polylignes optimisées à 2 sommets d'une longueur donnée. Pour mon besoin, elle a bien fonctionnée, mais c'est possible qu'elle ait encore besoin d'ajustement. Voilà si quelqu'un à besoin de ce genre de truc (defun c:del_line_by_dist ( / dis_ref js nb_ent n key ent dxf_ent lst dxf_10 dxf_11 dis_ent) (initget 69) (setq dis_ref (getdist "\nSaisir la distance de référence des lignes à supprimer: ")) (initget "Tout Selection _All Select") (if (eq (getkword "\nAppliquer à [Tout/Selection] < Tout > : ") "Select") (setq js (ssget '((0 . "LINE,LWPOLYLINE")))) (setq js (ssget "_X" '((0 . "LINE,LWPOLYLINE")))) ) (cond (js (setq nb_ent 0 n -1) (initget "< <= = > = > ") (setq key (getkword "\nChoix du test à appliquer '<' '<=' '=' '> =' '> '? défaut '<=': ")) (if (not key) (setq key "<=")) (repeat (sslength js) (setq ent (ssname js (setq n (1+ n))) dxf_ent (entget ent) ) (cond ((eq (cdr (assoc 0 dxf_ent)) "LINE") (setq dxf_10 (cdr (assoc 10 dxf_ent)) dxf_11 (cdr (assoc 11 dxf_ent)) ) ) ((and (eq (cdr (assoc 0 dxf_ent)) "LWPOLYLINE") (eq (cdr (assoc 90 dxf_ent)) 2) ) (setq lst (mapcar '(lambda (x) (trans x ent 1)) (mapcar 'cdr (vl-remove-if '(lambda (x) (/= (car x) 10)) dxf_ent))) dxf_10 (car lst) dxf_11 (cadr lst) ) ) (T (setq dxf_10 nil dxf_11 nil)) ) (if (and dxf_10 dxf_11) (progn (setq dis_ent (distance (list (car dxf_10) (cadr dxf_10)) (list (car dxf_11) (cadr dxf_11)))) (if ((eval (read key)) dis_ent dis_ref) (progn (entdel ent) (setq nb_ent (1+ nb_ent)) ) ) ) ) ) ) (T (princ "\nAucune ligne trouvée!")) ) (print nb_ent) (princ " Ligne(s) ont été effacées!.") (prin1) ) Pour que le code fonctionne ENLEVER l'espace après tous les symboles > [Edité le 13/4/2006 par bonuscad]
  18. bonuscad

    Renommer bloc anonyme

    Et ce SUJET, ne pourrait pas t'aider? Oops excuse j'avais pas vu que tu y faisait référence. Pourrais tu faire un (entget (car (entsel))) sur un bloc qui te pose problème, et coller en retour. Peut être j'aurais besoin aussi d'un éventuel (entget (entnext (cdar (entget (car (entsel)))))) [Edité le 12/4/2006 par bonuscad]
  19. A une époque ou je voulais utilisé un DVB, j'avais utilisé la syntaxe suivante dans un bouton: ^C^C(command "_-vbarun" "raccord.dvb!raccord_vba.raccord") A l'époque ça fonctionnait bien, maintenant je n'en sais rien. Le VBA ça ne me plait pas et je m'y interesse guère.!
  20. bonuscad

    insertion en masse

    Tu m'as déjà bien inspiré, ce n'est pas encore un reflexe, mais ça va venir. Je suis un peu plus long qu'avant pour assimiler, c'est lâge :P Faut dire qu'y en a une floppée de ces fonctions (vl-...) Je trouve que certaines fonctions apportent peu (quelques lignes de lisp basiques en moins) Mais d'autres simplifient énormément la vie, du moins évitent d'écrire des sous-fonctions évoluées. Mais (gile) les réécris pour LT-Extender ;) D'autres exemples de votre part vont encore me faire évoluer. Tu l'as beaucoup utiliser pour faire de l'échange avec excel, mais là c'est pas le domaine qui m'interresse le plus, du moins je l'évite car je n'aimes pas trop être lié aux évolutions et au parc des Soft de MicroSoft (patch DLL et compagnie, y a déjà assez avec ceux d'Autodesk) Merci sergeluc, ravi de t'avoir aider pour pouvoir continuer ton dévellopement.
  21. Ici ca ne sert à rien, à part numéroter les format au centre. Il faut bien te dire que ce code à été sorti de son contexte original pour pouvoir commenter la partie obscure (de la force :P ) Cette fonction (grread) est assez difficile à cerner quand elle est employée en boucle. Moi je l'adore, le seul et GROS inconvénient; l'accrochage aux objets ne peut se faire (en tout cas pas de manière simple) Mais quand on arrive à comprendre ses possibilités on peut faire de belles choses.
  22. Il me semblait avoir évoquer le fonctionnement. :mad: un exemple alors, colle ce qui suit en ligne de commande et observe les résultats. (foreach arg '(7 6 5 4 3 2 1 0 -1 -2) (cond ((> arg 5) (print arg) (princ " -> l'argument est > à 5.")) ((> arg 4) (print arg) (princ " -> l'argument est > à 4.")) ((> arg 3) (print arg) (princ " -> l'argument est > à 3.")) ((> arg 2) (print arg) (princ " -> l'argument est > à 2.")) ((> arg 1) (print arg) (princ " -> l'argument est > à 1.")) ((>= arg 0) (print arg) (princ " -> l'argument est > ou = à 0.")) (T (print arg) (princ " -> l'argument est négatif!")) ) (princ) ) Et pour parfaire l'exemple (foreach arg '(7 6 5 4 3 2 1 0 -1 -2) (cond ((>= arg 0) (print arg) (princ " -> l'argument est > ou = à 0.")) ((> arg 1) (print arg) (princ " -> l'argument est > à 1.")) ((> arg 2) (print arg) (princ " -> l'argument est > à 2.")) ((> arg 3) (print arg) (princ " -> l'argument est > à 3.")) ((> arg 4) (print arg) (princ " -> l'argument est > à 4.")) ((> arg 5) (print arg) (princ " -> l'argument est > à 5.")) (T (print arg) (princ " -> l'argument est négatif!")) ) (princ) ) Alors !? que ce passe t-il? [Edité le 11/4/2006 par bonuscad]
  23. bonuscad

    Point OU distance

    Bred, Il y avait ce SUJET qui rejoint un peu celui-ci
  24. Ben tu peux l'essayer! (dans un dessin vierge) Normalement ça mord pas :P Trève de plaisanterie, ça sert à agencer un nombre (que tu fixes) de format A4-A3 en dynamique. Là le format est en mm, mais on pourrait sophistiquer pour inclure d'autre unités. Voilà, c'est tout, mais ça montre surtout la fonction (grread) en boucle qui permet de faire des trucs sympa avec un interactif visuel.
  25. bonuscad

    Point OU distance

    Je répond à la place de (gile) Avec (setq, tu peux affecter plusieurs variable d'affilé sans répéter (setq var valeur) à chaque fois. (setq var1 valeur var2 autrevaleur var3 encore-une-autre .......) est valide. Donc pt2 prend la valeur de pt1 .Ils deviennent identique et permettent dans ce cas précis de rentrer dans la boucle (while puis qu'ils vérifient sa condition d'égalité.
×
×
  • 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é