Aller au contenu

bonuscad

Membres
  • Compteur de contenus

    5 029
  • Inscription

  • Dernière visite

  • Jours gagnés

    56

Tout ce qui a été posté par bonuscad

  1. Peut être un début de réponse a ce problème de délai de connexion voir ICI Après lecture, j'en déduit que peut être certain plug-in (extensions) ou simplement un "bidouillage" manuel peut être responsable de ce problème. Lire les commentaires pour comprendre Piste à suivre ...... [Edité le 19/5/2005 par bonuscad]
  2. Salut, Une solution qui peut parfois être couronnée de succés! Dans un dessin vierge, tu insère ton dessin posant problème en cochant l'option "décomposer". Si cela fonctionne, fais de suite la commande " controle" (_audit) de ton dessin.
  3. Patrick_35 Est ce que la fonction (nentsel) ne serait pas le plus simple pour faire ce que tu désire? ((lambda ( / ent_att dxf_att) (while (null (setq ent_att (nentsel "\nChoix d'un attribut: ")))) (redraw (car ent_att) 3) (setq dxf_att (entget (car ent_att))) (cond ((eq (cdr (assoc 0 dxf_att)) "ATTRIB") (princ "\nL'attribut a pour valeur = ") (princ (cdr (assoc 1 dxf_att))) ) (T (princ "\nN'est pas un attribut") ) ) (getkword "\nTapez une touche pour continuer") (redraw (car ent_att) 4) (princ) ))
  4. bonuscad

    double décalage

    Une suggestion pour ton développement; la commande décaler lorsqu'elle demande un objet, tu peut fournir un point de sélection comme tu l'as fait qui pointera sur l'entité. Cette façon de faire peut être influencé par le mode d'accrochage objet (OSMODE) mais aussi par la taille d'ouverture de la cible de sélection (APERTURE) en effet si une entité plus récente dans la base de donnée que l'entité sélectionné passe dans la cible, elle risque d'être sélectionnée. Décaler accepte aussi le nom de l'entité tel que retourné par (entsel), et la tu seras sur que c'est bien la bonne entité qui sera soumis à la commande. ex: (setq ENT (entsel)) (command "_.offset" valeur_decalage ENT ........) Je pense qu'en procédant comme ceci tu auras moins de soucis. On progresse, on progresse ....... Ciao
  5. bonuscad

    double décalage

    Tu devrais regarder le fil de Tramber au sujet de sens du décalage Bien que je n'ai pus répondre à son problème, il ma permis de faire une routine très courte de double décalage. Merci Tramber ;) Celle ci est en VL et utilise activeX. Je n'ai pas fait de controle sur l'entité sélectionné (à savoir si elle supporte le décalage) mais c'est une autre méthode interessante. PS: Conseil; évite d'utiliser des caractères accentué pour les noms de variable que tu utilises, suivant les page de code utilisées dans l'environnement de l'OS cela risque de poser des problèmes.
  6. bonuscad

    Dessiner un trapèze

    Salut, J'ai édité mon dernier code publié pour le modifier (cela évite d'avoir un fil inondé de ligne de code) J'ai introduit la possibilité d'introduction des angles internes du trapèze au clavier. Voilà, si ca t'interesse d'y jeter un oeil retourne au post plus haut. Et continu comme ça, tu a l'âme d'un lispeur ;)
  7. bonuscad

    parabole...

    Bonsoir, Pas de commande en standard sous AutoCad Un lisp trouvé sur un site allemand En voici une traduction internationalisé: ; PARABEL.LSP Copyright (c) 1988, 1999 by Martin Vogel ; ; Zeichnet eine quadratische Parabel ; ; Wahlweise kann die Parabel durch drei Punkte bestimmt werden oder durch ; die Angabe von zwei Punkten und der Tangente im Startpunkt. ; Die Parabelgleichung wird im Textfenster von AutoCAD ausgegeben. (Defun C:Parabole (/ p0 p02 p1 p12 pm xm ym pm2 t0 w a b c d n x dx tuwas) (SetVAR "CmdEcho" 0) (Initget 7) (Setq p0 (getpoint "\nPoint de départ: ")) (SetQ x (Car p0)) (Setq p1 (getpoint "\nPoint de fin: ")) (Initget 7 "Tangente Hauteur _TAngent THickness") (Setq pm (getpoint "\nDéfinition par la [Tangente/Hauteur] ordinale ")) (IF (eq pm "TAngent") (PROGN (Setq t0 (/ (sin (setq w (getangle p0 "\nDirection de la Tangente: "))) (cos w))) (setq c (- (car p1) x)) (setq a (/ (- (cadr p1) (* t0 c) (cadr p0)) (* c c))) (setq b (- t0 (* 2 a x))) (setq c (+ (cadr p0) (* a x x) (- (* t0 x))))) (PROGN (IF (eq pm "THickness") (setq pm (list (/ (+ x (car p1)) 2) (+ (/ (+ (cadr p0) (cadr p1)) 2) (getdist "Hauteur: "))))) (setq p02 (* x x)) (setq pm2 (* (car pm) (car pm))) (setq p12 (* (car p1) (car p1))) (setq D (- (+ (* p02 (car pm)) (* x p12) (* pm2 (car p1))) (+ (* p12 (car pm)) (* (car p1) p02) (* pm2 x)))) (setq a (/ (- (+ (* (cadr p0) (car pm)) (* x (cadr p1)) (* (cadr pm) (car p1))) (+ (* (cadr p1) (car pm)) (* (car p1) (cadr p0)) (* (cadr pm) x))) D)) (setq b (/ (- (+ (* p02 (cadr pm)) (* (cadr p0) p12) (* pm2 (cadr p1))) (+ (* p12 (cadr pm)) (* (cadr p1) p02) (* pm2 (cadr p0)))) D)) (setq c (/ (- (+ (* p02 (car pm) (cadr p1)) (* (car p0) (cadr pm) p12) (* (cadr p0) pm2 (car p1))) (+ (* p12 (car pm) (cadr p0)) (* (car p1) (cadr pm) p02) (* (cadr p1) pm2 (car p0)))) D)))) (Write-Line (StrCat "\nEquation de la Parabole: " (rtos a 2) "*x^2 + " (rtos b 2) "*x + " (rtos c 2))) (InitGet 7) (Setq n (GetInt "\nNombre de segments: ")) (setq dx (/ (- (car p1) x) n)) (Setq tuwas '(Command "_.PLINE" p0)) (Repeat n (SetQ tuwas (Append Tuwas (List(List 'Quote (List (SetQ x (+ x dx)) (+ (* a x x) (* b x) c))))))) (SetQ Tuwas (Append Tuwas '(""))) (Eval Tuwas) (Command "_.PEDIT" "_Last" "_Fit" "_exit") (princ) )
  8. OUI OUI bien sur à utiliser en extrème solution. Mais je l'ai fait sous un XP pro d'un collègue donc le disque dur ne voulait plus rien savoir (vombrissait comme un avion) et XP très très long à démarrer pour finalement rebooter à chaque fois. Je me rappelle plus de la syntaxe de ces outils d'administration de bas niveau qui sont acessible seulement en mode réparation, mais c'est un peu l'équivalent de FDISK. Depuis il enchanté, son portable a retrouver une seconde vie.
  9. Salut, Je sais pas exactement ce que tu veux faire, mais il me semble que tu devras filter tes entités "INSERT" comme tu l'as fait PUIS parcourir ceux-ci par une boucle jusqu'a l'entité "SEQEND" et quand l'entité est une "ATTRIB", accéder aux code DXF pour éventuelles modifcations. C'est un peu comme ci tu voulais sélectionner qu'un segment de polyligne de type "VERTEX", ce n'est pas possible, tu est obligé de parcourir l'entité en passant par l'entête (entupd)
  10. Je compléterais en disant que le formatage n'est pas un eradiquateur parfait. Sous XP je ne sais pas quel est l'équivalent, mais je crois qu'il existe! FDISK /MBR est la meilleure commande que je connaisse avant formatage et réinstallation complète. Avec ça vous repartez presque avec un DD sortant d'usine si vous le faite suivre d'un low level format voir: http://www.coupdepoucepc.com/modules/news/article.php?storyid=52 .
  11. Oui, mais certainement à compléter suivant la version :(
  12. bonuscad

    commande décaler

    Peut être un truc dans ce style! N'est-il pas obsoléte pour 2005? (defun c:decalpl ( / strmess js val ent pt entfin nam_lay) (setvar "cmdecho" 0) (command "_.undo" "_group") (setq strmess (strcat "\nSpécifiez la distance de décalage ou [Par] <" (rtos (abs (getvar "OFFSETDIST"))) ">: " ) ) (initget 128 "Par _Through") (setq js (ssadd) val (getpoint strmess)) (if (not val) (setq val (rtos (abs (getvar "OFFSETDIST")))) ) (if (and (or (= 'LIST (type val)) (= 'STR (type val))) (/= "Through" val)) (if (= 'LIST (type val)) (progn (initget 71) (setq val (rtos (getdist val "\n2ème Point"))) ) ) ) (while (setq ent (entsel "\nChoix de l'objet à décaler: ")) (cond ((= (boole 1 (cdr (assoc 70 (tblsearch "LAYER" (cdr (assoc 8 (entget (car ent))))))) 4) 4) (prompt "\nL'entité est sur un plan verrouillé.") ) (T (if (= val "Through") (setq pt (getpoint "\nPar le point: ") val "_through") (setq pt (getpoint "\nSpécifiez un point sur le côté à décaler: ")) ) (if (and ent pt) (progn (command "_.offset" val (cadr ent) pt "") (setq js (ssadd (entlast) js)) ) ) ) ) ) (cond ((not (zerop (sslength js))) (setq entfin (entsel "\nDésignez une entité du calque de destination ou : ")) (if entfin (progn (setq nam_lay (cdr (assoc 8 (entget (car entfin))))) (prompt nam_lay) (command "_.change" js "" "_properties" "_layer" nam_lay "") ) ) ) (T (prompt "\Aucune entité à décaler.") ) ) (command "_.undo" "_end") (setvar "cmdecho" 1) (if (null entfin) (progn (setvar "PICKFIRST" 1) (sssetfirst nil js) (command "_.properties") ) (prin1) ) )
  13. Les applications pouvant être multiples, j'écris celle-ci (attribut) et c'est tout, à moins que d'autres veulent s'y coller. Il ne faudra pas demander, par la suite pour du texte, un autre pour une cotation de rappel, un autre pour des attributs multiples, un autre pour une indexation de fichier ou que sais-je encore...! Voici l' exemple à améliorer et à tester : (defun inc_txt (Txt / Boucle Decalage Val_Txt) (setq Boucle 1 Val_txt "") (while (<= Boucle (strlen Txt)) (setq Ascii_Txt (vl-string-elt Txt (- (strlen Txt) Boucle))) (if (not Decalage) (setq Ascii_Txt (1+ Ascii_Txt)) ) (if (or (= Ascii_Txt 58) (= Ascii_Txt 91) (= Ascii_Txt 123)) (setq Ascii_Txt (cond ((= Ascii_Txt 58) 48) ((= Ascii_Txt 91) 65) ((= Ascii_Txt 123) 97) ) Decalage nil ) (setq Decalage T) ) (setq Val_Txt (strcat (chr Ascii_Txt) Val_Txt)) (setq Boucle (1+ Boucle)) ) (if (not Decalage) (setq Val_Txt (strcat (cond ((< Ascii_Txt 58) "0") ((< Ascii_Txt 91) "A") ((< Ascii_Txt 123) "a")) Val_Txt)) ) Val_Txt ) (defun c:numerotation (/ all_path end_pos id_path pto x y z sv_zp n_ini nb nb_dec inc) (if (not (tblsearch "LAYER" "numerotation")) (entmake '((0 . "LAYER") (100 . "AcDbSymbolTableRecord") (100 . "AcDbLayerTableRecord") (2 . "numerotation") (70 . 0) (62 . 7) (6 . "Continuous") (290 . 1) (370 . -3) ) ) ) (if (not (tblsearch "STYLE" "$numerotation")) (progn (setq all_path (getenv "ACAD") n 0) (while (setq end_pos (vl-string-position (ascii ";") all_path)) (setq id_path (substr all_path 1 end_pos)) (if (wcmatch (strcase id_path) "*FONTS*") (setq fonts_path (strcat id_path "\\")) ) (setq all_path (substr all_path (+ 2 end_pos))) ) (setq file_shx (getfiled "Selectionnez un fichier de police" fonts_path "shx" 8)) (if (not file_shx) (setq file_shx "txt.shx")) (entmake (append '((0 . "STYLE") (5 . "40") (100 . "AcDbSymbolTableRecord") (100 . "AcDbTextStyleTableRecord") (2 . "$numerotation") (70 . 0) (40 . 0.0) (41 . 1.0) (50 . 0.0) (71 . 0) (42 . 2.5) (4 . "") ) (list (cons 3 file_shx)) ) ) ) ) (setvar "textstyle" "$numerotation") (if (not (tblsearch "BLOCK" "$numero")) (progn (initget 7) (setq ht (getdist "\nEntrez la hauteur du texte: ")) (entmake '((0 . "BLOCK") (2 . "$numero") (70 . 2) (10 0.0 0.0 0.0)) ) (entmake (append '((0 . "ATTDEF") (67 . 0) (8 . "numerotation") (62 . 0) (10 0.0 0.0 0.0) (40 . 1.0) (1 . "0") (50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "$numerotation") (210 0.0 0.0 1.0) (3 . "Numéro ?: ") (2 . "NO") (70 . 0) ) (list (cons 40 ht)) ) ) (entmake '((0 . "ENDBLK"))) ) ) (setq sv_zp (getvar "dimzin")) (setvar "dimzin" 3) (if (not n_next) (setq n_ini (getstring "\nIncrementer en débutant à [chiffre/lettre/alphanumérique]: ") n_next n_ini) (progn (initget "Oui Non _Yes No") (if (eq (getkword "\nRéinitialiser l'incrémentation [Oui/Non] : ") "Yes") (setq n_ini (getstring "\nIncrementer en débutant à [chiffre/lettre/alphanumérique]: ") n_next n_ini) (setq n_ini n_next) ) ) ) (initget 8) (while (setq pto (getpoint "\nSpécifiez l'emplacement du numéro: ")) (setq pto (trans pto 1 0) x (car pto) y (cadr pto) z (caddr pto) ) (entmake (append '((0 . "INSERT") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbBlockReference") (50 . 0) (66 . 1) (2 . "$numero") (41 . 1.0) (42 . 1.0) (43 . 1.0) (70 . 0) (71 . 0) (44 . 0.0) (45 . 0.0) (210 0.0 0.0 1.0) ) (list (cons 10 pto)) ) ) (entmake (append '((0 . "ATTRIB") (100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "numerotation") (62 . 0) (100 . "AcDbText") (41 . 1.0) (51 . 0.0) (7 . "$numerotation") (71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0) (100 . "AcDbAttribute") (2 . "NO") (70 . 0) (73 . 0) (74 . 0) ) (list (cons 1 n_next)) (list (cons 10 pto)) (list (cons 40 ht)) (list (cons 50 (atan (/ (cadr (getvar "UCSXDIR")) (car (getvar "UCSXDIR")))))) ) ) (entmake '((0 . "SEQEND"))) (setq n_ini n_next) (cond ((eq (type (read n_ini)) 'INT) (setq n_next (itoa (1+ (atoi n_ini)))) ) ((eq (type (read n_ini)) 'REAL) (setq nb 0) (repeat (strlen n_ini) (if (eq (substr n_ini (setq nb (1+ nb)) 1) ".") (setq nb_dec (1- (strlen (substr n_ini nb)))) ) ) (setq inc 1.0) (repeat nb_dec (setq inc (/ inc 10))) (setq n_next (rtos (+ inc (atof n_ini)) 2 nb_dec)) ) ((eq (type n_ini) 'STR) (setq n_next (inc_txt n_ini)) ) ) (initget 8) ) (setvar "dimzin" sv_zp) (princ) ) [Edité le 13/5/2005 par bonuscad]
  14. bonuscad

    Geler l\'écran

    Il y a vait bien la fonction (grclear) qui aurait pus convenir, malheuresement elle est obsolète, et bien qu'elle existe toujours (pour compatibilité), elle n'a plus aucun effet. La solution serait ne ne pas construire de code avec des (command), mais construire / modifier des listes DXF que tu validerais en une seule fois par un (entmake). Mais il est tellement plus simple des fois de passer par (command) que de refaire du code qui emule celle-ci pour pouvoir travailler les listes DXF.... :casstet:
  15. bonuscad

    logo copié/collé

    Un lien si ca peut t'éclairer sur les problèmes d'insertion d'image OLE. Je pense qu'il vaut mieux se tourner vers une autre solution que le copier-coller
  16. bonuscad

    logo copié/collé

    Essaye tout simplement par un click-droit lorque ton curseur est sur l'image. Tu devrais pouvoir mettre une coche dans le menu contextuel pour rendre l'image sélectionable.
  17. Je viens de faire plusieurs essais avec la solution donné par Sylvain A savoir GSview et PsToEdit Je suis sastisfait du résultat. Bien sur on ne récupère que des segments (parfois très courts) de ligne sur le calque "0" (la couleur est conservée) et tous ça seulement dans l'espace objet. Les images ne sont pas transferées, les textes sont en vectoriel décomposé. Pour faire les tests j'ai principalement généré du pdf d'autocad puis transformé en dxf avec gsview En sachant que le pdf est normalement voué qu'a la lecture, je trouve cette solution tout à fait honorable mais reste une solution de secour car il y aura quand même pas mal de boulot derrière à faire pour obtenir un dwg convenable et exploitable. On peut donc continuer a diffuser du PDF sans voir son boulot facilement copier.
  18. bonuscad

    moulinette XYZ

    Patrick_35, Comme a évoqué Chati dans cette discussion Pause café Il est fort probable que mon environnement logiciel professionnel migre par exemple vers open office Ceci me seras imposé. Donc pour ne pas m'investir pour rien, je préfère attendre encore. Et puis je sais que je pourrais compter sur un Crack en VLisp quand je ne maitriserais pas ;)
  19. Un seul mot Patrick_35 EXCELLENT!!!! Moi qui m'embrouillais les méninges dans des méandres pas possible, tu as fais un algorithme qui fonctionne à merveille. Je veux bien croire que cela n'a pas été simple. Merci pour ce GROS coup de pouce. J'ai modifié légèrement ton code pour différencier majuscule, minuscule et chiffre. Donc en final ça donnerait ceci, une bonne base pour faire n'importe quoi par la suite (Attribut de bloc, texte) et ce, dans des domaines multiples. (defun inc_txt (Txt / Boucle Decalage Val_Txt) (setq Boucle 1 Val_txt "") (while (<= Boucle (strlen Txt)) (setq Ascii_Txt (vl-string-elt Txt (- (strlen Txt) Boucle))) (if (not Decalage) (setq Ascii_Txt (1+ Ascii_Txt)) ) (if (or (= Ascii_Txt 58) (= Ascii_Txt 91) (= Ascii_Txt 123)) (setq Ascii_Txt (cond ((= Ascii_Txt 58) 48) ((= Ascii_Txt 91) 65) ((= Ascii_Txt 123) 97) ) Decalage nil ) (setq Decalage T) ) (setq Val_Txt (strcat (chr Ascii_Txt) Val_Txt)) (setq Boucle (1+ Boucle)) ) (if (not Decalage) (setq Val_Txt (strcat (cond ((< Ascii_Txt 58) "0") ((< Ascii_Txt 91) "A") ((< Ascii_Txt 123) "a")) Val_Txt)) ) Val_Txt ) (defun c:numeroter ( / sv_zp n_ini nb nb_dec inc) ;; ;;Tapez (setq n_next nil) à la ligne de commande ;;pour faire une autre incrementation ;; (setq sv_zp (getvar "dimzin")) (setvar "dimzin" 4) (if (not n_next) (setq n_ini (getstring "\nIncrementer en débutant à [chiffre/lettre/alphanumérique]: ")) (setq n_ini n_next) ) (cond ((eq (type (read n_ini)) 'INT) (setq n_next (itoa (1+ (atoi n_ini)))) ) ((eq (type (read n_ini)) 'REAL) (setq nb 0) (repeat (strlen n_ini) (if (eq (substr n_ini (setq nb (1+ nb)) 1) ".") (setq nb_dec (1- (strlen (substr n_ini nb)))) ) ) (setq inc 1.0) (repeat nb_dec (setq inc (/ inc 10))) (setq n_next (rtos (+ inc (atof n_ini)) 2 nb_dec)) ) ((eq (type n_ini) 'STR) (setq n_next (inc_txt n_ini)) ) ) (setvar "dimzin" sv_zp) (print n_next) (prin1) )
  20. bonuscad

    Hachurage multiple

    Marc, Sympa ton code! En le modifiant légérement; (ssget) avec des filtre approprié et en utilisant "-fhach" pour pouvoir avoir des hachures associatives aux contour (ca peut être utile), on obtient des hachures individuelles pour chaque contour. La routine accepte toute les entités fermées pouvant être hachurées. (defun c:mhatch (/ cmdecho ss i ss1) (setq cmdecho (getvar "CMDECHO")) (setvar "CMDECHO" 0) (command "_.UNDO" "_Group") (setq ss (ssget '((-4 . "< OR") (-4 . "< AND") (0 . "POLYLINE") (-4 . "< AND") (-4 . "&") (70 . 1) (-4 . "< ") (70 . 16) (-4 . "AND>") (-4 . "AND>") (-4 . "< AND") (0 . "LWPOLYLINE") (-4 . "< AND") (-4 . "&") (70 . 1) (-4 . "AND>") (-4 . "AND>") (-4 . "< AND") (0 . "MLINE") (-4 . "< AND") (-4 . "=") (71 . 3) (-4 . "AND>") (-4 . "AND>") (-4 . "< AND") (0 . "CIRCLE") (-4 . "AND>") (-4 . "< AND") (0 . "3DFACE") (-4 . "AND>") (-4 . "< AND") (0 . "ELLIPSE") (-4 . "< AND") (-4 . "=") (41 . 0) (-4 . "=") (42 . 6.283185307179586) (-4 . "AND>") (-4 . "AND>") (-4 . "< AND") (0 . "SPLINE") (-4 . "< AND") (-4 . "&") (70 . 1) (-4 . "AND>") (-4 . "AND>") (-4 . "< AND") (0 . "REGION") (-4 . "AND>") (-4 . "OR>")) ) i -1 ss1 (ssadd) ) (repeat (sslength ss) (command "_.-bhatch" "_properties" "_solid" "_select" (ssname ss (setq i (1+ i))) "" "") (ssadd (entlast) ss1) ) (command "_.draworder" ss1 "" "_back") (command "_.UNDO" "_End") (setvar "CMDECHO" cmdecho) (princ) ) Lors de la correction du code pour que tout apparaisse, j'ai placé un espace après le "<" Si ça ne vas toujours pas, c'est de ce coté qu'il faut regarder. [Edité le 25/5/2005 par bonuscad]
  21. Salut Didier A...Z-AA...AZ-BA....BZ-CA....CZ ect.. ZZ-AAA......AAZ-ABA....ABZ-ACA....ACZ ect.. ZZZ-AAAA ...... Je ne veux pas te faire passer un test de QI, mais ceci me semble logique. Un peu comme si on pouvait utiliser la fonction (lsh) avec décalage de bit sur la gauche. Voilà le code tel qu'il est aujourd'hui avec la partie alphabétique qui me donne pas entière satisfaction. (defun inc_str (a_int / ) (cond ((and (> (ascii a_int) 47) (< (ascii a_int) 57)) (chr (1+ (ascii a_int))) ) ((and (> (ascii a_int) 64) (< (ascii a_int) 90)) (chr (1+ (ascii a_int))) ) ((and (> (ascii a_int) 96) (< (ascii a_int) 122)) (chr (1+ (ascii a_int))) ) ((= (ascii a_int) 57) (chr 48) ) ((= (ascii a_int) 90) (chr 65) ) ((= (ascii a_int) 122) (chr 97) ) (T nil) ) ) (defun c:numeroter ( / ) ;pour réinitialiser la commande tapez (setq n_next nil) à la ligne de commande (setq sv_zp (getvar "dimzin")) (setvar "dimzin" 4) (if (not n_next) (setq n_ini (getstring "\nIncrementer en débutant à [chiffre/lettre/alphanumérique]: ") xn 1) (setq n_ini n_next) ) (cond ((eq (type (read n_ini)) 'INT) (setq n_next (itoa (1+ (atoi n_ini)))) ) ((eq (type (read n_ini)) 'REAL) (setq nb 0) (repeat (strlen n_ini) (if (eq (substr n_ini (setq nb (1+ nb)) 1) ".") (setq nb_dec (1- (strlen (substr n_ini nb)))) ) ) (setq inc 1.0) (repeat nb_dec (setq inc (/ inc 10))) (setq n_next (rtos (+ inc (atof n_ini)) 2 nb_dec)) ) ((eq (type n_ini) 'STR) (setq a_ret (inc_str (substr n_ini (strlen n_ini) 1)) n 0) (while (or (= a_ret "A") (= a_ret "a") (= a_ret "0")) (setq n (1+ n)) (if (> (strlen n_ini) n) (setq l_tmp '() n_ini (strcat (substr n_ini 1 (- (strlen n_ini) n)) (apply 'strcat (repeat n (setq l_tmp (cons a_ret l_tmp))))) a_ret (inc_str (substr n_ini (- (strlen n_ini) n) 1)) n_ini (strcat (if (> (strlen n_ini) (1+ (length l_tmp))) (substr n_ini 1 (- (strlen n_ini) (1+ (length l_tmp)))) "" ) a_ret (substr n_ini (strlen n_ini) 1) ) a_ret (if (and (/= a_ret "A") (/= a_ret "a") (/= a_ret "0")) "" a_ret) ) (setq l_tmp '() n_ini (apply 'strcat (repeat (1+ (strlen n_ini)) (setq l_tmp (cons a_ret l_tmp)))) a_ret "" ) ) ) (if (/= a_ret "") (setq n_ini (strcat (substr n_ini 1 (1- (strlen n_ini))) a_ret)) ) (setq n_next n_ini) ) ) (setvar "dimzin" sv_zp) (print n_next) (prin1) )
  22. bonuscad

    moulinette XYZ

    Je ne rappelle plus si 2000 acceptait (setvar "textstyle" "XXXX") Ce que tu peux essayer de faire, c'est d'éditer le fichier topo.lsp et de mettre les lignes contenant (setvar "textstyle" en REMARQUE en placant un ";" (point-virgule) devant. Il doit y avoir 3 lignes concernées exemple (setvar "textstyle" ........) deviendrait ;(setvar "textstyle".........) Tu sauvegarde les modifs et tu recharge le lisp dans autocad. Si ca ne fonctionne pas, ben j'ai pas d'autre solution Bonne chance
  23. bonuscad

    Dessiner un trapèze

    En fait, ce sont plutôt des suggestions que des remarques. J'ai essayé ta routine en m'accrochant a des points 3D, et tu as bien géré ta routine car tu retourne les messages d'explications ne non achévement de ta commande trapeze. Je pense qu'une construction en s'appuyant sur des point 3D devrait être possible. Pour faire ceci il s'agirait par exemple de s'appuyer sur le 1er point saisi avec son Z et de contruire les autres en filtrant le XY des point saisis et en y attribuant le Z du 1er point et ceci par rapport au SCU courant. Voilà pour le + que tu pourrais apporté ;) PS: Je vais regardé de plus près l'introduction des angles au clavier que tu as faite car cela m'interesse et je vais peut être m'en inspirer.
  24. Il existe un soft que l'on peut essayer en démo (ne converti que la 1ere page d'un PDF) Je l'ai essayé avec un pdf générer par impression avec autocad Bien qu'il ne soit pas parfait, on arrive cependant a récupérer une bonne partie du dessin en effacant certaines imperfections de conversion. Il est proposé en version payante, mais je pense qu'il ne vaut pas le coup ou le coût. PDF 2 DXF à http://www.cadkas.com/
  25. Mon but final serait d'incrementer dans la suite logique. Exemple: pour nombre entier 5-6-7-8-9-10-11- ...... pour nombre réel 6.3-6.4-6.5-6.6- ...... 25.56-25.57-25.58- ...... alphabetique GH-GI-GJ-GK- .... AAZ-ABA-ABC-ABD- .... alphanumérique BC8-BC9-BD0-BD1-BD2- ..... TZ08-TZ09-TZ10-TZ11- .... L'incrementation devra pouvoir se faire en commencant n'importe où et non pas forcément du début. J'ai essayer ton code, mais les transitions après le Z ne me convienne pas: La suite de Z donne AB au lieu de AA La suite de AZ donne AAB au lieu de BA La suite de AAZ donne AAB au lieu de ABA. Merci quand même pour ta reflexion ;)
×
×
  • 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é