Aller au contenu

Matt666

Membres
  • Compteur de contenus

    736
  • Inscription

  • Dernière visite

  • Jours gagnés

    2

Tout ce qui a été posté par Matt666

  1. Matt666

    Group

    D'accord... Donc function, c'est du vlisp ! Ok merci ! A bientot. Matt.
  2. Matt666

    Group

    Par contre, Gile, la fonction "function" n'est pas par défaut dans l'autolisp de BricsCAD... C'est normal ?? Ou c'est toi qui l'a créé ??
  3. Matt666

    Group

    Encore des function partout !! Décidément faut vraiment que je regarde de ce coté ! Disons que pour l'instant je vois pas une grande nécessité, mais si toi, tu l'utilises, c'est forcément pas pour rien ! A bientot. Matt.
  4. Matt666

    encercle texte

    Le décapode Têtu :) : Oui c'est vrai. Plus simple à coder, en plus ! Par contre pour ACLT, vu qu'ils n'ont pas de possibilité de lisp, ça change pas grand chose (les pauvres !!)... Gile : Ah ok d'ac ! Merci pour la précision.. [Edité le 15/11/2007 par Matt666]
  5. Matt666

    encercle texte

    Bah pas forcément une hachure, puisqu'une hachure change de couleur en fonction de la couleur d'affichage... Ptet plutot une image ! Ca ressemble fortement à l'outil express, mais en muitligne, et en mieux ! Je trouve que le décapode, malgré son poids, a de bonnes idées :thumbup: Désolé, je charrie... A bientot Matt.
  6. Matt666

    Group

    Pour voir les codes DXF d'une entité, essaye ceci : (entget (car (entsel))) Tu groupes deux entités et tu cliques sur l'une d'entre elles... Essais faits avec BricsCAD : Avant : Après : Changement : (102 . "{ACAD_REACTORS") (330 . ) (102 . "}") Voilà ! A bientot. Matt.
  7. Matt666

    encercle texte

    C'est quoi la fonction "function" ?
  8. Matt666

    PETIT SONDAGE

    Salut ! Dément j'avais jamais vu ce post !! On en apprend pas mal là dessus, quand même ! Pour ma part, Je suis de Rennes, en bretagne (oui enfin ça dépend pour qui !). j'ai un cursus productique bois & ameublement. J'ai débuté sur AutoCAD pendant mes études, version 2000. après avoir commencé une formation de technicien CAO DAO à l'aftec, je me suis aperçu que j'apprenais plus en entreprise qu'en cours, j'ai donc arrêté.. Ensuite j'ai trouvé de dessinateur dans une société de gestion de patrimoine immobilier, où ils avaient souvent besoin de petits "plus" autocad. C'est là que je me suis intéressé à la prog. J'ai beuacoup ramé, jusqu'à trouver ce site. Merci à toutes les "brutes" du lisp, en passant !! Maintenant je suis dans une société de menuiserie agencement à coté de Rennes. Ici on utilise BricsCAD, un clone plutot pas pal d'autoCAD. Ils n'ont pas forcément besoin d'outils supplémentaires, mais étant mordu de lisp, j'ai du mal à m'en empécher !!! Je viens de tester Sketchup gratuit qui s'avère simplissime d'utilisation, et pour les présentations clients, c'est parfait. Mais coté technique rien ne vaut (à mon sens) un bon vieux AutoCAD & co... Voilà voilà ! Merci à patrick pour ce forum génial. Il est devenu indispensable pour moi !! A bientot. Matt.
  9. Matt666

    Créer ++ fichiers sld

    Tu peux utiliser SAS, de Eric...
  10. Matt666

    Couleur de ligne par défaut

    Houlà.. A mon avis ce n'est pas possible Il faudra passer ta couleur d'écran à autre chose que du noir... même gris foncé, les couleurs de ligne restent blanches.. A bientot. Matt.
  11. Pour ceux qui veulent comprendre cette routine, j'ai retranscris la routine de Gile pour séparer le lisp du dcl. La comparaison n'en sera que plus facile. Le dcl : justify : dialog { label= "Justifier"; : boxed_row { :column { :button { width=12; label= "Haut Gauche"; key="HG"; allow_accept=true;} :button { width=12; label= "Milieu Gauche"; key="MG"; allow_accept=true;} :button { width=12; label= "Gauche"; key="G"; allow_accept=true;} :button { width=12; label= "Bas Gauche"; key="BG"; allow_accept=true;} spacer ; } :column { :button { width=12; label= "Haut Centre"; key="HC"; allow_accept=true;} :button { width=12; label= "Milieu Centre"; key="MC"; allow_accept=true;} :button { width=12; label= "Centre"; key="C"; allow_accept=true;} :button { width=12; label= "Bas Centre"; key="BC"; allow_accept=true;} spacer ; } :column { :button { width=12; label= "Haut Droite"; key="HD"; allow_accept=true;} :button { width=12; label= "Milieu Droite"; key="MD"; allow_accept=true;} :button { width=12; label= "Droite"; key="D"; allow_accept=true;} :button { width=12; label= "Bas Droite"; key="BD"; allow_accept=true;} spacer ; } } spacer; : row { :toggle {label="Point d'insertion fixe"; key="ins";} spacer; cancel_button; } } Le lisp : ;; JU (gile) 14/11/07 ;; Pour justifier des textes simples ou multilignes et des définitions d'attributs ;; à partir d'une boite de dialogue ou de la ligne de commande (commande : -ju) ;; Une option permet de conserver le point d'insertion fixe. ;; Boite de dialogue à nommer "Justifier.dcl" (defun c:ju (/ column ss dcl_id just ins) (if (setq ss (ssget '((0 . "*TEXT,ATTDEF")))) (progn (or (getenv "PointInsertionFixe") (setenv "PointInsertionFixe" "0") ) (setq dcl_id (load_dialog "Justifier.dcl")) (if (not (new_dialog "justify" dcl_id)) (exit) ) (set_tile "ins" (getenv "PointInsertionFixe")) (foreach k '("G" "C" "D" "HG" "HC" "HD" "MG" "MC" "MD" "BG" "BC" "BD") (action_tile k (strcat "(setq just " (vl-prin1-to-string k) ")(if (= \"1\" (get_tile \"ins\")) (setq ins T) (setq ins nil)) (done_dialog)" ) ) ) (action_tile "cancel" "(setq just nil)") (start_dialog) (unload_dialog dcl_id) (if ins (setenv "PointInsertionFixe" "1") (setenv "PointInsertionFixe" "0") ) (and just (justify ss just ins)) ) ) (princ) ) ;; Ligne de commande (defun c:-ju (/ ss par just ins) (if (setq ss (ssget '((0 . "*TEXT,ATTDEF")))) (progn (or (getenv "PointInsertionFixe") (setenv "PointInsertionFixe" "0") ) (while (or (not just) (= just "Paramètre")) (princ (strcat "\nParamètre courant : " (if (= (getenv "PointInsertionFixe") "0") "texte fixe.\t" "point d'insertion fixe.\t" ) ) ) (initget "Gauche Centre Droite HG HC HD MG MC MD BG BC BD Paramètre" ) (setq just (getkword "Entrez une option de justification\n [Gauche/Centre/Droite/HG/HC/HD/MG/MC/MD/BG/BC/BD/Paramètre] : " ) ) (if (or (not just) (= just "Paramètre")) (progn (initget 1 "Oui Non") (setq par (getkword "\nPoint d'insertion fixe ? [Oui/Non]: ")) (if (= par "Oui") (setenv "PointInsertionFixe" "1") (setenv "PointInsertionFixe" "0") ) ) ) ) (and (= (getenv "PointInsertionFixe") "1") (setq ins T)) (and just (justify ss just ins)) ) ) (princ) ) ;; Modifie la justification des textes sélectionnés (defun justify (ss just ins / n elst org pos oj nj x y ang mat dep vert) (repeat (setq n (sslength ss)) (setq elst (entget (ssname ss (setq n (1- n)))) org (cdr (assoc 10 elst)) ) (if (= (cdr (assoc 0 elst)) "MTEXT") ;; texte multiligne (progn (cond ((setq pos (vl-position just '("G" "C" "D"))) (setq pos (+ 7 pos)) ) (T (setq pos (vl-position just '(nil "HG" "HC" "HD" "MG" "MC" "MD" "BG" "BC" "BD") ) ) ) ) (setq oj (cdr (assoc 71 elst)) elst (subst (cons 71 pos) (assoc 71 elst) elst) ) (entmod elst) ;; repositionnement du texte (and (not ins) (setq elst (entget (cdr (assoc -1 elst))) nj (cdr (assoc 71 elst)) y (cond ((and (< 6 oj) (< nj 4)) (cdr (assoc 43 elst))) ((or (and (< 3 oj 7) (< nj 4)) (and (< 6 oj) (< 3 nj 7))) (/ (cdr (assoc 43 elst)) 2.) ) ((or (and (< oj 4) (< 3 nj 7)) (and (< 3 oj 7) (< 6 nj))) (/ (cdr (assoc 43 elst)) -2.) ) ((and (< oj 4) (< 6 nj)) (- (cdr (assoc 43 elst)))) (T 0.0) ) oj (rem oj 3) nj (rem nj 3) x (cond ((= oj nj) 0.0) ((and (= oj 1) (= nj 0)) (cdr (assoc 42 elst))) ((and (= oj 0) (= nj 1)) (- (cdr (assoc 42 elst)))) ((or (and (= oj 1) (= nj 2)) (and (= oj 2) (= nj 0))) (/ (cdr (assoc 42 elst)) 2.) ) (T (/ (cdr (assoc 42 elst)) -2.)) ) ang (angle '(0 0 0) (trans (cdr (assoc 11 elst)) 0 (cdr (assoc 210 elst))) ) mat (mxm (mapcar (function (lambda (v) (trans v 0 (cdr (assoc 210 elst))) ) ) '((1 0 0) (0 1 0) (0 0 1)) ) (list (list (cos ang) (- (sin ang)) 0) (list (sin ang) (cos ang) 0) '(0 0 1) ) ) dep (mxv mat (list x y 0.0)) ) (entmod (subst (cons 10 (mapcar '+ (cdr (assoc 10 elst)) dep) ) (assoc 10 elst) elst ) ) ) ) ;; texte simple ou définition d'attribut (progn (if (= (cdr (assoc 0 elst)) "TEXT") (setq vert 73) (setq vert 74) ) (if (= (cdr (assoc 72 elst)) (cdr (assoc vert elst)) 0) (setq elst (subst (cons 11 org) (assoc 11 elst) elst) ) (setq elst (subst (cons 10 (cdr (assoc 11 elst))) (assoc 10 elst) elst) ) ) (setq elst (subst (cons vert (cond ((wcmatch just "B*") 1) ((wcmatch just "M*") 2) ((wcmatch just "H*") 3) (T 0) ) ) (assoc vert elst) (subst (cons 72 (cond ((wcmatch just "*G") 0) ((wcmatch just "*C") 1) ((wcmatch just "*D") 2) ) ) (assoc 72 elst) elst ) ) ) (entmod elst) ;; repositionnement du texte (and (not ins) (setq elst (entget (cdr (assoc -1 elst)))) (if (= (cdr (assoc 72 elst)) (cdr (assoc vert elst)) 0) (entmod (subst (cons 10 org) (assoc 10 elst) elst)) (progn (setq dep (mapcar '- org (cdr (assoc 10 elst)))) (entmod (subst (cons 11 (mapcar '+ (cdr (assoc 11 elst)) dep)) (assoc 11 elst) elst ) ) ) ) ) ) ) ) ) A bientot. Matt. [Edité le 15/11/2007 par Matt666]
  12. Matt666

    rajouter hachures

    Pour ajouter des hachures : Soit tu ajoutes tes codes (tout ce que contient un fichier pat) directement dans le fichier aclt.pat (il devrait s'appeler à peu près comme ça) Soit tu créés un nouveau fichier pat avec toutes tes hahcures dedans. Il faut juste le placer à un endroit visible de Autocad (genre le c:program files\Autcoad..) Personnellement c'est la dernière option que j'utilise... A bientot. Matt.
  13. pas mal ce petit bout de code ! bravo !! Intéressant à regarder, en tout cas ! Voir comment uiliser vl-filename-mktemp... A bientot ! Matt. [Edité le 15/11/2007 par Matt666]
  14. Matt666

    filtre de calques

    Je ne sais pas si on peut faire ça, cocher une case pour ne plus avoir de filtres de calques.. Par contre tu ce lisp qui te permet de les supprimer.. A bientot. Matt.
  15. Matt666

    Liste de calque lente !!

    C'est peut être du aux filtres de calques beaucoup trop nombreux... aussi...
  16. Matt666

    Nettoyer les polylignes

    Oui, bah t'es plus lourd que moi !! :) A bientot, le décapode jovial.. ;) Matt.
  17. Salut bonuscad ! Merci pour ta réponse !! Tout d'abord BricsCAD a une version Linux, effectivement, mais elle est plus largement utilisée sous windows. C'est un moteur Intellicad comme intelliplus, jetcad, et tous les clones d'autocad (en gros). Je crois que le logiciel (gratuit, évidemment - Vive Linux :) ) pour linux est ArcCAD, mais je ne m'en pas (encore !) servi. qqs précisions : Ca veut bien dire de trouver l'arc de support du texte, c'est ça ? Sinon je vois le principe.. Ce n'est pas une routine évidente, et puis lorsqu'on passe d'un texte simple en texte curviligne, ce même texte n'est plus modifiable.. Il faut créer une autre routine qui réassemble le texte... Mais ça me parait possible ! Merci bonuscad, et bon courage avec ArcCAD ! Je vais l'installer aussi, pour voir.. A bientot ! Matt.
  18. Matt666

    Lumière

    Salut ! Petite question : Comment fait-on pour créer une source lumière autre que le soleil ? Par exemple à l'intérieur d'une pièce... J'ai la version gratuite, ptet qu'avezc la version payante, un outil existe... Merci ! A bientot. Matt.
  19. Matt666

    Nettoyer les polylignes

    Et bah chu pas forcément d'accord avec toi... La routine Ppl supprime des bouts d'entités, et ça c'est pas dément je trouve... Je pense que cette routine sert à nettoyer les polylignes, pas à les modifier.. Mais bon ce n'est que qu'un avis comme un autre ! Et puis comme dis le decapode (enorme ce nom !) : A bientot ! Matt.
  20. Dans les options d'autocad, dans l'onglet sélection tu dois décocher "hachures associatives". De mémoire... Pas sur de l'onglet A bientot. Matt.
  21. Salut BonusCAd, et bravo pour cette routine ! Petite question : Est-il possible de faire la même chose en autolisp ? Attention, je ne te demande pas si tu peux le faire, mais juste si c'est possible... Parce qu'elle m'intéresse, cette routine, mais sous BricsCAD, lpas de Vlisp ! Voilà. Si c'est possible, j'essaierai de m'y coller ! Merci. A bientot. Matt.
  22. Matt666

    Nettoyer les polylignes

    Salut Gile ! Ah oui l'épaisseur ! Pour les arcs à la limite, c'est pas très grave pour moi :) Je comprends parfaitement ton coté perfectionniste :D , tu dois te dire que des cas come ceux ci existent, et qu'il est normal de les prendre en compte... Chapeau bas ! T'es quand même balaise, je n'avais même pas pensé à ce cas là... Ni à l'épaisseur d'ailleurs !! Bravo pour cette vision d'ensemble d'une routine... Pi pour tout le reste aussi !! J'essaierai si j'ai le temps d'apporter ces modif au prog.. A bientot ! Matt.
  23. Matt666

    Nettoyer les polylignes

    J'avais fait un peu la même chose en autolisp... Il doit être beaucoup moins performant, mais il fonctionne à peu près ! C'est pas dut tout la même logique... Faut juste que je le retrouve et je te le montre... Pour me dire ce que tu en penses ! (defun c:OPL (/ ) (princ "\nSélectionner les polylignes à optimiser : ") (setq cmdecho (getvar "cmdecho")) (setvar "cmdecho" 0) (if (setq sel (ssget)) (progn (command "_UNDO" "D") (repeat (setq cn (sslength sel)) (setq ent (ssname sel (setq cn (1- cn))) dent (entget ent) lst (remove-doubles (remove-align (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget ent)))) ) (foreach pt (remove-all lst (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget ent))) (setq n (vl-position pt dent)) (setq nlst (append (sublist dent 0 n) (sublist dent (+ n 4) nil) ) ) (setq dent nlst) ) (entmod nlst) (entupd ent) (princ "\nPolyligne optimisée.") ) ) ) (command "_UNDO" "F") (setvar "cmdecho" cmdecho) (princ) ) ;;; SUBLIST De GILE (defun sublist (lst start leng / n r) (if (or (not leng) (< (- (length lst) start) leng) ) (setq leng (- (length lst) start)) ) (setq n (+ start leng)) (repeat leng (setq r (cons (nth (setq n (1- n)) lst) r)) ) ) ;;; REMOVE-ALIGN De GILE (defun remove-align (lst / rslt) (while (caddr lst) (if (betweenp (car lst) (caddr lst) (cadr lst)) (setq lst (cons (car lst) (cddr lst))) (setq rslt (cons (car lst) rslt) lst (cdr lst) ) ) ) (append (reverse rslt) lst) ) ;;; REMOVE-DOUBLES De GILE (defun remove-doubles (lst) (if lst (cons (car lst) (remove-doubles (vl-remove (car lst) lst))) ) ) ;;; REMOVE-ALL ;;; Supprime tous les éléments d'une liste à partir d'une autre ;;; (REMOVE-ALL '(1 3 5) '(1 2 3 4 5 6 7)) -> (2 4 6 7) (defun REMOVE-ALL (lise lisc) (foreach pt lise (setq lisc (vl-remove pt lisc))) ) ;;; BETWEENP Evalue si pt est entre p1 et p2 (ou égal à) ;;;Lisp de GILE (defun betweenp (p1 p2 pt) (or (equal p1 pt 1e-9) (equal p2 pt 1e-9) (equal (vec1 p1 pt) (vec1 pt p2) 1e-9) ) ) ;;; VEC1 Retourne le vecteur normé (1 unité) de p1 à p2 (nil si p1 = p2) ;;;Lisp de GILE (defun vec1 (p1 p2) (if (not (equal p1 p2 1e-009)) (mapcar '(lambda (x1 x2) (/ (- x2 x1) (distance p1 p2)) ) p1 p2 ) ) ) Merci encore pour ce lisp ! A bientot ! Matt. Edit : Voilà ! Trouvé ! [Edité le 13/11/2007 par Matt666]
  24. Ah ok je savais pas du tout !! Désolé... Et en le laissant ouvert tu peux gérer n'importe quel fichier ? C'est plus simple pour toi ? J'y connais vraiment rien en prog autre que lisp :o Merci !, ok ça a l'air vraiment balaise !! En tout cas merci pour cet outil, et vraiment très instructifs tes jeux du mois sur ton site :D A bientot. Matt.
  25. En tout cas tu ce que je peux en dire, moi, c'est que Patrick a eu une bien bonne idée de créer ce pti forum !! Bravo à vous tous
×
×
  • 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é