-
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
-
Ben là je m'sens plutôt petit :cool: J'essayerais de tourner 7 fois mon clavier avant de taper :exclam:
-
Patrick (the wouaibmasteur), pourrait-on avoir un smiley avec un bonnet d'âne? Histoire de se remettre en place sur nos propos. ;)
-
Où est le Calimero avec sa coquille sur la tête? :P Tu as entièrement raison, remarque impertinente de ma part. J'ai "zappé" le mode ponctuel lors de la saisie du point. :( Je complète: SEULE (entmake) échappe à cette précaution à prendre sur OSMODE ;)
-
Pour les XREFS, je mettrais XLOADCTL à 2. Mais bon si ça ne résoud pas le problème.... Autre chose, fais tu les essais directement depuis ton graveur (qui fonctionne peut être en Direct CD ou un truc du même genre)? Tu devrais faire des essais à partir d'un lecteur basique, tu remarquerais peut être plus facilement la cause de la défaillance.
-
Zébulon, Ta démarche (très louable de vouloir améliorer) , comme tu l'as effectué, ne sert à rien. En effet lors de la saisie du point PDEP avec l'accroche objet actif te retourne déjà le point associé à ce mode. Je pense que tu pouvais laisser comme avant: l'utilisateur voit très bien en dynamique si l'accroche objet est actif pendant la saisie du point et il peut inactiver lui même si ca lui convient pas. (ha!... La liberté de choix) ;) PS: Ta démarche aurait été logique si le point PDEP avait été calculé ou modifié [Edité le 20/1/2006 par bonuscad]
-
A tout hazard, Si tu as des XREFS regarde la variable XLOADPATH et XLOADCTL, je rajouterais peut être aussi XREFCTL. Car si tout celà pointe sur le CD en écriture seule, ça échoue... A voir...
-
Est tu vraiment sûr de ce que tu avances? :o Désolé car même ton bout de code peut être influencé par OSMODE Si à @100,0 ou @0,100 se trouve un objet le point retourné sera différent. J'ai fais un essai et le résultat est erronné, donc j'affirme ;) APERTURE et OSNAPCOORD (comme la déjà fait remarqué CDL) sont à prendre en considération. Car modifier ceux-ci influence le comportement de l'accrochage qui se déroulera de manière diffèrente. NB:Rien à voir, mais le mode 1024 de osmode et parfois déroutant aussi.
-
comment trouver un fichier depuis un lisp
bonuscad a répondu à un(e) sujet de thierryd dans Débuter en LISP
Patrick35 A la place de: (setq n 0) (while (< n 1000000) (setq n (1+ n)) ) j'utilise (prompt "\nAppuyer sur une touche pour continuer!") (grread) C'était pratiques dans les environnements W98/ME car je voyais les fenêtre DOS s'afficher et se fermer selon un délai de traitement propre a chacune. Donc j'attendais que les fenêtres soyent toutes fermées pour continuer. Sous XP ces fenêtres ne sont pas forcément au premier plan comme avant (on ne remarque rien) donc moins interressant. Je pense que t'as prévu large dans ta boucle d'attente, mais si le traitement est plus long, ben .... ton résultats sera faussé. Ma solution est manuelle et pas évidente pour une personne non avertie. Autrement en regardant la fonction (vl-directory-files je me demandes si une solution pure en lisp n'est pas possible...? l'option -1 est interressante. A creuser avec une fonction itérative imbriquée. -
Peut on agrandir la barre d\'outil Calque
bonuscad a répondu à un(e) sujet de Moon_LS dans AutoCAD 2004
A tu regardé cette DISCUSSION . Il semble que deux versions soient disponibles 2000/i/2 et 2004/5 -
Cela me fais songer à une image présente mais dificilement visible (trop petite?), ou alors un autre objet complexe assez éloigné de ta zone de travail et qui restreint les possibilités d'un zoom dynamique, des régénarations sont fréquemment nécessaires. Que donne par exemple, après une libération de tout les calques, un zoom étendu? Ton dessin se retrouve t-il perdu dans l'écran. Y-a-t-il précence d'une image inactive sans cadre? (faire un filtre sur le dessin) Ma réponse n'est que supposition. La raison peut être tout à fait autre.
-
Voilà je pense avoir régler le problème soulevé par (gile). Par contre son idée d'utiliser (trans) n'est pas approprié pour ce cas. J'ai simplement fait des règles de 3 dans le scu simulé a l'origine au centre de l'ellipse et identique au SCG (le dxf 11 est défini comme cela). En plus clair, depuis le SCG tu déplace l'origine au centre de l'ellipse, tu fais un ID du quadrant et tu obtiens la même valeur que le code DXF 11 Cette particularité n'a rien à voir avec le vecteur de direction représenté par le code DXF 210. PS: je corrige le code dans le post original
-
J'ai pas suivi le protocol de Christian mettre en Italique :exclam: Ces commandes produisent des Solides ou 3Dfaces ? En 3Dfaces cela existe depuis longtemps.
-
comment trouver un fichier depuis un lisp
bonuscad a répondu à un(e) sujet de thierryd dans Débuter en LISP
Mon avis personnel: Je pense que si l'on veut distribuer une routine, il vaut mieux la prévoir indépendante de toutes applications non disponible en standard. Je trouve pas très correct d'imposer une application tierce aux autres utilisateurs qu'ils n'ont pas forcément envie de l'installer ou de l'utiliser. Bien que ces fonctions supplémentaires soyent très bien et facilitent certaines taches de programmation, on devrait se les réserver pour son usage personnel. Et puis si un jour, si la diffussion de cette extension est arrêtée ou devenue payante: Qu'est ce qu'on fait? On révise tout nos codes! :casstet: -
Je n'ai pas essayé ta méthode, mais elle doit être valable ;) Tu dois faire des opérations booléenne en plus! Remarque, c'est ce que doit faire la commande "_.extrude" avec un angle d'extrusion, mais ces opérations sont invisibles. Donc je penses qu'au final, c'est la même chose; "ON EST LES MEILLEURS" :)
-
Effectivement, il y a un problème! ;) Dans des SCU le mien fonctionne (l'ellipse est crée, mais la valeur de décalage est fausse) Par contre le tien ne fonctionne pas (l'ellipse n'est pas créer, incohérence pour entmode?) Je vais essayer de trouver le Hic. :casstet: Merci du retour!
-
Pouff..., ces allumettes pour les faire tenir :casstet: Allez pour le Fun le dernier jus. Merci à (gile) pour son raccourci sur la formule ;) ((lambda ( / dxf_ent lst_pt lg h alpha) (command "_.polygon" "3" (while (not (zerop (getvar "cmdactive"))) (command pause) ) ) (setq dxf_ent (entget (entlast)) lst_pt (vl-remove-if-not '(lambda (x) (= (car x) 10)) dxf_ent) lg (distance (cdar lst_pt) (cdadr lst_pt)) h (* lg (/ (sqrt 6) 3)) alpha (atan (/ (/ (sqrt 3) 6) (/ (sqrt 6) 3))) ) (command "_extrude" (entlast) "" h "_none" (getvar "lastpoint") "_none" (polar (getvar "lastpoint") alpha lg) ;;REM à enlever et à placer devant LES "_none" précédents pour fonctionner en entrée unique ; (angtos alpha (getvar "AUNITS") 14) ; ) ))
-
Essayes si tu es en degré par défault: (command "_.extrude" (entlast) "" (sqrt 0.75) (angtos (atan (/ (/ 0.5 (* (sqrt 0.75) 2)) (sqrt 0.75))) 0 14)) Autrement je ne vois pas ce qui cloche! Avec le calcul exact cette fois çi: Fonctionne en degré dans sens trigo (command "_.polygon" "3" "_edge" "_none" "*0,0,0" "_none" "1,0") (command "_.extrude" (entlast) "" (sqrt (- 1 (* (* (/ (sqrt 0.75) 3) 2) (* (/ (sqrt 0.75) 3) 2)))) (angtos (atan (/ (/ (sqrt 0.75) 3) (sqrt (- 1 (* (* (/ (sqrt 0.75) 3) 2) (* (/ (sqrt 0.75) 3) 2)))) ) ) 0 14 ) ) [Edité le 17/1/2006 par bonuscad]
-
Je n'ai jamais utilisé, mais je pense que cette fonction ne fonctionne que pour du PLT généré par du HPGL ou HPGL/2. C'est à dire du vectoriel et non du raster. En fait pour avoir fichier plt qui puisse être lu, et de le tracer avec un traceur générique HPLG depuis Autocad. Solution pouvant être utilisé pour récuperer une présentation 3D depuis une vue et la mettre à plat (2D).
-
On peut aussi utiliser l'extrusion. exemple: (command "_.polygon" 3 "_edge" "_none" "*0.0,0.0,0.0" "_none" "@1.0,0.0") (command "_.extrude" (entlast) "" (sqrt 0.75) "_none" "*0.0,0.0,0.0" (polar '(0.0 0.0 0.0) (atan (/ (/ 0.5 (* (sqrt 0.75) 2)) (sqrt 0.75))) 1.0)) Le problème est de trouver l'angle d'extrusion. D'ailleurs je crois que j'ai mal calculé celui de l'exemple, car le résultat n'est pas exact. les cotés 3D ont une longueur de 1.04 au lieu de 1.
-
sélectionner des objets à partir d\'une Polyligne
bonuscad a répondu à un(e) sujet de rebcao dans AutoCAD, liste de souhaits
Il y avait ce SUJET que j'avais lancé, mais sans trop succés. Il faut dire que les caractères " > " contenu dans le code, avaient "bouffés" des lignes (je viens de m'en apercevoir). Ha-la-la ces symboles de balises " < > " en htlm posent problème... :mad: Donc, j'ai corrigé le post pour que celui-ci ne soit pas tronqué. -
Excuse moi (Gile), mais je n'ai pas trop compris où tu voulais en venir! pour les problèmes de ANGBASE et ANGDIR je passe soit par (getangle): tiens compte des variables précédente, ou par (getorient): ignore celles-ci.
-
Bien que cela ne soit pas possible, j'ai essayé d'être le plus approchant possible. C'est à dire que vous retrouverez exactement la distance de décalage entre les 2 ellipses seulement aux quadrants de celles ci. Ailleurs la distance sera variable, c'est pour ça que l'option décaler "Par le point" n'est pas présente (insoluble pour ma part). Cela vous permettra d'obtenir une autre ellipse et non pas une polyligne. Il faut bien garder à l'esprit que c'est qu'une solution approximative pour conserver une entité ellipse. Peut servir pour des ellipses servant à l'habillage esthétique. ou si la rigueur n'a pas d'importance. Normalement le code fonctionne dans n'importe quel SCU et aussi avec des arcs d'ellipse. (defun c:offset_ellipse ( / ent dxf_ent lg_axe dis_off new_11 new_40) (while (not (setq ent (entsel "\nChoix de l'ellipse à décaler: ")))) (setq dxf_ent (entget (car ent))) (cond ((eq (cdr (assoc 0 dxf_ent)) "ELLIPSE") (setq lg_axe (distance '(0.0 0.0 0.0) (cdr (assoc 11 dxf_ent))) ) (if (< (getvar "offsetdist") 0.0) (initget 7) (initget 6)) (setq dis_off (getdist (strcat "\nDistance de décalage< " (rtos (getvar "offsetdist")) "> : "))) (if (not dis_off) (setq dis_off (getvar "offsetdist")) (setvar "offsetdist" dis_off)) (initget "Interieur Exterieur _Intern Extern") (if (eq (getkword "\nDécalage [interieur/Exterieur]? < E > : ") "Intern") (setq new_11 (mapcar '(lambda (x) (* (/ x lg_axe) (- lg_axe dis_off))) (cdr (assoc 11 dxf_ent))) new_40 (/ (- (* lg_axe (cdr (assoc 40 dxf_ent))) dis_off) (- lg_axe dis_off)) ) (setq new_11 (mapcar '(lambda (x) (* (/ x lg_axe) (+ lg_axe dis_off))) (cdr (assoc 11 dxf_ent))) new_40 (/ (+ (* lg_axe (cdr (assoc 40 dxf_ent))) dis_off) (+ lg_axe dis_off)) ) ) (setq dxf_ent (subst (cons 11 new_11) (assoc 11 dxf_ent) dxf_ent) dxf_ent (subst (cons 40 new_40) (assoc 40 dxf_ent) dxf_ent) ) (entmake (foreach n '(-1 330 5) (setq dxf_ent (vl-remove (assoc n dxf_ent) dxf_ent)))) ) (T (princ "\nObjet n'est pas une Ellipse!.") ) ) (princ) ) [Edité le 18/1/2006 par bonuscad]
-
Je ne sais pas si la cerise sera a ton goût, ou si celle ci est véreuse. ;) J'ai remanié le code pour créer l'option "Median" (entre les valeurs entrées, précedente et suivante) La présentation est un peu différente mais le concept est le même. (defun c:repeat_offset ( / ent mode vn lst_vn tmp side_offset) (setq ent "Interval" mode nil) (initget "Cumul Interval") (while (or (eq (setq ent (entsel (strcat "\nSélectionnez l'objet à décaler plusieurs fois ou Mode d'action [Cumul/Interval] <" ent ">: "))) "Interval") (eq ent "Cumul") (not ent)) (if (not ent) (setq ent (if mode "Cumul" "Interval"))) (if (eq ent "Cumul") (setq mode T) (setq mode nil)) (initget "Cumul Interval") ) (cond (ent (setq lst_vn nil) (initget 70 "Median") (princ "\nSpécifiez une distance de décalage ou [Median]: ") (while (setq vn (getdist (cadr ent))) (princ "\nSpécifiez une distance de décalage ou [Median] [") (cond ((eq vn "Median") (if (and (car lst_vn) (< (car lst_vn) 0.0)) (princ " *Déja en mode MEDIAN* ") (progn (foreach n (reverse lst_vn) (princ (rtos n)) (princ "/")) (setq lst_vn (cons -1.0 lst_vn)) ) ) (princ "]: ") ) (T (cond (mode (if (eq (car lst_vn) -1.0) (if (cadr lst_vn) (setq lst_vn (cons vn (cons (+ (cadr lst_vn) (/ (- vn (cadr lst_vn)) 2.0)) (cdr lst_vn)))) (setq lst_vn (cons vn (cons (+ (/ vn 2.0)) (cdr lst_vn)))) ) (if (> vn (car lst_vn)) (setq lst_vn (cons vn lst_vn)) (princ "\n*Incorrect* La valeur doit être > à la précédente.\nSpécifiez une distance de décalage [") ) ) (foreach n (reverse lst_vn) (princ (rtos n)) (princ "/")) ) (T (if (eq (car lst_vn) -1.0) (setq lst_vn (cons (/ vn 2.0) (cons (/ vn 2.0) (cdr lst_vn)))) (setq lst_vn (cons vn lst_vn)) ) (foreach n (reverse lst_vn) (princ (rtos n)) (princ "/")) ) ) (princ "]: ") ) ) (initget 70 "Median") ) (if (member -1.0 lst_vn) (setq lst_vn (vl-remove -1.0 lst_vn))) (if (not mode) (progn (setq tmp nil) (while lst_vn (setq tmp (cons (apply '+ lst_vn) tmp)) (setq lst_vn (cdr lst_vn)) ) (setq lst_vn (reverse tmp)) ) ) (cond (lst_vn (initget 1) (setq side_offset (getpoint "\nSpécifiez un point sur le côté à décaler: ")) (setvar "cmdecho" 0) (command "_.undo" "_group") (foreach n lst_vn (command "_.offset" n ent side_offset "")) (command "_.undo" "_group") (setvar "cmdecho" 1) ) ) ) ) (prin1) ) Possible qu'il reste des bugs, malgré les tests rapides que j'ai pu faire.
-
Je ne sais quel moyen tu utilise: _Filter, q_select ou ( je pense ) aux filtres du gestionnaire de calque. Toujours est-il qu'en ligne de commande ce qui suit à l'air de fonctionner: (sssetfirst (setq js (ssget "x" '((-4 . "< and") (8 . "*PORTE*") (8 . "~*PORTEUR*") (-4 . "and >")))) js) Il te faut juste retranscrire si cela est accepté. NB:Enlever les blancs dans les AND
-
Ca rejoint mon SOUHAIT. J't dis pas le malheur si un fichier transite par divers intervenant utilisant chacun leur propres applicatifs Quand je vois parler des Champs dynamiques pour la 2006 et bientôt ce que nous réserve la 2007? Bien que ce soit formidable, tout ces liens interdépendant vont vite créer des fichiers volumineux et difficilement purgeable et gérable. :mad:
