Aller au contenu

bseb67

Membres
  • Compteur de contenus

    833
  • Inscription

  • Dernière visite

Tout ce qui a été posté par bseb67

  1. bseb67

    WXREF nouvelle version

    Bon, alors joyeux anniversaire mon petit (Gile) :D :D Un lisp qui dessine une bouteille de champagne et l'ouvre avec un effet de mousse aurait été plus aproprié ;) edit: euh, ne le prend pas mal avec "petit", je dis pratiquement ça à tout le monde car vu mes mensurations, je fait partie d'un groupe restreint de 6% environ de la population française :cool: je donne juste la taille (car le poids risquerai de faire peur ;) ) : 1.93m [Edité le 22/10/2009 par bseb67]
  2. Ah ben tient, la fonction à ElpanovEvgeniy c'est la version lisp de l'algo que j'ai donné :cool: Sinon, la récursivité à de son coté la simplicité et facilité (enfin pour ceux qui en comprenne la puissance), mais un gros défaut: empilement d'appels de la fonction => si trop d'empilement = diminution des performances voir plantage machine car la pile est remplie.
  3. bseb67

    J\'ai perdu le truc

    salut cacar, _.pspace ou _.mspace mais dans ton cas, comme tu veux revenir dans la fenêtre représentant la présentation: _.pspace a+
  4. Je n'ai pas fait de fonction réellement pour ca, mais je pense que si tu veux remplacer un seul caractère par X caractères ou X >= 0 une fonction récursive de ce genre devrait aller (fonction entrée ancien nouveau prendre 1er caractère d'entrée => tmp si tmp = ancien retourner nouveau + (fonction "entrée - 1er caractère" ancien nouveau) sinon retourner tmp + (fonction "entrée - 1er caractère" ancien nouveau) ) Par contre, si tu veux remplacer plusieurs (Y) caractères par X caractères, il faut modifier simplement l'algo de fonction en prenant les Y ers caractères au-lieu du 1er si tmp = ancien retourner nouveau + fonction entrée - Y caractères sinon retourner 1er caractère + fonction entrée - 1er caractère edit: bien-sur il ne faut pas oublier la condition d'arrêt pour la récursivité: entrée = "" et tester si les paramètres sont bien des chaines de caractères [Edité le 20/10/2009 par bseb67]
  5. Salut fabcad, Je ne vois pas où le problème :casstet: (setq index_texte "Rue de l'Eglise" index_texte_dos (dos_strreplace index_texte "'" "' ") index_texte_vl (vl-string-subst "' " "'" index_texte) ) (print index_texte_dos) (print index_texte_vl) "Rue de l' Eglise" "Rue de l' Eglise" Mais je pense que ton exemple n'est pas très bien choisi ;) car (setq index_texte "Ru'e de l'Eglise") on obtient: "Ru' e de l' Eglise" "Ru' e de l'Eglise" => et voilà le problème, vl-string-subst ne le fait qu'une fois il faut boucler pour effectuer le changement sur toute la chaine en entrée. Sauf que .... Attention aux boucles infinies avec des trucs du genre: remplacer "\" par "\\"
  6. Salut, Mettre filedia à 1
  7. Salut adat-btp, Tu n'as pas tort : il me parait plus logique que la numérotation continue, mais je pense que c'est due à une gestion spécifique. De plus, si je clique sur le n° de réponse, je retourne sur le message d'origine du post. Mais je pensais que le lien sur le n° permettait justement de l'insérer dans d'autres post, afin de le faire pointer directement et non le début du post. :casstet:
  8. bseb67

    Challenge 28

    Merci, mais la bouteille ce n'est pas la peine, je ne suis pas fan de boissons alcoolisées. Sauf que je félicite bonuscad pour sa multi-position :)
  9. bseb67

    Challenge 28

    Moi oui :D aller hop je la met, mais comme dit, elle n'est pas des plus courtes: ;-------------------------------------; ; nom: position_bseb67 ; ; role: renvoie la position à laquelle; ; se trouve la sous-liste slst ; ; dans la liste lst ; ; param: slst => liste d'entiers ; ; lst => liste d'entiers ; ; retour: un entier >= 0 ; ; nil si pas trouvée ; ; date: 12/10/2009 ; ; BLAES Sébastien ; ;-------------------------------------; (defun position_bseb67( slst lst / res position cpt tmp) (setq res nil) (cond ; on teste si le nombre d'élément dans lst est >= à celui dans slst ((< (length lst) (length slst)) ; impossible de trouver X éléments dans au plus X-1 éléments ) ; on cherche la position du premier élément de slst ((/= (setq position (vl-position (car slst) lst)) nil) (setq res t cpt 1) ; on compare les éléments un par un (repeat (1- (length slst)) (setq res (and res (= (nth cpt slst) (nth (+ cpt position) lst))) cpt (1+ cpt)) ) (cond ((= res t) ; les éléments sont concordants (setq res position) ) ((= res nil) ; on construit la liste temporaire (setq tmp lst) (repeat (1+ position) (setq tmp (cdr tmp)) ) ; on relance, mais sur les éléments après position dans lst (if (/= (setq res (position_bseb67 slst tmp)) nil) (setq res (+ res position 1)) ) ; if ) ) ; cond ) (t ; le premier élément n'existe pas dans la liste lst ; donc ce n'est pas la peine de chercher plus loin ) ) ; cond res ) ; position_bseb67 commande: (position_bseb67 '(3 1) '(3 1 3 3 4 200000 1)) => 0 [Edité le 12/10/2009 par bseb67]
  10. bseb67

    Challenge 28

    Une ligne, donc un seul pastis ;) ma fonction est plus longue en code et plus lente...
  11. Salut Sheyko, Comme d'habitude, j'oublie ces put... de groupes. Car je viens de revoir ton fichier (ayant un peu le temps) http://bseb67.free.fr/cadxp/groupes_sheyko.PNG avec mon purgeur de groupe, j'obtiens ca, et je passe de 17Mo à 1.36 De plus, en enregistrant en DXF, on trouve un paquet de cochonnerie venant de covadis. Commande: (vlax-ldata-test "covadis") T Maintenant, cela me donne envie de voir comment dégager des ldata :D
  12. ouf, fini :) bon, alors ma première remarque: fichier en dwg 2000 => 17.2mo en dwg 2004 7.94Mo le format 2000 n'est pas optimal pour la compression. essais: Commande: Régénération du modèle. Commande: _select Choix des objets: _all 7927 trouvé(s) 1 n'était pas dans l'espace courant. Commande: Régénération de la présentation. Commande: SELECT Choix des objets: _all 7927 trouvé(s) 7926 n'étaient pas dans l'espace courant. 1 était la fenêtre de l'espace papier. => voilà ce que je disais plus haut :) le controle mouline sacrément longtemps (ca fait 15min) La purge des dictionnaires ne change pas beaucoup. a voir s'il n'y a pas des xdatas ou ldatas encore. Mais ici, quand les fichiers deviennent lourd et font ramer autocad: un coup de wbloc :D
  13. Oui, c'est vrai qu'un fichier neuf, contient toujours au moins une présentation donc une fenêtre (en fait 2, car l'espace objet est aussi assimilé à une fenêtre) là je télécharge le fichier de 17mo, et c'est super long :( à 20ko/s c'est pas top.
  14. Salut sheyko, pour info: la fenêtre en espace papier, c'est la présentation elle-même tu as bien purger aussi ton dessin?
  15. Salut Neo83, en regardant l'aide sur entsel, tu découvres que cette fonction renvoie: A list whose first element is the entity name of the chosen object and whose second element is the coordinates (in terms of the current UCS) of the point used to pick the object. Càd: l'entité sélectionnée dans le "car" et les coordonnées dans le scu en-cours dans le "cadr" Et voilà :D , sauf que pour le Z, il te renvoie la valeur de la variable autocad ELEVATION [Edité le 7/10/2009 par bseb67]
  16. Je pensais aussi que (if test to_do) était plus rapide que (cond test1 to_do1) mais pour cet exemple tout simple: Benchmarking ........Elapsed milliseconds / relative speed for 32768 iteration(s): (IF (= 1 1) (SETQ A 1)).............1031 / 1.05 0.0315ms/ité (COND ((= 1 1) (SETQ A 1))).........1031 / 1.05 0.0315ms/ité (IF (= 1 1) (PROGN (SETQ A 1))).....1078 / 1.00 0.0329ms/ité Et bien c'est la même chose :) , je suis sur qu'en faisant plusieurs benchmark il y aura des fois une petite différence de quelques ms. J'utilise le cond au-lieu du if, car j'oubliais trop souvent le progn car en mettant deux instructions après le test du if, forcément la première est pour test = vrai et la seconde test = faux. Or je voulais exécuter les deux. Cet oubli du progn me vient du C avec les {}
  17. Oui et non fabcad, le progn ne sert que pour les "if", pour le "cond" il n'est pas utile, car dans le cond l'interpréteur lisp continuera jusqu'au bout du test "vrai" avant de sortir du cond. Rien que pour ca, je n'utilise pratiquement plus le "if"
  18. Dépassé par (Gile) ;)
  19. Salut jfcantin1977 Je partirai sur ceci: (setq nb_c (strlen saisie_clavier)) (cond ((= nb_c 6) (traitement1) ) ((= nb_c 7) (traitement2) ) ((= nb_c 8) (traitement3) ) ) ; cond De plus si tu veux en plus de X caractères que la saisie contiennent quelque chose de précis, je partirai alors par un remplacement de (= nb_c X) par une fonction qui renverrai T ou NIL
  20. Salut pieloult :o :cool: :( :mad: Tu verras, t'en aura souvent des messages comme ca. J'en ai déjà eu en ouvrant seulement le fichier (ouverture même pas terminée) pendant une commande, pendant un lisp, pendant une impression, pendant une sauvegarde... Pour réduire la chose, si tu as travailler plusieurs heures, ferme autocad et relance-le (pour libérer la ram), et n'ouvre pas 15 fichiers en même temps (comme certains le font ici au bureau :mad: )
  21. bseb67

    Espace de travail

    Oki, tant mieux :cool: mais juste un petit détail: l'utilisateur pourra toujours créer un nouveau profil. mais le général existera toujours et comme il a été fait. Chez nous, chacun met son autocad comme il veut, il se met d'abord dans le profil général, puis change son interface, et sauvegarde alors avec son nom comme nom de profil, certains, faisant de la 2d, 3d, ou autre ont plusieurs profils de ce fait. Totocad à des défauts, mais il y a du bon aussi ;)
  22. bseb67

    Espace de travail

    Salut fauxsuisse :) Pour pallier à ce problème, on utilise un cui(x) entreprise, options->fichiers-> fichiers de personnalisation->fichiers de personnalisation d'entreprise Dans ce cui(x) qui sera en lecture seul il faudra créer au préalable un profil général et de ce fait il ne sera pas modifiable. Pour créer le profil, modifie ton profil général et sauvegardes-le, puis fait une copie. Qui elle sera alors utilisée par les autres. Chez nous il est disponible en lecture seule sur le réseau. Euh, enfin j'espère que tu as compris, car je sais que je ne suis pas toujours très clair
  23. Oui c'est ca: un argument est une variable contenant des infos. Tu as donc comme possibilité: - entier - réel - caractère ou chaine de caractère - une sélection - une liste ... [Edité le 24/9/2009 par bseb67]
  24. salut adat-btp Une fonction déclarée avec (defun ma_fonction() ...) est une nouvelle fonction lisp personnelle. Une fonction déclarée avec (defun c:ma_fonction() ....) est en fait une nouvelle commande. De plus une nouvelle commande ne peut avoir des arguments en paramètres. De ce fait, pour mes lisps, si je fait une fonction avec des arguments, souvent je déclare aussi une commande qui elle va demander les arguments. Par exemple: (defun carre( x) (* x x) ) (defun c:²() (carre (getreal "\nValeur: ")) ) en espèrant que tu as compris le principe ;)
  25. Merci (gile) :D cvport = 1 si fenêtre de la présentation en espace papier cvport = 2 si espace objet ou si première fenêtre en espace papier >2 pour les autres
×
×
  • 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é