-
Compteur de contenus
5 029 -
Inscription
-
Dernière visite
-
Jours gagnés
56
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par bonuscad
-
Alignement d\'un text par rapport à une polyligne ou ligne
bonuscad a répondu à un sujet dans AutoCAD 2008
Salut, Tu peux essayer align_text D'autres codes existent aussi, ici et ailleurs... -
Rapidement voir dans la configuration de la souris windows avec le pilote approprié que l'action pour la roulette soit bien configuré comme "bouton du milieu". Dans autocad vérifier que la variable MBUTTONPAN soit à 1 (vlaur par défaut, court-circuite le CUIx)
-
Sur la page de (gile) tu as la fonction Getblock (pourquoi réécrire du code qui fonctionne bien) ;) , qui est facile à inclure dans le code. ce qui donnerait en faisant l'assemblage: ;;; Getblock (gile) 03/11/07 ;;; Retourne le nom du bloc entré ou choisi par l'utilisateur ;;; dans une liste déroulante de la boite de dialogue ou depuis la boite ;;; de dialogue standard d'AutoCAD ;;; Argument : le titre (string) ou nil (défaut : "Choisir un bloc") (defun getblock (titre / bloc n lst tmp file what_next dcl_id nom) (while (setq bloc (tblnext "BLOCK" (not bloc))) (setq lst (cons (cdr (assoc 2 bloc)) lst) ) ) (setq lst (acad_strlsort (vl-remove-if (function (lambda (n) (= (substr n 1 1) "*"))) lst ) ) tmp (vl-filename-mktemp "Tmp.dcl") file (open tmp "w") ) (write-line (strcat "getblock:dialog{label=" (cond (titre (vl-prin1-to-string titre)) ("\"Choisir un bloc\"") ) ";initial_focus=\"bl\";:boxed_column{ :row{:text{label=\"Sélectionner\";alignment=left;} :button{label=\">>\";key=\"sel\";alignment=right;fixed_width=true;}} spacer; :column{:button{label=\"Parcourir...\";key=\"wbl\";alignment=right;fixed_width=true;}} :column{:text{label=\"Nom :\";alignment=left;}} :edit_box{key=\"tp\";edit_width=25;} :popup_list{key=\"bl\";edit_width=25;}spacer;} spacer; ok_cancel;}" ) file ) (close file) (setq dcl_id (load_dialog tmp)) (setq what_next 2) (while (>= what_next 2) (if (not (new_dialog "getblock" dcl_id)) (exit) ) (start_list "bl") (mapcar 'add_list lst) (end_list) (if (setq n (vl-position (strcase (getvar "INSNAME")) (mapcar 'strcase lst) ) ) (setq nom (nth n lst)) (setq nom (car lst) n 0 ) ) (set_tile "bl" (itoa n)) (action_tile "sel" "(done_dialog 5)") (action_tile "bl" "(setq nom (nth (atoi $value) lst))") (action_tile "wbl" "(done_dialog 3)") (action_tile "tp" "(setq nom $value) (done_dialog 4)") (action_tile "accept" "(setq nom (nth (atoi (get_tile \"bl\")) lst)) (done_dialog 1)" ) (setq what_next (start_dialog)) (cond ((= what_next 3) (if (setq nom (getfiled "Sélectionner un fichier" "" "dwg" 0)) (setq what_next 1) (setq what_next 2) ) ) ((= what_next 4) (cond ((not (read nom)) (setq what_next 2) ) ((tblsearch "BLOCK" nom) (setq what_next 1) ) ((findfile (setq nom (strcat nom ".dwg"))) (setq what_next 1) ) (T (alert (strcat "Le fichier \"" nom "\" est introuvable.")) (setq nom nil what_next 2 ) ) ) ) ((= what_next 5) (if (and (setq ent (car (entsel))) (= "INSERT" (cdr (assoc 0 (entget ent)))) ) (setq nom (cdr (assoc 2 (entget ent))) what_next 1 ) (setq what_next 2) ) ) ((= what_next 0) (setq nom nil) ) ) ) (unload_dialog dcl_id) (vl-file-delete tmp) nom ) (defun 2xderr (ch) (cond ((eq ch "Function cancelled") nil) ((eq ch "quit / exit abort") nil) ((eq ch "console break") nil) (T (princ ch)) ) (setvar "cmdecho" v1) (setvar "orthomode" v2) (setvar "osmode" v3) (setvar "blipmode" v4) (setvar "plinewid" v5) (setq *error* olderr) (princ) ) (defun c:2xd ( / v1 v2 v3 v4 v5 nam_blk cc1 r1 cc2 r2 dce xi yi i cr1 cr2 vi xt yt h1 h2 h i1 i2 ss1 ss2 key e_name olderr) (setq v1 (getvar "cmdecho") v2 (getvar "orthomode") v3 (getvar "osmode") v4 (getvar "blipmode") v5 (getvar "plinewid") ) (setvar "cmdecho" 0) (setvar "orthomode" 0) (setvar "blipmode" 0) (setvar "plinewid" 0) (setq olderr *error* *error* 2xderr) (initget 9) (setq cc1 (getpoint "\nPremier point de base ?: ")) (initget 9) (setq cc2 (getpoint cc1 "\nDeuxième point de base ?: ")) (grdraw cc1 cc2 1) (initget 38) (while (setq r1 (getdist cc1 "\nDonnez la 1ère distance rayonnante : ")) (initget 39) (setq r2 (getdist cc2 "\nDonnez la 2ème distance rayonnante : ")) (while (not (setq nam_blk (getblock nil)))) (grdraw cc1 cc2 0) (setvar "osmode" 0) (setq dce (distance cc1 cc2)) (if (= (rtos (/ dce (+ r1 r2)) 2 12) "1.000000000000") (progn (setq xi (/ (+ (* r2 (car cc1)) (* r1 (car cc2))) dce) yi (/ (+ (* r2 (cadr cc1)) (* r1 (cadr cc2))) dce)) (setq i (cons xi (cons yi '(0.0)))) ) (if (and (not (zerop (- r1 r2))) (= (rtos (/ dce (abs (- r1 r2))) 2 12) "1.000000000000")) (progn (if (= r1 (max r1 r2)) (setq cr1 cc1 cr2 cc2) (setq cr1 cc2 cr2 cc1) ) (setq xi (/ (- (* (max r1 r2) (car cr2)) (* (min r1 r2) (car cr1))) dce) yi (/ (- (* (max r1 r2) (cadr cr2)) (* (min r1 r2) (cadr cr1))) dce)) (setq i (cons xi (cons yi '(0.0)))) ) (progn (if (or (> dce (+ r1 r2)) (< (+ (min r1 r2) dce) (max r1 r2))) (prompt "\nPas d'intersection !...") (progn (setq vi (angle cc1 cc2)) (if (> r1 r2) (setq xt (- (/ (* (+ r1 dce r2) (- (+ r1 dce) r2)) (* 2 dce)) r1) yt (- dce xt) h1 (sqrt (- (expt r1 2) (expt xt 2))) h2 (sqrt (- (expt r2 2) (expt yt 2))) xi (/ (+ (* yt (car cc1)) (* xt (car cc2))) dce) yi (/ (+ (* yt (cadr cc1)) (* xt (cadr cc2))) dce) ) (setq xt (- (/ (* (+ r2 dce r1) (- (+ r2 dce) r1)) (* 2 dce)) r2) yt (- dce xt) h1 (sqrt (- (expt r2 2) (expt xt 2))) h2 (sqrt (- (expt r1 2) (expt yt 2))) xi (/ (+ (* xt (car cc1)) (* yt (car cc2))) dce) yi (/ (+ (* xt (cadr cc1)) (* yt (cadr cc2))) dce) ) ) (setq h (/ (+ h1 h2) 2) i1 (polar (cons xi (cons yi '(0.0))) (+ vi (/ pi 2)) h) i2 (polar (cons xi (cons yi '(0.0))) (- vi (/ pi 2)) h) ) (if (zerop (getvar "PICKFIRST")) (setvar "PICKFIRST" 1)) (command "_.insert" nam_blk i1 "" "" "") (setq ss1 (ssget "_L")) (command "_.insert" nam_blk i2 "" "" "") (setq ss2 (ssget "_L")) (if (and ss1 ss2 (= 0 (getvar "CMDACTIVE"))) (progn (sssetfirst nil ss2) (princ "\n pour choix; /[Espace]/Click+droit pour finir!.") (while (and (not (member (setq key (grread T 4 2)) '((2 13) (2 32)))) (/= (car key) 25)) (cond ((eq (car key) 5) (if (< (distance i1 (cadr key)) (distance i2 (cadr key))) (setq e_name (ssname (cadr (sssetfirst nil ss1)) 0)) (setq e_name (ssname (cadr (sssetfirst nil ss2)) 0)) ) ) ) ) (entdel e_name) ) ) ) ) ) ) ) (grdraw cc1 cc2 1) (initget 38) ) (redraw) (setvar "cmdecho" v1) (setvar "orthomode" v2) (setvar "osmode" v3) (setvar "blipmode" v4) (setvar "plinewid" v5) (setq *error* olderr) (prin1) )
-
La version adaptée à tes 2 demandes (defun 2xderr (ch) (cond ((eq ch "Function cancelled") nil) ((eq ch "quit / exit abort") nil) ((eq ch "console break") nil) (T (princ ch)) ) (setvar "cmdecho" v1) (setvar "orthomode" v2) (setvar "osmode" v3) (setvar "blipmode" v4) (setvar "plinewid" v5) (setq *error* olderr) (princ) ) (defun c:2xd ( / v1 v2 v3 v4 v5 nam_blk cc1 r1 cc2 r2 dce xi yi i cr1 cr2 vi xt yt h1 h2 h i1 i2 ss1 ss2 key e_name olderr) (setq v1 (getvar "cmdecho") v2 (getvar "orthomode") v3 (getvar "osmode") v4 (getvar "blipmode") v5 (getvar "plinewid") ) (setvar "cmdecho" 0) (setvar "orthomode" 0) (setvar "blipmode" 0) (setvar "plinewid" 0) (setq olderr *error* *error* 2xderr) (while (not (tblsearch "BLOCK" (setq nam_blk (getstring T "\nNom du bloc à insérer ?: "))))) (initget 9) (setq cc1 (getpoint "\nPremier point de base ?: ")) (initget 9) (setq cc2 (getpoint cc1 "\nDeuxième point de base ?: ")) (grdraw cc1 cc2 1) (initget 38) (while (setq r1 (getdist cc1 "\nDonnez la 1ère distance rayonnante : ")) (initget 39) (setq r2 (getdist cc2 "\nDonnez la 2ème distance rayonnante : ")) (grdraw cc1 cc2 0) (setvar "osmode" 0) (setq dce (distance cc1 cc2)) (if (= (rtos (/ dce (+ r1 r2)) 2 12) "1.000000000000") (progn (setq xi (/ (+ (* r2 (car cc1)) (* r1 (car cc2))) dce) yi (/ (+ (* r2 (cadr cc1)) (* r1 (cadr cc2))) dce)) (setq i (cons xi (cons yi '(0.0)))) ) (if (and (not (zerop (- r1 r2))) (= (rtos (/ dce (abs (- r1 r2))) 2 12) "1.000000000000")) (progn (if (= r1 (max r1 r2)) (setq cr1 cc1 cr2 cc2) (setq cr1 cc2 cr2 cc1) ) (setq xi (/ (- (* (max r1 r2) (car cr2)) (* (min r1 r2) (car cr1))) dce) yi (/ (- (* (max r1 r2) (cadr cr2)) (* (min r1 r2) (cadr cr1))) dce)) (setq i (cons xi (cons yi '(0.0)))) ) (progn (if (or (> dce (+ r1 r2)) (< (+ (min r1 r2) dce) (max r1 r2))) (prompt "\nPas d'intersection !...") (progn (setq vi (angle cc1 cc2)) (if (> r1 r2) (setq xt (- (/ (* (+ r1 dce r2) (- (+ r1 dce) r2)) (* 2 dce)) r1) yt (- dce xt) h1 (sqrt (- (expt r1 2) (expt xt 2))) h2 (sqrt (- (expt r2 2) (expt yt 2))) xi (/ (+ (* yt (car cc1)) (* xt (car cc2))) dce) yi (/ (+ (* yt (cadr cc1)) (* xt (cadr cc2))) dce) ) (setq xt (- (/ (* (+ r2 dce r1) (- (+ r2 dce) r1)) (* 2 dce)) r2) yt (- dce xt) h1 (sqrt (- (expt r2 2) (expt xt 2))) h2 (sqrt (- (expt r1 2) (expt yt 2))) xi (/ (+ (* xt (car cc1)) (* yt (car cc2))) dce) yi (/ (+ (* xt (cadr cc1)) (* yt (cadr cc2))) dce) ) ) (setq h (/ (+ h1 h2) 2) i1 (polar (cons xi (cons yi '(0.0))) (+ vi (/ pi 2)) h) i2 (polar (cons xi (cons yi '(0.0))) (- vi (/ pi 2)) h) ) (if (zerop (getvar "PICKFIRST")) (setvar "PICKFIRST" 1)) (command "_.insert" nam_blk i1 "" "" "") (setq ss1 (ssget "_L")) (command "_.insert" nam_blk i2 "" "" "") (setq ss2 (ssget "_L")) (if (and ss1 ss2 (= 0 (getvar "CMDACTIVE"))) (progn (sssetfirst nil ss2) (princ "\n pour choix; /[Espace]/Click+droit pour finir!.") (while (and (not (member (setq key (grread T 4 2)) '((2 13) (2 32)))) (/= (car key) 25)) (cond ((eq (car key) 5) (if (< (distance i1 (cadr key)) (distance i2 (cadr key))) (setq e_name (ssname (cadr (sssetfirst nil ss1)) 0)) (setq e_name (ssname (cadr (sssetfirst nil ss2)) 0)) ) ) ) ) (entdel e_name) ) ) ) ) ) ) ) (grdraw cc1 cc2 1) (initget 38) ) (redraw) (setvar "cmdecho" v1) (setvar "orthomode" v2) (setvar "osmode" v3) (setvar "blipmode" v4) (setvar "plinewid" v5) (setq *error* olderr) (prin1) )
-
Mettre la variable OSNAPZ à 1 pourrait régler tes soucis... Pour la projection je te propose aussi my_project.lsp Il ne traite que les objets curviligne, mais il est très rapide à la différence de flatten. pour l'astuce Si il y a des blocs dans ton dessin, je te recommande vivement la commande _AUDIT après avoir appliquer cette procédure, et de corriger les erreurs (elles concerne l'échelle d'insertion en Z des blocs, qui se retrouve à 0, ce qui rend ces bloc incohérents pour Autocad)
-
Bonjour, Essayes cet outil en lisp. Je pense qu'il pourra te simplifier la tâche
-
Bonjour, Vraiment de très jolis clichés à voir, et impressionnant en plus. http://www.suchablog.com/de-sublimes-photos-de-l-eruption-du-puyehue-au-chili
-
[Ludique] Simulation du fonctionnement d\'une centrale nucléaire
bonuscad a posté un sujet dans Pause café
Bonjour, A défaut de pouvoir faire autre chose que d'en parler, voici un petite simulation (simpliste) en flash pour arrêter un réacteur à eau bouillante. Saurez maitriser cette chaudière nucléaire en cas d'incident avant la fusion du cœur (plusieurs niveaux d'incidents) ? :mad2: Ici, vous avez droit à l'erreur sans l'évacuation des membres du forum :red: Les principales actions: - fermer/ouvrir les vannes - actionner les pompes - baisser/relever les barres de contrôle http://irfu.cea.fr/Nuclearplant/ -
Pour les plus courants (qui sont accessible dans un dossier de recherche d'Autocad), j'utilise un bouton avec la syntaxe suivante. ^C^C(if (not c:elp) (load"elp"));elp;^Z Je préfère cette manière que de surcharger la valise de chargement automatique au démarrage. Pour les trucs qui me semble indispensables je passe par (defun-q s::startup .....) Pour les codes occasionnels, je fais simplement un glisser du navigateur dans la fenêtre graphique pour effectuer le chargement et avoir la commande dispo au clavier.
-
Il y a aussi ce lisp que j'avais du déjà mettre en ligne, mais je préfère le re-publier car il y a eu certainement des modifs depuis... (defun c:elp ( / js ent-sel ent pt_sel obj_curv old_osmd old_snp old_orth pt_sel param deriv pt_tmp p_from p_to) (vl-load-com) (princ "\nElever une perpendiculaire à: ") (while (not (setq js (ssget "_+.:E:S" '((0 . "*LINE,ARC,CIRCLE,ELLIPSE,RAY")))))) (setq ent-sel (ssnamex js 0) ent (cadar ent-sel) pt_sel (cadar (cdddar ent-sel)) obj_curv (vlax-ename->vla-object ent) ) (cond ((member (vlax-get-property obj_curv 'ObjectName) '("AcDbPolyline" "AcDb2dPolyline" "AcDbLine" "AcDbArc" "AcDbCircle" "AcDbEllipse" "AcDbSpline" "AcDbRay" "AcDbXline") ) (setq old_osmd (getvar "osmode") old_snp (getvar "snapang") old_orth (getvar "orthomode") pt_sel (vlax-curve-getClosestPointTo obj_curv pt_sel) param (vlax-curve-getparamatpoint obj_curv pt_sel) deriv (vlax-curve-getfirstderiv obj_curv param) ) (setq pt_tmp (polar pt_sel (+ (atan (cadr deriv) (car deriv)) (/ pi 2)) 100.0)) (setvar "snapang" (angle (trans pt_sel 0 1) (trans pt_tmp 0 1))) (setvar "orthomode" 1) (if (null (setq p_from (getpoint "\nDu point : "))) (setq p_from (trans pt_sel 0 1)) ) (setvar "osmode" 0) (initget 9) (setq p_to (getpoint p_from "\nJusqu'au point : ")) (command "_.line" p_from p_to "") (setvar "osmode" old_osmd) (setvar "orthomode" old_orth) (setvar "snapang" old_snp) ) (T (princ "\nObjet invalide!")) ) (princ) )
-
Bonjour, As tu essayer la purge en ligne de commande? -PURGE et prendre l'option "appsenReg" (R), cela devrait te permettre de purger des applications. Est tu l'auteur de ce dessin avec la version 2011 ou vient-il d'un produit vertical produit par un tiers?
-
Salut A tout hasard regarde l'état de la variable XLOADCTL Le mieux est d'être à 2 surtout si tes Xrefs sont sur le réseau. Bien mettre en corrélation la variable XLOADPATH qui dans ce cas devrait pointer vers un dossier temporaire de TON disque (et non vers un chemin réseau) XREFNOTIFY peut être aussi enquiquinant. En dernier lieu l'état de la variable VISRETAIN peut avoir aussi une influence. INDEXCTL dans les fichiers servant en Xref peut aussi améliorer le comportement. Voir l'aide pour plus d"info sur ces variables.
-
En effet tu n'es pas le seul. Par contre redémarrer la bécane... quelle perte de temps, pour ma part je passe simplement par un clic-droit sur un dwg et je fais "ouvrir avec" et choisi le "launcher" et tout rentre dans l'ordre par la suite.
-
Le coup de gueule poignant d'Alex , un Français résidant au Japon depuis de nombreuses années. Celui ci vient d'être censuré sur youtube, toute ses vidéos concernant son journal qu'il tenait sur Fukushima (la plupart en Anglais) ont été purement et simplement retirées. Merci à Next-up d’héberger cette vidéo. Son cri d'alarme ne peut nous laisser indifférent, surtout quand on apprend que la centrale nucléaire de Fort Calhoun dans le Nebraska est inondée par le Missouri en crue. Comme on va être amené de plus en plus à connaitre des phénomènes climatiques exceptionnel, on ne peut pas croire que de tel incidents ne se répèteront pas n'importe où sur la planète. (on a bien frôlé l'incident à la centrale du Blayais lors de la tempête de 99) LE NUCLEAIRE EST LOIN D'ETRE SUR Quand on voit le buzz qu'a engendré notre ministre de l'industrie Eric Besson par son comportement sur M6. Peut on encore simplement parler avec nos décideurs, j'en doute...
-
Un classique... Mettre la variable FILLMODE à 1, suivie d'une régénération.
-
Salut, La seule raison que je vois (à l'inverse de la version 3D), c'est que l'ancienne version utilise une boite de dialogue (Talus.dcl). Si celui n'est pas accessible à travers les dossiers de recherche déclarés d'autocad, tu as droit à cette erreur. Soit tu rajoute un dossier dans les options, soit tu déplace le DCL dans un dossier qui va bien.
-
Bonjour, Si tu veux, tu peux essayer dyn_filter En passant par "Rechercher dans les forums" et en mettant dyn_filter et mon pseudo , tu trouveras les sujets/réponses concernant ce lisp et d'autres alternatives proposées. bonne recherche ;)
-
Pour info j'avais tester cela sur un Autocad Map 2009, cela semblait fonctionner correctement jusqu'au moment ou je me suis rendu compte que cela me faisait boguer la commande _mapiinsert. Donc bidouille pouvant créer des surprises, bien se rappeler de cette modification si l'on rencontre des anomalies de fonctionnement par la suite. Vue ici concernant Map 3D 2010
-
Bonjour, Ce qui veut dire que par le menu déroulant de "Modification" -> "Objet" - > "Image" -> "Ajuster ..." (commande "AJUSTEIMAGE" et/ou "_IMAGEADJUST"), cela ne fonctionne pas? Problème avec un seul format d'image ou pareil pour tous les types? PS: Irfanview (gratuiciel) permet de faire des traitements par lot à des images. [Edité le 7/6/2011 par bonuscad]
-
Alors il te faut mettre le nom du calque entre guillemet dans la macro pour une bonne interprétation. "Dessus trait"
-
Il a simplement omis l'underscore "_" devant les options pour internationaliser sa macro ^C^C_.-layer;_set;0;_freeze;0-murs;;^Z [Edité le 27/5/2011 par bonuscad]
-
Bonsoir, Essayes déjà en ligne de commande "_EXPRESSTOOLS" Cette commande se charge de décharger le menu Express puis de le recharger et reconfigurer les Express avec la configuration qui va bien. ;)
-
Ha bon! :exclam: Je ne vois pas comment (gile) a pus extraire le milieu entres sommets concomitants sans avoir la distance entre ceux-ci :casstet: Mais je te laisse juge de ton besoin. Pour moi il me semblait qu'un (mapcar 'max (list distances calculées)) et un (mapcar 'min (list distances calculées)) placé judicieusement dans sa routine...
-
Salut, Pour pouvoir geler un calque, on est d'abords obligé d'en rendre autre courant avant de pouvoir le geler, le quel choisir : le calque 0 ? Par contre on peut l'inactiver en restant sur celui-ci, mais il demande confirmation... Exemple avec la variable EXPERT à 0, cette macro devrait fonctionner ^C^C_.-layer;_off;0-murs;_yes;;^Z Suivant l'état d'expert, il faut soit changer son état, soit le contenu de la macro.
-
Est ce que cette réponse de (gile) n'est pas (à quelque chose près) dans la même optique? Il n'y a pas grand chose à faire pour avoir les distances entre sommets de 2 polylignes au lieu du milieu comme proposé dans la routine.
