bseb67
Membres-
Compteur de contenus
833 -
Inscription
-
Dernière visite
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par bseb67
-
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]
-
Equivalent en vlisp de dos_strreplace
bseb67 a répondu à un(e) sujet de fabcad dans Pour aller plus loin en LISP
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. -
salut cacar, _.pspace ou _.mspace mais dans ton cas, comme tu veux revenir dans la fenêtre représentant la présentation: _.pspace a+
-
Equivalent en vlisp de dos_strreplace
bseb67 a répondu à un(e) sujet de fabcad dans Pour aller plus loin en LISP
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] -
Equivalent en vlisp de dos_strreplace
bseb67 a répondu à un(e) sujet de fabcad dans Pour aller plus loin en LISP
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 "\\" -
Salut, Mettre filedia à 1
-
Numérotation des réponses
bseb67 a répondu à un(e) sujet de La Lozère dans CADxp, comment ça marche?
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: -
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 :)
-
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]
-
Une ligne, donc un seul pastis ;) ma fonction est plus longue en code et plus lente...
-
[Résolu] Probleme de poid de fichier x20 ...
bseb67 a répondu à un(e) sujet de claude.l dans AutoCAD 2009
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 -
[Résolu] Probleme de poid de fichier x20 ...
bseb67 a répondu à un(e) sujet de claude.l dans AutoCAD 2009
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 -
[Résolu] Probleme de poid de fichier x20 ...
bseb67 a répondu à un(e) sujet de claude.l dans AutoCAD 2009
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. -
[Résolu] Probleme de poid de fichier x20 ...
bseb67 a répondu à un(e) sujet de claude.l dans AutoCAD 2009
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? -
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]
-
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 {}
-
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"
-
Dépassé par (Gile) ;)
-
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
-
erreur \"autocad access violation\"
bseb67 a répondu à un(e) sujet de pieloult dans AutoCAD Architecture
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: ) -
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 ;)
-
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
-
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]
-
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 ;)
-
fenêtres en espace papier
bseb67 a répondu à un(e) sujet de bseb67 dans Pour aller plus loin en LISP
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
