-
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
-
Il te faut repomper le code dans le bloc-note et enlever l'espace qui sera en trop: "< NOT" en rouge car j'ai éditer le message original. Où alors laisse moi une adresse et je t'envoie le fichier.
-
Résultats des élections présidentielles
bonuscad a répondu à un(e) sujet de autospeed dans Pause café
Ha!... le vote utile. Pourquoi au second tour il n'y aurais pas par exemple les 3 premiers candidats. Je pense que ça éviterait le vote utile du premier tour et rendrait le choix peut être plus démocratique. Basculer gauche-droite tous les quinquennats, ça devient stérile... On ne s'exprime plus que pour barrer le chemin et non pour un candidat, à croire que ça les arrange ces modes de scrutins, ou personne n'ose exprimer vraiment ses idées mais procède à un vote tactique. Les pourcentages ne sont pas légitimes et ne reflètent pas les souhaits des Français. -
OOPS Le classique "<" qui fout le boxon, désolé (setq js (ssget '((0 . "LINE,*POLYLINE,POINT") (-4 . "< NOT") (-4 . "&") (70 . 112) (-4 . "NOT>"))) n -1) j'édite le code en rajoutant l'espace après "> "
-
Oui ça c'est normal, j'aurais du faire un petit (print "nombre de bloc effectué") dans le code. Mais attaches toi à la partie graphique dans le gestionnaire de calque du dois avoir 2 calques crées "borne" actif-dégelé-de couleur cyan- MAIS verrouillé "borne_attributs" INACTIF-dégelé-de couleur vert- MAIS verrouillé aussi Pour voir les attributs il te faut (après la commande JALNA, où il ne se passe rien ;) ) ACTIVER le calque "borne_attributs" Si tu veux changer l'échelle de l'ensemble des blocs créés il te faudra au préalable DEVERROUILLER les 2 calques. Si effectivement, il n'y a rien, alors là, je laisses la main à un possesseur d'une version 2006 ou supérieure pour t'aider. Moi j'ai pu tester jusqu'en v-2005 et pas de problème !?!?
-
J'ai fait un (entmake) avec ton retour d'info, et la commande JALNA a fonctionné sur cette entité (pour moi en tout cas) :casstet: Je ne vois pas ce qui peut "clocher"... Réessayes la commande JALNA en ne sélectionnant seulement que l'entité que tu m'as fourni précédemment, pour voir NB:Je ne suis pas sous 2006, mais je ne pense pas que ce soit le problème.
-
Même résultat que Bred, avec en ligne de commande: ; erreur: une exception s'est produite: 0xC0000005 (Violation d'accès) ; avertissement: fonction unwind ignorée erreur inconnue
-
On va juste vérifier les entités que tu veux traiter, si c'est bien des lignes, point ou polylignes. Copie-colle ce qui suit directement en ligne de commande,sélectionne une SEULE entité (exemple) sur laquelle tu aurais voulu appliqué la commande JALNA et fait un copier-coller du retour de l'écran texte. ((lambda ( / ent dxf_ent) (setq ent (entsel)) (cond (ent (setq dxf_ent (entget (car ent))) (foreach n dxf_ent (if (member (car n) '(-1 330 5)) (setq dxf_ent (vl-remove n dxf_ent)) ) ) ) ) (print dxf_ent) (prin1) ))
-
Pas de petit double cercle (de couleur cyan) sont apparus aux extrémités des segments? Pas de calques créés? Si oui, active celui qui est éteint. Pour la taille des insertions, si elle ne convient pas, fais une sélection rapide dur le bloc "$borne" et change la taille en x,y,z dans les propriétés.
-
Comme j'apprécie les liens que tu partages dans la pause café, je t'ai fait un lisp sur mesure. ;) Il créera un bloc appelé "$borne" s'il n'existe pas, avec attributs au nombre de 4 : numéro du bloc incrémenté, x, y et z. Le choix des objets est filtré et accepte les LWPOLYLINE, POLYLINE 2D et 3D, les LINE et les POINTS Les coordonnées dans le bloc seront renseignées dans le SCG uniquement quel que soit le SCU de création des entités sélectionnées. NB: Le calque "borne" et "borne_attributs" sont créer en mode verrouillé et pour le dernier, il est inactif (les attributs ne se voient pas mais sont présents). Le code (un peu long à cause de la définition du bloc intégré) (defun c:jalna (/ pto x y z nb js dxf_ent n dxf_210 lst_pt e_next) (cond ((eq (getvar "cvport") 1) (princ "\n** Commande autorisée uniquement dans l'espace objet." ) ) (T (if (not (tblsearch "LAYER" "borne_attributs")) (entmake '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "borne_attributs") (70 . 4) (62 . -3) (6 . "Continuous") (290 . 1) (370 . -3) ) ) ) (if (not (tblsearch "LAYER" "borne")) (entmake '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "borne") (70 . 4) (62 . 4) (6 . "Continuous") (290 . 1) (370 . -3) ) ) ) (if (not (tblsearch "STYLE" "$borne")) (entmake '((0 . "STYLE") (5 . "40") (100 . "AcDbSymbolTableRecord") (100 . "AcDbTextStyleTableRecord") (2 . "$borne") (70 . 0) (40 . 0.0) (41 . 1.0) (50 . 0.0) (71 . 0) (42 . 2.5) (3 . "monotxt.shx") (4 . "") ) ) ) (setvar "textstyle" "$borne") (if (not (tblsearch "BLOCK" "$borne")) (progn (entmake '((0 . "BLOCK") (2 . "$borne") (70 . 2) (10 0.0 0.0 0.0)) ) (entmake '((0 . "ATTDEF") (67 . 0) (8 . "borne_attributs") (62 . 1) (10 1.0 0.0 0.0) (40 . 1.0) (1 . "0") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$borne") (210 0.0 0.0 1.0) (3 . "Numéro de la borne: ") (2 . "NO") (70 . 0) ) ) (entmake '((0 . "ATTDEF") (67 . 0) (8 . "borne_attributs") (10 1.0 -1.66667 0.0) (40 . 1.0) (1 . "X=0.0") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$borne") (210 0.0 0.0 1.0) (3 . "Entrer le X du point: ") (2 . "ID-X") (70 . 0) ) ) (entmake '((0 . "ATTDEF") (67 . 0) (8 . "borne_attributs") (10 1.0 -3.33333 0.0) (40 . 1.0) (1 . "Y=0.0") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$borne") (210 0.0 0.0 1.0) (3 . "Entrer le Y du point: ") (2 . "ID-Y") (70 . 0) ) ) (entmake '((0 . "ATTDEF") (67 . 0) (8 . "borne_attributs") (10 1.0 -5.0 0.0) (40 . 1.0) (1 . "Z=0.0") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$borne") (210 0.0 0.0 1.0) (3 . "Entrer le Z du point: ") (2 . "ID-Z") (70 . 0) ) ) (entmake '((0 . "CIRCLE") (67 . 0) (8 . "borne") (10 0.0 0.0 0.0) (40 . 0.25) (210 0.0 0.0 1.0) ) ) (entmake '((0 . "CIRCLE") (67 . 0) (8 . "borne") (10 0.0 0.0 0.0) (40 . 0.40) (210 0.0 0.0 1.0) ) ) (entmake '((0 . "ENDBLK"))) ) ) (if (not nob) (setq nob 1) ) (setq js (ssget '((0 . "LINE,*POLYLINE,POINT") (-4 . [color=red]"< NOT"[/color]) (-4 . "&") (70 . 112) (-4 . "NOT>"))) n -1) (initget 6) (setq nb (getint (strcat "\nNo du 1er point <" (itoa nob) ">: "))) (if (not nb) (setq nb nob) ) (cond (js (repeat (sslength js) (setq dxf_ent (entget (ssname js (setq n (1+ n)))) dxf_210 (cdr (assoc 210 dxf_ent)) lst_pt nil) (cond ((eq (cdr (assoc 0 dxf_ent)) "LINE") (setq lst_pt (list (cdr (assoc 10 dxf_ent)) (cdr (assoc 11 dxf_ent)))) ) ((eq (cdr (assoc 0 dxf_ent)) "LWPOLYLINE") (setq lst_pt (mapcar '(lambda (x) (trans x dxf_210 0)) (mapcar '(lambda (x) (append x (list (cdr (assoc 38 dxf_ent))))) (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) dxf_ent)) ) ) ) ) ((eq (cdr (assoc 0 dxf_ent)) "POLYLINE") (setq e_next (entnext (cdar dxf_ent))) (while (= "VERTEX" (cdr (assoc 0 (setq dxf_next (entget e_next))))) (if (zerop (boole 1 (cdr (assoc 70 dxf_next)) 16)) (setq lst_pt (cons (cdr (assoc 10 dxf_next)) lst_pt)) ) (setq e_next (entnext e_next)) ) (setq lst_pt (mapcar '(lambda (x) (trans x dxf_210 0)) (reverse lst_pt))) ) ((eq (cdr (assoc 0 dxf_ent)) "POINT") (setq lst_pt (list (cdr (assoc 10 dxf_ent)))) ) ) (foreach pto lst_pt (setq x (car pto) y (cadr pto) z (caddr pto) ) (entmake (append '((0 . "INSERT") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "borne") (100 . "AcDbBlockReference") (66 . 1) (2 . "$borne") (41 . 1.0) (42 . 1.0) (43 . 1.0) (50 . 0.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) ) (list (cons 10 (trans pto 0 dxf_210)) (cons 210 dxf_210)) ) ) (entmake (append '((0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "borne_attributs") (62 . 1) (100 . "AcDbText") (40 . 1.0) (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$borne") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (100 . "AcDbAttribute") (2 . "NO") (70 . 0) (73 . 0) (74 . 0) ) (list (cons 1 (strcat "Borne N°:" (itoa nb))) (cons 10 (trans (list (+ (car pto) 1.0) (cadr pto) (caddr pto)) 0 dxf_210)) (cons 210 dxf_210) ) ) ) (entmake (append '((0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "borne_attributs") (100 . "AcDbText") (40 . 1.0) (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$borne") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttribute") (2 . "ID-X") (70 . 0) (73 . 0) (74 . 0) ) (list (cons 1 (strcat "X=" (rtos x 2 4))) (cons 10 (trans (list (+ (car pto) 1.0) (+ (cadr pto) -1.66667) (caddr pto)) 0 dxf_210)) (cons 210 dxf_210) ) ) ) (entmake (append '((0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "borne_attributs") (100 . "AcDbText") (40 . 1.0) (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$borne") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (100 . "AcDbAttribute") (2 . "ID-Y") (70 . 0) (73 . 0) (74 . 0) ) (list (cons 1 (strcat "Y=" (rtos y 2 4))) (cons 10 (trans (list (+ (car pto) 1.0) (+ (cadr pto) -3.33333) (caddr pto)) 0 dxf_210)) (cons 210 dxf_210) ) ) ) (entmake (append '((0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "borne_attributs") (100 . "AcDbText") (40 . 1.0) (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$borne") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (100 . "AcDbAttribute") (2 . "ID-Z") (70 . 0) (73 . 0) (74 . 0) ) (list (cons 1 (strcat "Z=" (rtos z 2 4))) (cons 10 (trans (list (+ (car pto) 1.0) (+ (cadr pto) -5.0) (caddr pto)) 0 dxf_210)) (cons 210 dxf_210) ) ) ) (entmake '((0 . "SEQEND"))) (setq nb (1+ nb)) ) (setq pt_lst nil) ) ) ) (setq nob nb) ) ) (prin1) ) Enlever l'espace après "< " en rouge [Edité le 26/4/2007 par bonuscad]
-
Décaler uniquement un segment de polyligne.
bonuscad a répondu à un(e) sujet de bonuscad dans Routines LISP
OK J'avais déjà modifié le code car j'avais trouvé une solution, mais il n'est pas impossible que j'adopte la méthode que tu m'as proposé, plus simple... ;) Merci encore, je penses que le code est fiable maintenant. -
Décaler uniquement un segment de polyligne.
bonuscad a répondu à un(e) sujet de bonuscad dans Routines LISP
Merci Gilles de ta suggestion, J'ai essayé, cela fonctionne bien dans des SCU parallèles au SCG, mais pas dans des SCU non parallèles. J'ai donc gardé le même algorithme que pour un segment droit que j'ai simplement appliqué à la tangente au point de sélection, au lieu de l'appliquer à la corde comme précédemment. Après des tests cela à l'aire de vouloir fonctionner correctement. J'ai trouvé aussi le moyen d'appliquer le paramètre "Par le point" de la fonction décaler. Le seul "Hic" qui reste est la gestion de l'erreur dans le cas d'un arc ou la valeur de décalage est plus grande que le rayon et que celui est décalé vers le centre. J'aurais voulu savoir si une fonction comme (vl-catch.... pourrait m'aider à résoudre simplement cette gestion d'erreur lors de l'appel à (vla-Offset car je n'ai encore jamais utilisé cette fonction. PS: J'ai mis à jour le code dans le 1er post -
C'est une routine que j'essaye d'améliorer, j'ai voulu l'écrire sans faire d'appel à commande. Il me reste juste un petit problème à résoudre, c'est le côté de décalage pour les arcs. Pour les segments droit ça fonctionne bien, mais pour les arrondis je ne sais comment faire pour avoir une fiabilité sur la détermination du côté à décaler. Un autre problème (moins important); je ne sais comment émuler le paramètre "par" ("_through") de la commande décaler avec (vla-Offset). La routine s'appuie sur (near_vertex) sur laquelle (gile) m'a déjà bien aidé. (defun c:offset_vertex ( / obj dxf_obj obj_vlax pt_sel par i pt_first pt_snd bulge e_next pt_ref lst_dxf rad p_cen dxf_210 dis_offset where_pt v1 v2 det_or) (while (not (setq obj (entsel "\nChoix d'une polyligne ")))) (cond ((or (eq (cdr (assoc 0 (setq dxf_obj (entget (car obj))))) "LWPOLYLINE") (and (eq (cdr (assoc 0 dxf_obj)) "POLYLINE") (zerop (boole 1 112 (cdr (assoc 70 dxf_obj)))) ) ) (vl-load-com) (setq obj_vlax (vlax-ename->vla-object (car obj)) pt_sel (vlax-curve-getClosestPointToProjection obj_vlax (trans (cadr obj) 1 0) (mapcar '- (trans (getvar "VIEWDIR") 1 0) (trans '(0 0 0) 1 0)) ) par (vlax-curve-getParamAtPoint obj_vlax pt_sel) i 0 ) (if (>= par (vlax-curve-getEndParam obj_vlax)) (setq par (1- par))) (setq pt_first (trans (vlax-curve-getPointAtParam obj_vlax (fix par)) 0 1) ) (if (= (1+ (fix par)) (vlax-curve-getEndParam obj_vlax)) (setq pt_snd (trans (vlax-curve-getEndPoint obj_vlax) 0 1)) (setq pt_snd (trans (vlax-curve-getPointAtParam obj_vlax (1+ (fix par))) 0 1)) ) (cond ((eq (cdr (assoc 0 dxf_obj)) "LWPOLYLINE") (while (or (/= (caar dxf_obj) 42) (if (< i (fix par)) (setq i (1+ i)))) (setq bulge (cdadr dxf_obj) dxf_obj (cdr dxf_obj)) ) ) (T (setq e_next (entnext (cdar dxf_obj))) (repeat (fix par) (setq e_next (entnext e_next))) (setq bulge (cdr (assoc 42 (entget e_next)))) ) ) (setq dxf_obj (entget (car obj)) pt_ref pt_snd) (if (zerop bulge) (setq lst_dxf (list (cons 0 "LINE") (cons 100 "AcDbEntity") (assoc 67 dxf_obj) (assoc 410 dxf_obj) (cons 8 (getvar "CLAYER")) (cons 100 "AcDbLine") (cons 10 (trans pt_first 1 0)) (cons 11 (trans pt_snd 1 0)) (assoc 210 dxf_obj) ) ) (setq dxf_210 (cdr (assoc 210 dxf_obj)) pt_first (trans pt_first 1 dxf_210) pt_snd (trans pt_snd 1 dxf_210) rad (abs (/ (distance pt_first pt_snd) (sin (* 2.0 (atan bulge))) 2.0)) p_cen (polar pt_first (if (> bulge 0.0) (+ (angle pt_first pt_snd) (- (/ pi 2.0) (* 2.0 (atan bulge)))) (- (angle pt_first pt_snd) (+ (/ pi 2.0) (* 2.0 (atan bulge)))) ) rad ) lst_dxf (list (cons 0 "ARC") (cons 100 "AcDbEntity") (assoc 67 dxf_obj) (assoc 410 dxf_obj) (cons 8 (getvar "CLAYER")) (cons 100 "AcDbCircle") (cons 10 p_cen) (cons 40 rad) (cons 100 "AcDbArc") (cons 50 (angle p_cen (if (> bulge 0.0) pt_first pt_snd))) (cons 51 (angle p_cen (if (> bulge 0.0) pt_snd pt_first))) (assoc 210 dxf_obj) ) ) ) (foreach n '(6 39 48 62 370 420) (if (assoc n dxf_obj) (setq lst_dxf (append lst_dxf (list (assoc n dxf_obj)))) ) ) (initget "Par _Through") (setvar "OFFSETDIST" (if (not (setq dis_offset (getdist (strcat "\nSpécifiez la distance de décalage ou [Par] <" (if (< (getvar "OFFSETDIST") 0) "Par" (rtos (getvar "OFFSETDIST"))) ">: ")))) (progn (if (< (getvar "OFFSETDIST") 0) (setq dis_offset "Through")) (getvar "OFFSETDIST")) (if (eq dis_offset "Through") -1 dis_offset) ) ) (if (< (getvar "OFFSETDIST") 0) (princ "\nAttribuez une valeur à \"Par le point\": ") (princ "\nSpécifiez un point sur le côté à décaler: ") ) (initget 9) (setq where_pt (getpoint)) (entmake lst_dxf) (setq e_last (entlast)) (if (< (getvar "OFFSETDIST") 0) (setvar "OFFSETDIST" (distance (vlax-curve-getClosestPointToProjection e_last (trans where_pt 1 0) (mapcar '- (trans (getvar "VIEWDIR") 1 0) (trans '(0 0 0) 1 0)) T ) (list (car (trans where_pt 1 0)) (cadr (trans where_pt 1 0))) ) ) ) (if (eq "LINE" (cdr (assoc 0 lst_dxf))) (setq v1 (mapcar '- pt_ref pt_sel) v2 (mapcar '- (trans where_pt 1 0) pt_sel) ) (setq v1 (mapcar '- (polar pt_sel (+ (angle pt_sel (trans p_cen dxf_210 0)) (/ pi 2)) rad) pt_sel) v2 (mapcar '- (trans where_pt 1 0) pt_sel) ) ) (setq det_or (apply '(lambda (x1 y1 z1 x2 y2 z2) (- (* x1 y2) (* y1 x2))) (append v1 v2))) (cond ((> det_or 0.0) (setvar "OFFSETDIST" (abs (getvar "OFFSETDIST")))) ((< det_or 0.0) (setvar "OFFSETDIST" (- (abs (getvar "OFFSETDIST"))))) ) (if (vl-catch-all-error-p (vl-catch-all-apply 'vla-Offset (list (vlax-ename->vla-object e_last) (getvar "OFFSETDIST") ) ) ) (princ "\nL'objet ne peut pas être décalé.") (setvar "OFFSETDIST" (if (eq dis_offset "Through") -1 (abs (getvar "OFFSETDIST")))) ) (entdel e_last) ) (T (princ "\nN'est pas une polyligne valable pour cette fonction!") ) ) (prin1) ) [Edité le 24/4/2007 par bonuscad] Application de la gestion d'erreur de Gilles, plus élégante que la mienne. [Edité le 24/4/2007 par bonuscad]
-
Google , Apple, Microsoft, les nouveaux maitres du Monde
bonuscad a répondu à un sujet dans Pause café
Patrick, tu as du payer cher à Google pour être en 5 ème position (sur 49 300 000 réponses) avec comme mot de recherche "CAO" ;) D'après le reportage, il parait que cela fonctionne ainsi, pour faire partie des premières réponses pertinentes!!! -
organisation des niveaux dans autocad
bonuscad a répondu à un(e) sujet de whitesquare dans Organisation du travail
Le batiment, n'est pas vraiment mon domaine. Mais si je devais produire des dessins je penses que je ferais ceci depuis une presentation avec 1 fenêtre par niveau. Dans ces fenêtre les calques correspondant au niveau seraient les seuls dégelé. (command "_VPLAYER" , ou simplement le gestionnaire de calque) Faire attention à la variable "VISRETAIN" pour bien conserver ces état de calque d'une session à l'autre. On peut aussi verrouiller l'échelle de zoom dans ces fenêtre pour ne pas avoir continuellement à remettre le zoom propre à la fenêtre. En résumé travailler dans l'Espace Objet depuis l'espace Papier... Et si tu as beaucoup de niveau, mémoriser les vue (dans l'espace papier) de chacun de tes niveaux pour les rappeler rapidement par la suite. -
Dans AutoCAD.pgp je pense que oui Si on rajoute par exemple: LW, *lman cela fonctionne, mais il faut dire que ce lisp s'auto-initialise (comme pour beaucoup de commande des express). Pour d'autre commande, je pense qu'il faut s'assurer que le lisp correspondant est déjà bien chargé en mémoire pour que le raccourci fonctionne. Voir les fonctions d'autochargement dans acad200xdoc.lsp par exemple.
-
Alors là je n'y comprend plus rien. Chez moi la commande "AIRE" change bien la variable "PERIMETER" même si l'objet sélectionné est fermé ou ouvert et ceci depuis fort longtemps jusqu'à 2006 puisque pour Formabois , ele fonctionne. Mais enfin si cela fonctionne avec la commande "_lengthen" c'est le principal. PS: c'est vrai que la publication des codes sur le forum et souvent pollué par des insertions d'espace ou des suppressions (le fameux "< ") tronque tout ce qui suit. J'avais pourtant bien insister sur les espaces qui pouvaient se retrouver en trop :mad:
-
Ahh!!! avec 2007 _.text et _.dtext sont équivalent. 2 commandes en 1... Donc _.dtext n'existe plus, merci de m'éclairer Effectivement ces refontes de commandes peuvent perturber le comportement des macros. :casstet:
-
Comme je te l'ai dit je ne peux pas tester sous 2007. Bizarre car la macro n'appelle pas la commande AIRE, ce qui me ferais dire qu'un espace (équivalent à une validation) traine au début du bouton. Donc cela relancerait la dernière commande... Bien vérifier qu'il n'y ai aucun espace (préférer ";" ou "^M" qui sont des équivalents, on voit mieux la syntaxe. En effet un double espace serait équivalent ";;" mais cela ne saute pas aux yeux quand on regarde le code. Il me semble étrange aussi que tu ne puisses changer manuellement la variable "USERS1" Essayes par la commande "MODIFVAR" ("_SETVAR") Tu peux essayer aussi d'utiliser "MODEMACRO" pour t'aider a mettre au point la macro. J'espère qu'un membre maitrisant un peu le diesel et possédant la 2007 pourra mieux t'aider...
-
Je pense que le bouton est bon, la condition doit être effectué pour qu'il ne se passe rien. A savoir que le total doit être différent de 0.0 pour être inscrit. Donc comme Total n'est pas inscrit la variable "USERS1" doit contenir "0.0" Tu peux vérifier ceci en tapant USERS1 directement au clavier Rappel du principe de fonctionnement: Les boutons sont à utiliser dans l'ordre * 1 initialisation position de départ des inscriptions, * 2 sélection, calcul, inscription des valeurs intermédiaires (ce bouton est auto répétitif jusqu'à l'appui de ESC) * 3 Inscription de la somme totale depuis 1 Un nouveau calcul? On redémarre de 1. A moins que LT2007 comprenne le diesel différemment.... ou simplement la commande Texte qui ne réagis pas de la même façon (c'est fort possible) Est-ce que la variable "TEXTEVAL" existe sous LT? Une piste peut être... Pour 2007 je ne pourrais t'aider en testant de mon côté :casstet: [Edité le 20/4/2007 par bonuscad]
-
LISP changement de couleur d\'un texte multilgnes
bonuscad a répondu à un(e) sujet de autospeed dans AutoCAD 2006
Voici un lisp, mais je pense que Qselect pouvais faire aussi bien l'affaire ((lambda ( / ) (princ "\nChanger la couleur forcée des entités TEXTE en DuCalque.") (initget "Selection Tout _Select All") (if (eq (getkword "\nChoix par [selection/Tout] : ") "Select") (setq js (ssget '((0 . "*TEXT") (-4 . "!=") (62 . 256)))) (setq js (ssget "_X" '((0 . "*TEXT") (-4 . "!=") (62 . 256)))) ) (cond (js (repeat (setq n (sslength js)) (setq dxf_ent (entget (ssname js (setq n (1- n))))) (entmod (subst (cons 62 256) (assoc 62 dxf_ent) dxf_ent)) ) ) (T (princ "\nAucun TEXTE ou MultiTEXTE trouvé!")) ) (prin1) )) Viens de voir la réponse de (gile), ce qui me faire dire que ta question n'est pas assez précise. Couleur Forcée d'accord, mais où? Dans l'éditeur Mtext ou dans ses propriétés ?!?! [Edité le 20/4/2007 par bonuscad] -
Pour ta culture avec (grread), tu peux regarder ce sujet grread n'a pas d'option de message, mais en placant jusdicieusement des (princ "message") dans une boucle, tu peux arriver à en placer. Analyser les retour de grread pour des actions appropriés augmente vite la taille du code pour pas grand chose. Regarde l'exemple sur lequel je te renvoie, rien que pour simuler un fonctionnement d'accroche objet ce qu'il a fallu faire et ça pour un résultat loin d'être parfait. Un autre exemple d'utilisation! (defun c:choice_quad ( / js dxf_ent pt_mid x_alpha omega lg_line ss_tmp n lst_ename) (princ "\nSélectionner une ligne.") (while (null (setq js (ssget "_:S" '((0 . "LINE")))))) (setq dxf_ent (entget (ssname js 0)) pt_mid (mapcar '/ (mapcar '+ (trans (cdr (assoc 10 dxf_ent)) 0 1) (trans (cdr (assoc 11 dxf_ent)) 0 1)) '(2.0 2.0 2.0)) x_alpha (angle (trans (cdr (assoc 10 dxf_ent)) 0 1) (trans (cdr (assoc 11 dxf_ent)) 0 1)) omega (/ (* 15 pi) 180) lg_line (/ (distance (cdr (assoc 10 dxf_ent)) (cdr (assoc 11 dxf_ent))) 4) ss_tmp (ssadd) n -2 lst_ename '() ) (repeat 4 (if (zerop n) (setq x_alpha (+ pi x_alpha))) (command "_.line" "_none" pt_mid "_none" (polar pt_mid (+ x_alpha omega) lg_line) "") (setq omega (- pi omega) lst_ename (cons (entlast) lst_ename) n (1+ n) ) ) (foreach sx (cdr lst_ename) (setq ss_tmp (ssadd sx ss_tmp))) (sssetfirst nil ss_tmp) (princ "\n< Espace > or [Click-Gauche] pour sélectionner quadrant suivant/< Entrer > ou [Click-Droit] pour quitter!.") (while (and (not (member (setq key (grread nil 4 0)) '((2 13)))) (/= (car key) 25)) (sssetfirst nil nil) (setq lst_ename (append (cdr lst_ename) (list (car lst_ename))) ss_tmp (ssadd)) (foreach sx (cdr lst_ename) (setq ss_tmp (ssadd sx ss_tmp))) (sssetfirst nil ss_tmp) ) (command "_.erase" ss_tmp "") (prin1) ) Voilà ces exemples vont peut être t'aider ?!
-
Quand je veux gérer facilement l'ordre d'affichage d'objet particulier, je procède ainsi: Dans ton cas j'isolerais le calque de mes blocs (si c'est pas le cas les regrouper dans un calque spécifique), puis je fais un fichier de tous ces objets (commande WBLOC). Tu obtiens ainsi un nouveau fichier que tu vas insérer en xref. Celui sera facile à placer dessus ou dessous des autres objets Si j'ai des masque de texte colorisé, je fais pareil (un fichier pour les masques, un fichier pour les texte), ainsi il m'est facile de gérer les ordres d'affichage.
-
Acad.pat fichier de définition pour le système anglo-saxon, c'est à dire en pouces Acadiso.pat pour le système métrique 1pouce = 2.54cm, tu retrouve ce rapport dans la définition des hachures entre les 2 modèles.
-
As tu consulté le lien dans la réponse 4 :casstet: Il te suffit de cliquer sur le mot "sujet" pour t'y rendre. Sous une version LT sans LT-Extender, tu ne pourras pas faire des miracles. Il y a aussi des solutions pour LT proposé par RebCAO, fais une recherche sur le forum avec son pseudo Un sujet entre d'autres: "devoir de vacance" je crois ! par rebcao
-
Merci Gilles cela fait plaisir, mais je te dis en toute honnêteté que l'élève à dépasser le maitre. Maintenant c'est moi l'élève. Patrick_35 et toi êtes mes "mentors" comme l'a été Serge Camiré pour moi au début de ma fréquentation du web et d'autres plus anciens encore ; inconnu du Net. Bred et d'autres suivent, ils sont aussi sur le chemin... (je ne vais pas tous les citer) :P Pour l'apprentissage, internet est vraiment un plus que j'aurais apprécié à mes débuts, quand je vois à la vitesse ou vous progressez :mad: (que de temps j'ai perdu à analyser une fonction que je ne comprenais pas, sans aide possible)
