-
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
-
Je l'ai eu fait pour des dessin2D sans entités complexes avec Word97. Pour pouvoir le faire, il fallait installer un filtre importation (DXF) dans Word, donc faire une installation personnalisé et non celle par défaut proposé par l'install. Cela marchait bien, on obtenait du vectoriel sous Word directement éditable par les outils de dessin de Word. Pour les versions actuelles, je n'ai pas regardé si ce filtre existe encore. Mais cette possibilité pourrait encore m'interesser! Si quelqu'un connait?
-
Le fautif: (setq pt (getpoint "\n Point d'insertion :")) changer pour: (setq pt (trans (getpoint "\n Point d'insertion :") 1 0)) EXPLMODE te permet suivant sa valeur (0 ou 1), d'exploser des blocs insérés à une échelle non uniforme.
-
Ton problème vient, je pense, de (itoa fe) Itoa est pour les nombres entiers, pour les nombres décimaux utilise (rtos fe [mode] [précision])
-
Yes! Le test que j'ai pu faire est probant, bravo :D Ta version précédent buguait justement sur les changements d'échelles et encore sur Vla-put-units. Ici no problem, je n'ais pas eu le temps de te faire remonter les infos, désolé :( Mais à tout fin utile, ça pourra servir à compléter!
-
Courage Patrick, ;) Moi aussi j'ai eu des bouteilles à la mer, et quand ces bouteilles ont pu revenir, et bien j'ai rien compris. :casstet: Les antipodes, c'est pas si mal, mais il faut assumer :P Bonne chances quand même!
-
oui c'est sur, mais c'est pas moi qui l'ai pondu :P , c'est totodesk! Il faut dire qu'en 92, je ne sais pas si le diesel était à 75$ le baril. Mais pour être objectif, il faudrait faire un benchmark sur les 2 façons, il n'est pas certain que la vieille 2CV soit hors course... :exclam: Si quelqu'un veut s'amuser à comparer?
-
Zut, je viens de percuter que c'est l'heure que tu voulais, Le lisp: ; Copyright (C) 1992 by Autodesk, Inc. ; ; Permission to use, copy, modify, and distribute this software ; for any purpose and without fee is hereby granted, provided ; that the above copyright notice appears in all copies and that ; both that copyright notice and this permission notice appear in ; all supporting documentation. ; ; THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT EXPRESS OR IMPLIED ; WARRANTY. ALL IMPLIED WARRANTIES OF FITNESS FOR ANY PARTICULAR ; PURPOSE AND OF MERCHANTABILITY ARE HEREBY DISCLAIMED. ; **************************************************************** ; AutoCAD Julian date to calendar date conversion ; Designed and implemented by Kelvin R. Throop ; Typed in by A. Hanspal. (defun C:HORLOGE ( / td time j y d m hh mm ss dcl_id) (setq td (getvar "date")) (setq time (* 86400.0 (- td (setq j (fix td))))) (setq j (- j 1721119.0)) (setq y (fix (/ (1- (* 4 j)) 146097.0))) (setq j (- (* j 4.0) 1.0 (* 146097.0 y))) (setq d (fix (/ j 4.0))) (setq j (fix (/ (+ (* 4.0 d) 3.0) 1461.0))) (setq d (- (+ (* 4.0 d) 3.0) (* 1461.0 j))) (setq d (fix (/ (+ d 4.0) 4.0))) (setq m (fix (/ (- (* 5.0 d) 3) 153.0))) (setq d (- (* 5.0 d) 3.0 (* 153.0 m))) (setq d (fix (/ (+ d 5.0) 5.0))) (setq y (+ (* 100.0 y) j)) (if (< m 10.0) (setq m (+ m 3)) (progn (setq m (- m 9)) (setq y (1+ y)) ) ) ; Determine the clock time from the fraction of the day (setq hh (fix (/ time 3600.0))) (setq time (- time (* hh 3600.00))) (setq mm (fix (/ time 60.0))) (setq ss (- time (* mm 60.0))) ; Now print the date. Year in Y, month in M, day in D and the time (setq dcl_id (load_dialog "julian.dcl")) (if (not (new_dialog "horloge" dcl_id)) (exit)) (set_tile "DATE" (strcat "DATE : " (itoa (fix d)) "/" (itoa (fix m)) "/" (itoa (fix y)) ) ) (set_tile "TIME" (strcat "HEURE: " (itoa hh) ":" (itoa mm) ) ) (action_tile "accept" "(done_dialog)") (start_dialog) (unload_dialog dcl_id) ) Le DCL horloge : dialog { label = "Horloge"; :boxed_row { :text { key = "DATE"; alignment = right; is_bold = true; width = 18; fixed_width = true; } } :boxed_row { :text { key = "TIME"; alignment = right; is_bold = true; width = 18; fixed_width = true; } } ok_only; }
-
Une vieille fonction d'autodesk (defun def_date (td / j y d m) (setq j (- (fix td) 1721119.0)) (setq y (fix (/ (1- (* 4 j)) 146097.0))) (setq j (- (* j 4.0) 1.0 (* 146097.0 y))) (setq d (fix (/ j 4.0))) (setq j (fix (/ (+ (* 4.0 d) 3.0) 1461.0))) (setq d (- (+ (* 4.0 d) 3.0) (* 1461.0 j))) (setq d (fix (/ (+ d 4.0) 4.0))) (setq m (fix (/ (- (* 5.0 d) 3) 153.0))) (setq d (- (* 5.0 d) 3.0 (* 153.0 m))) (setq d (fix (/ (+ d 5.0) 5.0))) (setq y (+ (* 100.0 y) j)) (if (< m 10.0) (setq m (+ m 3)) (progn (setq m (- m 9)) (setq y (1+ y)) ) ) (strcat (itoa (fix d)) "/" (itoa (fix m)) "/" (itoa (fix y)) ) ) Exemples d'appel: (def_date (getvar "TDCREATE")) (def_date (getvar "TDUPDATE")) (def_date (getvar "DATE")) Je t'invite à regarder aussi ce SUJET , je pense qu'il peut t'interresser. ;)
-
Attention au faux problème à propos des poignées sur les blocs. Met par exemple GRIPBLOCK à 1 et ton argument s'effondre.
-
Rien de t'empêche d'installer le traceur 450C même si celui-ci n'est pas raccordé physiquement, tu le configure simplement en mode sortie fichier. Manip que tu devras forcément faire de toute façon pour créer ton PLT.
-
Je ne vois pas d'erreur de syntaxe :casstet: Cependant sous quelle version travaille tu? Car j'ai lu que sous 2007 l'interprétation des "\\" laissait à désirer (ce que renvoi généralement DWGPREFIX) Dans ce cas une solution, substituer "\\" par "/", à voir :exclam:
-
Faire la même modif pour le nom que pour le premier ET enlever une paranthèse en trop (il y avait une erreur, désolé) ((member '(2 . "NOM2") LstEnt)) doit devenir ((member '(2 . "NOM2") LstEnt) Et ça devrait fonctionner comme pour le 1er. ;)
-
Ben :exclam: On fait de la télépathie avec Patrick_35 ;) Battu sur 2 mm. :casstet: On dit parfois que Les grands esprits se rejoingnent, alors à bientôt Patrick, bien que je ne me prenne pas pour une "grosse tronche" :cool: [Edité le 13/5/2006 par bonuscad]
-
Une façon de faire parmis tant d'autre, celle ci fait partie de celles qui peuvent être les plus concises en VL Exemple: ((lambda ( / ent lay_name lay_obj) (while (not (setq ent (entsel "\nChoix d'une entité: ")))) (setq lay_name (cdr (assoc 8 (entget (car ent))))) (setq lay_obj (vla-get-layers (vla-get-activedocument (vlax-get-acad-object)))) (vlax-for for-item lay_obj (cond ((eq (vla-get-Name for-item) lay_name) (vla-put-Freeze for-item :vlax-false) (vla-put-Lock for-item :vlax-false) (vla-put-LayerOn for-item :vlax-true) ) (T (vla-put-Lock for-item :vlax-true) ) ) ) (setvar "CLAYER" lay_name) ))
-
Une copie est déjà sur le site ICI Voili, voilou...
-
En changeant la ligne (setq LstEnt (subst (cons 1 "Serge") (cons 1 AncVal) LstEnt)) en (setq LstEnt (subst (cons 1 (getvar "loginname")) (cons 1 AncVal) LstEnt)) Si j'ai bien compris la question?
-
Si l'anglais ne te rebute pas trop, peut être sur le forum Hardware d'autodesk C'est dur de se faire une opinion :casstet: , c'est vrai que AMD à l'air mieux que Intel, d'après ce que j'ai pu lire.
-
Tu peux créer tes insertions via (entmake (liste des composants dxf)) (liste des composants dxf) est similaire à liste que tu pourrais obtenir en faisant un (entget (car (entsel))) sur un bloc inseré dans ton dessin. Si ton bloc comporte des attributs tu devras aussi les créer de la même façon. Pour t'aider dans ce cas fais une boucle avec (entget (entnext)) jusqu'a rencontrer une entité de type "ENDBLOCK". Les entités complexes commes les blocs ou les polylignes (anciennes) sont assez fastidieuses à créer avec (entmake). L'équivalent de la commande INSERER vas te prendre enormément de lignes de code. L'avantage par contre est que; (si la liste fournie est valide) ton insertion de bloc sera effectué dans toutes les conditions. Tu n'as pas besoin de te préoccuper des variables, de l'état des calques (vérrouillé, gelé...) etc...
-
L'inconvenient de ton code, est qu'il est écrit pour un environnement bien précis (calques, blocs etc..), donc difficile à tester si l'on est pas exactement dans les mêmes conditions. Cependant provient certainement de la ligne: (setq nbc (sslength jeu ))En effet on ne peut obtenir la longueur d'une sélection vide, tu dois d'abords t'assurrer que le jeux de sélection est valide avant de demander le nombre d'éléments qu'il contient. Voilà pour le message d'erreur lselset qu'on peut interpréter comme suit "l"= length (longueur) "sel" = select (sélection) "set"=set (déclaration)
-
J'avais déjà proposé CECI Bien sur, cela ne fonctionne pas avec des arrondis. Par contre avec des polylignes splinées, il y a peut être moyen en utilisant MY_CONVERT auparavant. A voir :exclam:
-
Peut être la commande CONVESPACE pourait être utile, elle peut s'utiliser en transparence avec l'apostrophe " ' "
-
Merci Gilles, Tu as été la source de mon inspiration suite à CECI Maintenant j'ai revu ma fonction (near_vertex) en conséquence et c'est au poil :D En plus maintenant elle fonctionne sur les polylignes splinées et lissées. J'ai pas fini tous mes tests mais ça se présente bien, plus de problèmes suivant les versions d'Autocad avec les fonctions (vlax-curve....) sur les polylignes non-optimisées (of course) ;) encore un petit problème avec (osnap [pt] "_near") sur les arcs, que je pense avoir résolu. Bon, j'y retourne...
-
L'outil s'appelle une "épareuse", voir ICI Ou fait une recherche avec ce mot épareuse pour trouver d'autre infos
-
Je sais vous allez me dire la commande CONVERT fait cela. :P Oui MAIS, car il y a un mais. Essayez de convertir une Polyligne qui a été lissée ou splinée ! :casstet: Alors elle vient cette LwPolyligne? Nada! :mad: Vous en voulez une toute de même une ? et bien essayez cette routine. (defun c:my_convert ( / obj dxf_obj l_10 l_40 l_41 l_42 dxf_39 e_next dxf_next dxf_43 dxf_38) (while (not (setq obj (entsel "\nSélectionnez la polyligne2D à optimiser: ")))) (setq dxf_obj (entget (car obj)) l_10 nil l_40 nil l_41 nil l_42 nil) (cond ((and (eq (cdr (assoc 0 dxf_obj)) "POLYLINE") (zerop (boole 1 120 (cdr (assoc 70 dxf_obj)))) ) (if (cdr (assoc 39 dxf_obj)) (setq dxf_39 (cdr (assoc 39 dxf_obj))) (setq dxf_39 0.0) ) (setq e_next (entnext (car obj))) (while (= "VERTEX" (cdr (assoc 0 (setq dxf_next (entget e_next))))) (if (zerop (boole 1 (cdr (assoc 70 dxf_next)) 16)) (setq l_10 (cons (cdr (assoc 10 dxf_next)) l_10) l_40 (cons (cdr (assoc 40 dxf_next)) l_40) l_41 (cons (cdr (assoc 41 dxf_next)) l_41) l_42 (cons (cdr (assoc 42 dxf_next)) l_42) ) ) (setq e_next (entnext e_next)) ) (setq l_10 (reverse l_10) l_40 (reverse l_40) l_41 (reverse l_41) l_42 (mapcar '(lambda (x) (cons 42 x)) (reverse l_42)) ) (if (and (equal (apply 'max l_40) (apply 'min l_40)) (equal (apply 'max l_41) (apply 'min l_41))) (setq dxf_43 (car l_40) l_40 nil l_41 nil) (setq dxf_43 nil l_40 (mapcar '(lambda (x) (cons 40 x)) l_40) l_41 (mapcar '(lambda (x) (cons 41 x)) l_41) ) ) (if (not (zerop (caddar l_10))) (setq dxf_38 (caddar l_10)) (setq dxf_38 0.0) ) (setq l_10 (mapcar '(lambda (x) (cons 10 (list (car x) (cadr x)))) l_10)) (entdel (car obj)) (entmake (append (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (assoc 67 dxf_obj) (assoc 410 dxf_obj) (assoc 8 dxf_obj) (if (assoc 62 dxf_obj) (assoc 62 dxf_obj) (cons 62 256)) (if (assoc 6 dxf_obj) (assoc 6 dxf_obj) (cons 6 "BYLAYER")) (if (assoc 370 dxf_obj) (assoc 370 dxf_obj) (cons 370 -1)) (cons 100 "AcDbPolyline") (cons 90 (length l_10)) (cons 70 (if (zerop (boole 1 (rem (cdr (assoc 70 dxf_obj)) 128) 1)) (boole 1 (cdr (assoc 70 dxf_obj)) 128) (1+ (boole 1 (cdr (assoc 70 dxf_obj)) 128)) ) ) (cons 38 dxf_38) (cons 39 dxf_39) ) (if (and l_40 l_41) (apply 'append (mapcar '(lambda (x10 x40 x41 x42) (append (list x10 x40 x41 x42)) ) l_10 l_40 l_41 l_42 ) ) (progn (cons 43 dxf_43) (apply 'append (mapcar '(lambda (x10 x42) (list x10 x42) ) l_10 l_42 ) ) ) ) (list (assoc 210 dxf_obj)) ) ) ) (T (princ "\nN'est pas une Polyligne2D, ou celle-ci est déjà optimisée!") ) ) (prin1) ) Code corrigé suite à une remarque d'un utilisateur, (Bug concernant les polylignes à largeur variable) et un oubli de copier-coller sur le code 41 affecté du code 40. [Edité le 12/5/2006 par bonuscad]
-
J'espère que ces échanges avec nos amis d'outre-atlantique vont leur donner l'habitude d'internationaliser leur lisp :casstet: C'est rare qu'il se sentent concerné par ce problème qui pour eux n'en est pas un. Avec les sources ce n'est pas un gros problème, mais avec les compilés, nada :mad: Consolation; généralement les meilleurs lisps le sont. Ouff! Mais les oublis sont fréquents, surtout dans les options de commande. Quant aux options de (ssget) et de (osnap), elles sont pratiquement systématiques. Je pense qu'Autodesk aurait du laisser le language natif pour le lisp au lieu de différencier ces options suivant la langue.
