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
-
Salut Matt666! Ok merci, pour menuunload et menuload, mais Autocad c'est un petit malin. Car je faisais cela pour tester mes modif sur les chemins des boutons et des lisp lancés, et bien malgré que j'ai supprimer les mnr, modifié le cui avec des nouveaux chemins, ce petit malin avec le unload suivi d'un load, me gardait le chemin d'origine :o. Je devais sauvegarder mon profil (espace de travail), fermer autocad, le rouvrir et recharger mon cui pour prendre en compte la modif :mad: !!! a+!
-
Les PC d\'aujourd\'hui sont trop rapides...
bseb67 a répondu à un(e) sujet de Laurent_CAMPEDEL dans Débuter en LISP
_Delay :o ! On m'aurai ;) Merci Gile, encore une chose d'apprise :cool: [Edité le 15/11/2007 par bseb67] -
Les PC d\'aujourd\'hui sont trop rapides...
bseb67 a répondu à un(e) sujet de Laurent_CAMPEDEL dans Débuter en LISP
Salut Laurent! En langage C il existe une petite fonction des fois très pratique qui s'appelle SLEEP. On lui passait en paramètre le nombre de millisecondes de pause que l'on voulait avoir. Mais en lisp, elle n'existe pas, donc méthode bête et méchante: ;-------------------------------; ; nom: sleep ; ; role: équivalent du sleep en c; ; param: tm => temps en ms ; ; retour: aucun ; ; date: 22/10/2007 ; ; BLAES Sébastien ; ;-------------------------------; (defun sleep( tm) (setq t1 (getvar "DATE")) (while (< (* 86400000 (- (getvar "DATE") t1)) (abs tm))) ) ; sleep Il te suffit d'appeler sleep entre tes commandes pan. a+ -
Salut à tous! Si je fais des barre d'outils perso, donc avec des jolis bmp pour les boutons. Comment faire pour qu'autocad mette les boutons à jour, sans passer par personnaliser. Car lorsque je change le dessin dans le bmp, autocad garde encore l'ancienne image. Merci.
-
Salut MArcoTic! J'ai débuté la CAO en février de cette année, j'ai été embauché en tant que développeur, vu que je sors d'une formation (équivalente mais à la fac) d'ingénieur de développement. Officiellement j'ai eu une formation de 5 jours (30h) la première semaine, mais étant donné que je découvrai autocad et le monde du btp, ma formation n'a lieu qu'au bout de 3 semaines et s'est étalé sur 3 semaines (2j semaine 3, 2j semaine 4 et 1j semaine 5). Ainsi j'ai pu tester au boulot les nouvelles infos, et voir que je coinçais plus loin. La formation a couté environ 3000€ sur strasbourg. Donc si t'es de la région alsace, je peux te donner l'adresse du formateur.
-
Forcer un dwg à s\'ouvrir sur la bonne version d\'autocad
bseb67 a répondu à un(e) sujet de kclement dans AutoCAD 2008
Salut Lili2006, Speedy t'as donné la réponse. Inno setup gratuit, il m'a juste fallu un peu de temps pour savoir comment bien choisir les paramètres pour la création du setup. Pour mon exe, j'ai mal vérifié, car comme j'ai les fichiers sur mon PC, j'aurai du tester sur une autre machine. J'ai le programme chez moi, donc je corrige cela ce soir. La mise-à-jour se fera demain matin. -
Les fichiers s’ouvrent avec autocad 2006 sur un poste ayant aussi la version 2008
bseb67 a répondu à un(e) sujet de Zeus-94 dans AutoCAD 2008
Salut Zeus-94. Il reste la solution de modifier la dbr (base de registre). Il faut chercher les "répertoires" qui s'appellent ".dwg", ils contiennent une clé (par défaut) qui référence l'application d'ouverture. Sur mon pc perso avec autocad 2007, la clé à pour valeur: AutoCAD.Drawing.17 Avec les 2006 je suppose qu'il doit y avoir la valeur: AutoCAD.Drawing.16, il suffit de remplacer le 16 par 18. Si tu te sens prêt à essayer :cool: vas-y. Mais je sais que certains n'osent pas aller dans la dbr. -
Forcer un dwg à s\'ouvrir sur la bonne version d\'autocad
bseb67 a répondu à un(e) sujet de kclement dans AutoCAD 2008
Re-salut à tous! J'ai mis à jour mon lisp et donc l'executable setup_sauve.exe. Le setup créer un répertoire c:\cadxp\, dans lequel il y a des sous-répertoires cui, doslib et lisp. Il suffit simplement de faire un glisser-déposer du fichier loadcui.scr dans autocad, pour ajouter ma petite barre de sauvegarde. Elle comporte deux boutons: - Sv : pour sauvegarde du fichier ouvert - Svd : pour sauvegarde avec le choix d'un répertoire et le nom du fichier. Petite info, les sauvegardes ne fonctionnent pas sur un fichier nouvellement créer sous autocad, car le dessin a beau s'appeler dessinX.dwg, il n'existe pas encore sur le disque. Ah, j'oubliai, le setup installe aussi un désinstalleur, mais avant de lancer, il faut penser à glisser-déposer unloadcui.scr pour décharger la barre des boutons. Le setup créer aussi un raccourci pour le désinstalleur et un lien vers mes pages persos dans le menu démarrer->programmes->sauve_bseb67. Et pour finir, la modification ou l'utilisation du lisp est bien-sûr offerte par la maison ;). Voilà. a+. [Edité le 9/11/2007 par bseb67] -
Salut! Solution un peu bidon, cherche les blocs ayant le nom de celui insérer se trouvant dans le carré (-1,-1) (+1,+1) et supprime le.
-
Re, Merci pour la nouvelle information, car setenv et getenv n'étaient pas dans mon vocabulaire. Je serai de nouveau moins bête ce soir ;). Par contre si tu veux retirer une variable d'environnement tu fais comment? Pr (Gile), appload me donne bien ce que morgul et moi cherchons. Mais maintenant il s'agit de trouver la variable ou la fonction lisp ou vlisp pour avoir cette liste. [Edité le 8/11/2007 par bseb67]
-
Salut Matt666, Aimant de ne pas trop mélanger et tout mettre dans le fichier lisp, j'aime bien créer plusieurs fichiers en regroupant par thème les fonctions lisp pour un certain projet. Mais comme je les met dans le même répertoire (un par projet), je suis obligé de créer une variable globale qui référence le chemin du projet (ex: (setq LISP_PATH "C:/LISP/SUPER_PROJET/")). Donc si il y a possibilité lorsque l'on charge un lisp dans autocad et que celui retrouve son chemin ce serai utile. Voilà, en espérant avoir éclairci mon avis.
-
De rien, Au départ je suis venu (et je viens encore pour cela) pour avoir de l'aide vu que je suis débutant sur autocad. Mais si je peux aider quelqu'un je le fais. Ma philosophie (non c'est pas amel bent ;) ) c'est que si l'on a un savoir utile, autant le faire partager. Et c'est pour que je me suis inscrit à cadxp :). pour revenir à ton problème autoréparateur :o , je pensais que l'on aurai un "\" en trop dans la bdr, mais ce n'était pas le cas :exclam: . Si ca marche, c'est l'essentiel. a+.
-
Salut Morgul! Désolé, mais je ne donne pas la réponse ;) . Mais je serai aussi intéressé d'avoir les réponses à tes demandes, surtout sur le chemin du lisp. Cela simplifiera les choses mais aussi augmenter la portabilité des lisps. a+.
-
Salut Antonin! Pour ma part, je suis lispeur et un peu vlispeur :). De formation je suis ingénieur de développement principalement en langage C, C++ et Java. Donc je suis passé par une formation lisp mais spécifique à autocad, vu que les données sont stockées d'une certaine façon. L'avantage du lisp: simple, executable facilement et sur différents pc. inconvénients: impossibilité de faire du parallélisme (sniff, cela me manque un peu), mais surtout les parenthèse au début :o! pour les autres, vb ou vba : les macros vb sous excel m'ont légèrement passer l'envie. Le diesel: néant. Les champs: pratique, mais je ne considère pas cela comme de la programmation. (dsl si je risque de froisser certains). Mais ils ont un certain avantage, stockage dans le dessin et mise à jour avec une simple régénération. A+
-
Forcer un dwg à s\'ouvrir sur la bonne version d\'autocad
bseb67 a répondu à un(e) sujet de kclement dans AutoCAD 2008
ReSalut Kclement! Pour la sauvegarde avec boite de dialogue pour choisir un répertoire et un nom de fichier. Il faudrai utiliser doslib, car je ne connais pas de fonction lisp qui le fait. Je vais mettre un executable a lancer sur ton pc. voici le lien: http://bseb67.free.fr/cadxp/ Il y aura: setup sauve.exe Je le mettrai en ligne demain matin. -
Forcer un dwg à s\'ouvrir sur la bonne version d\'autocad
bseb67 a répondu à un(e) sujet de kclement dans AutoCAD 2008
Salut! Je ne crois pas que cela soit possible, car si tu ouvres tes dessins avec la 2008, il le fera à chaque fois. Puis si tu lui dit d'ouvrir un dessin avec la 2006, il fera de même pour les suivants. Comme tu peux passer d'un projet à un autre et donc de version, le plus simple est de te créer un petit lisp qui fait l'enregistrement en définissant une fonction sav par exemple. Celle ci enregistre le dessin dans la version d'origine du dessin: t'es sur AA 2008 avec un fichier 2006 (en fait 2004), tu tapes la commande sauv, et il enregistre au format 2006. Si tu veux l'enregistrer dans un autre répertoire, fait un lisp sauvd ou sauvr qui ouvre une boite de dialogue pour choisir le chemin et le nom du fichier, mais gardera la version. Si tu utilise une version LT, ben là le lisp ca marche pas, donc je passe. Si tu n'y connais rien en lisp, j'attaque cela ce soir et je le posterai. -
Resalut! J'ai fait une recherche dans la bdr (base de registres), il y a un clé pour le répertoire heidi: [HKEY_CURRENT_USER\Software\Autodesk\AutoCAD\R17.1\ACAD-6006:40C\3DGS Configuration\GSHEIDI10] "CustomHeidiDriverPath"="c:\\program files\\autocad mep 2008\\drv\\" Le mieux c'est que tu ailles dans la bdr (démarrer-> éxecuter: regedit puis entrée) Tu fais un rechercher sur \drv\ dans la base. Si tu veux bien afficher la valeur de la clé. et celle de: "CustomHeidiDriver" [Edité le 6/11/2007 par bseb67]
-
SAlut! Il faut peut-être qu'elle redescende de la montagne ;) :D . Fini la blagounette. Il y a un truc bizarre, c'est le \\ entre drv et direct3d9.hdi. S'il y a eu un bug pour les répertoires, la réinstalle me semble le dernier espoir.
-
Salut PhilPhil! Première question: pour quelle version d'AA? Deuxième question: fais-tu plein d'autre choses en même temps que tu es sur AA? Officiellement toute la gamme autodesk 2008 gère le multicoeur. Maintenant entre un Bi-coeurs ou Quadri-coeurs, cela dépend du prix que tu veux mettre de l'utilisation et de la fréquence du CPU. Le Bi-coeur E6750 est un bon choix, sinon tu peux tenter le QX9650 ;) qui a été présenté la semaine dernière par Intel. Comme Quad-coeur il y a le Q6600 qui n'est pas beaucoup plus cher, mais une fréquence un peu plus faible. Pour les xeons, je ne suis pas trop brancher dessus. mais je crois qu'ils ne se vendent plus :casstet: . a+
-
Salut! J'espère que vous avez passez un bon week-end ? (pour les chanceux comme moi qui ont eu 4j) ca fait du bien :). J'ai aussi demandé à mon patron s'il voulait bien m'augmenter de 140%, réponse: demander tu peux. Si c'est accepter, faut voir ;). Sinon j'ai une autre proposition, plutot que de travail + pour gagner +, pourquoi ne pas faire: travailler - pour gagner autant. Je me verrai bien travailler du lundi au mercredi comma la semaine dernière, pour le même salaire (sachant que je fait presque 24h/35h sur ces 3 premiers jours). Bon, revenons sur le sujet du challenge. Vu que le code devient long, j'ai mis en ligne sur mes pages perso les trois lisps: - random - gestion_mots pour chargement/sauvegarde des fichiers de mots et recherches - challenge13 qui contient genere, combi et plus_de_mots qui demande à l'utilisateur de trouver un maximum de mots. http:// http://bseb67.free.fr/cadxp/challenge/13/ La seule chose que je ne sais pas faire, et je pense que lisp ne permette de ne pas le faire, c'est pour le "timer", je donne 3minutes pour trouver les mots, je ne sais pas sortir au bout de ces 3 minutes. La parade utilisée est de tester lors de la saisie du mot si le temps n'est pas dépassé. MAintenant il reste à faire une petite interface, soit une dcl soit un dessin sur le fichier autocad ouvert.
-
Comment créer un répertoire
bseb67 a répondu à un(e) sujet de Morgul dans Pour aller plus loin en LISP
Salut Lovecraft! Je suis tombé dessus (Doslib) au mois de juin. Et depuis je m'en sert pour quelques lisp. Certains lisp doivent faire une sauvegarde d'un fichier à traiter, plutot que de faire un enregistrer sous (qui est très long) j'utilise le dos_copy. J'ai prit plaisir à utiliser la barre de progression (dos_progressbar) lorsque mes lisp sont long. Comme cela le dessinateur voit l'avancement et ne s'imagine pas que le lisp à planté :). Petit +, voici le mon lisp pour charger doslib: ;------------------------------------; ; nom: load_doslib ; ; role: charge la bibliothèque doslib; ; en fonction de la version ; ; utilisée d'autocad ; ; param: DOSLIB_PATH => chemin doslib; ; retour: aucun ; ; date: 27/06/2007 ; ; BLAES Sébastien ; ;------------------------------------; (defun load_doslib( DOSLIB_PATH / vn) ; on cherche la version d'autocad (setq vn (getvar "_vernum")) (cond ; R14 ((or (= vn "S.0.80.G") (= vn "P.0.33")) (if (not (member "doslib14.arx" (arx))) (setq DOSLIB_LOADED (/= (arxload (strcat DOSLIB_PATH "DOSLib14.arx")) nil)) (setq DOSLIB_LOADED t) ) ; if ) ; 2000 ((or (= (strcase (substr vn 1 1)) "T") (= (strcase (substr vn 1 1)) "U")) (if (not (member "doslib2k.arx" (arx))) (setq DOSLIB_LOADED (/= (arxload (strcat DOSLIB_PATH "doslib2k.arx")) nil)) (setq DOSLIB_LOADED t) ) ; if ) ; 2006 ((= (strcase (substr vn 1 1)) "Z") (if (not (member "doslib16.arx" (arx))) (setq DOSLIB_LOADED (/= (arxload (strcat DOSLIB_PATH "doslib16.arx")) nil)) (setq DOSLIB_LOADED t) ) ; if ) ; 2007 ((= (strcase (substr vn 1 1)) "A") (if (not (member "doslib17.arx" (arx))) (setq DOSLIB_LOADED (/= (arxload (strcat DOSLIB_PATH "DOSLib17.arx")) nil)) (setq DOSLIB_LOADED t) ) ; if ) ; 2008 ((= (strcase (substr vn 1 1)) "B") (if (not (member "doslib17.arx" (arx))) (setq DOSLIB_LOADED (/= (arxload (strcat DOSLIB_PATH "DOSLib17.arx")) nil)) (setq DOSLIB_LOADED t) ) ; if ) ) ; cond ) ; load_doslib ;--------------------------------------; ; nom: unload_doslib ; ; role: décharge la bibliothèque doslib; ; param: aucun ; ; retour: aucun ; ; date: 27/06/2007 ; ; BLAES Sébastien ; ;--------------------------------------; (defun unload_doslib( / vn) ; on cherche la version d'autocad (setq vn (getvar "_vernum")) (cond ; R14 ((or (= vn "S.0.80.G") (= vn "P.0.33")) (if (member "doslib14.arx" (arx)) (setq DOSLIB_LOADED (not (= (arxunload "doslib14.arx") "doslib14.arx"))) (setq DOSLIB_LOADED nil) ) ) ; 2000 ((or (= (strcase (substr vn 1 1)) "T") (= (strcase (substr vn 1 1)) "U")) (if (member "doslib2k.arx" (arx)) (setq DOSLIB_LOADED (not (= (arxunload "doslib2k.arx") "doslib2k.arx"))) (setq DOSLIB_LOADED nil) ) ) ; 2006 ((= (strcase (substr vn 1 1)) "Z") ; on décharge l'arx DOSlib (if (member "doslib16.arx" (arx)) (setq DOSLIB_LOADED (not (= (arxunload "doslib16.arx") "doslib16.arx"))) (setq DOSLIB_LOADED nil) ) ) ; 2007 ((= (strcase (substr vn 1 1)) "A") ; on décharge l'arx DOSlib (if (member "doslib17.arx" (arx)) (setq DOSLIB_LOADED (not (= (arxunload "doslib17.arx") "doslib17.arx"))) (setq DOSLIB_LOADED nil) ) ) ; 2008 ((= (strcase (substr vn 1 1)) "B") ; on décharge l'arx DOSlib (if (member "doslib17.arx" (arx)) (setq DOSLIB_LOADED (not (= (arxunload "doslib17.arx") "doslib17.arx"))) (setq DOSLIB_LOADED nil) ) ) ) ; cond ) ; unload_doslib Bien-sur il faut télécharger les fichier arx. charger ce lisp dans autocad ou même dans un autre lisp avec (load ...). Puis de faire un (load_doslib chemin). La variable DOSLIB_LOADED sert juste de test, comme cela si un lisp appel un fonction doslib, on test l'état de cette variable et cela évite les erreurs "fonction non trouvée" a+ [Edité le 31/10/2007 par bseb67] -
Comment créer un répertoire
bseb67 a répondu à un(e) sujet de Morgul dans Pour aller plus loin en LISP
Salut Morgul! en Vlisp: vl-mkdir ou tu peux utiliser la bibliothèque gratuite doslib. a+ PS: Bred m'est passé devant (put.. de mozilla qui bug) car je suis allé sous IE pour répondre ;) [Edité le 31/10/2007 par bseb67] -
Salu Grosny! Utilises-tu vraiment MEP ou avec un profil autocad simple? Moi j'ai MEP depuis 2-3mois, j'ai essayé la partie MEP, mais j'ia abandonné, car portabilité nulle sur d'autre autocad, problème d'insunits (venant d'Autodesk Architectural Desktop, mais en ce moment ce n'est plus trop le cas), mais c'est surtout le rendu impression qui ne me plait pas. Comme on est limité (nb de licences pour autocad 2007) et que je suis informaticien et non dessinateur, j'utilise MEP 2008 en profil autocad. Pour les plantages, je vois pas trop de différence par rapport à la 2007. Il n'y a qu'une vraiment plus présente: tu sélectionnes des objets et fait un clic droit pour avoir la propriétés et là :o! Erreur Fatale !!! Par contre j'ai vu une petite amélioration avec le SP1, tu l'as mis? Sinon, dsl :( . Mais tu devrai savoir qu'afforce de rajouter des fonctionnalités, ont augmente l'instablilité d'un logiciel ;). a+
-
Salut Gile! En fait, mon lisp que je cherchais à améliorer ne fait qu'un simple test. J'ai du récursif avec des sous fonctions (fg ( while (f1) (while (while (while (f5) ) ) ) ) ) (f1 (while f2) (while f3) (while f4) (while f1) ) (f2 (while ) ) (f3 (while ) ) (f4 (while ) ) (f5 (while (f6) ) ) (f6 (while ) ) Voilà le squelette des while. donc voulant gagner du temps, j'ai essayé en remplacant tout par des foreach sauf lorsqu'il y a un booléen de fin pour le while. Et bien c'est là que je suis passé de 47s à 108s pour (fg)
-
Re, Le lisp que j'ai fait faisait en gros ceci: (setq l_bloc (cherche_liste_bloc "TK-HY-TUB")) => cherche tous les bloc de types tubes (setq l_bloc (trier l_bloc 15 "DN")) => trie la liste des noms en cherchant le diamètre (après les caractères DN et ce à partir du 15 caractères pour le nom du bloc ex: TK-HY-TUB-STD-DN100-114.3x3.6 le diamètre est après "DN" et il est de 100 TK-HY-TUB-STD-DN10-17.2x2.0 ici de 10 seulement Ensuite: (setq l_bloc (cherche_liste_bloc "TK-HY-C45")) => cherche tous les bloc de types coudes à 45° (setq l_bloc (trier l_bloc 15 "DN")) => trie sur le diamètre Voici le lisp de recherche ;------------------------------------; ; nom: cherche_liste_bloc ; ; role: retourne la liste des noms ; ; de blocs commencant par mask ; ; param: mask => chaine de caractères; ; retour: liste de noms ; ; date: 16/10/2007 ; ; BLAES Sébastien ; ;------------------------------------; (defun cherche_liste_bloc( mask / param res bloctmp) (setq res '() param t) ; on boucle sur le nom des blocs (while (/= (setq bloctmp (tblnext "BLOCK" param)) nil) (setq param nil) ; on test le nom (if (= (substr (cdr (assoc 2 bloctmp)) 1 (strlen mask)) mask) (setq res (cons (cdr (assoc 2 bloctmp)) res)) ) ; if ) ; while res ) ; cherche_liste_bloc Et le trie ;------------------------------------------; ; nom: trier ; ; role: retourne la liste triée en fonction; ; du DN qui se trouve après pos dans ; ; les noms de la liste ; ; param: liste => liste de noms ; ; pos => entier ; ; dn => chaine de caractères repré- ; ; sentant le début du dn ; ; retour: liste de noms triée ; ; date: 17/10/2007 ; ; BLAES Sébastien ; ;------------------------------------------; (defun trier (liste pos dn / cpt lg new_liste pos_dn posenddn dn changement) (setq cpt 0 lg (length liste)) (if (> lg 1) (progn (setq new_liste '()) ; on construit new_liste de la forme suivante: ; '((dn1 . nom1) (dn2 . nom2)...) (while (< cpt lg) (setq pos_dn (+ (vl-string-search dn (substr (nth cpt liste) pos)) pos (strlen dn))) (setq pos_enddn (+ (vl-string-search "-" (substr (nth cpt liste) pos)) pos)) (setq valdn (atoi (substr (nth cpt liste) pos_dn (- pos_enddn pos_dn)))) (setq new_liste (cons (cons valdn (nth cpt liste)) new_liste)) ; on incrémente cpt (setq cpt (1+ cpt)) ) ; while ; on trie (setq new_liste (vl-sort new_liste (function (lambda (e1 e2) (< (car e1) (car e2)) ) ) )) ; il faut reconstruire new_liste en ne gardant que les noms (setq changement '() cpt 0) (while (< cpt lg) (setq changement (cons (cdr (nth cpt new_liste)) changement)) ; on incrémente cpt (setq cpt (1+ cpt)) ) ; while (setq new_liste (reverse changement)) ) ; progn (setq new_liste liste) ) ; if new_liste ) ; trier Après à toi d'adapter , après lorsque tu aura ta liste triée, il suffit de la parcourir, de chercher tous les blocs ayant le nom du i-ième élément de la liste et faire ta sauvegarde de donnes pour ce bloc.
