-
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
-
Une astuce que j'ai vu récemment sur le net avec PDFCreator Lors de l'impression du 1er document (dans le gestionnaire d'imprimante Windows), mettre celui-ci en attente. Faire alors toutes les impressions PDF qui vont s'accumuler dans le "buffer" d'impression. Sélectionner alors touts ces documents en attente pour les mettre en évidence, puis un clic-droit. Dans ce menu contextuel choisir concaténer, les impressions seront alors regrouper dans un seul document PDF.
-
Bon, au vu des remarques, je vois que personnes n'a regardé mon lien :( Bien que celui-ci faisait des solides, il fonctionnait bien avec toute sortes de justifications, tant que l'on reste dans des SCU parallèles. Voici donc à peu près le même pour faire soit des Boite/Cercle/Ellipse. (defun transpts (apt matrix / ) (list (+ (* (car (nth 0 matrix)) (car apt)) (* (car (nth 1 matrix)) (cadr apt)) (* (car (nth 2 matrix)) (caddr apt)) (cadddr (nth 0 matrix)) ) (+ (* (cadr (nth 0 matrix)) (car apt)) (* (cadr (nth 1 matrix)) (cadr apt)) (* (cadr (nth 2 matrix)) (caddr apt)) (cadddr (nth 1 matrix)) ) (+ (* (caddr (nth 0 matrix)) (car apt)) (* (caddr (nth 1 matrix)) (cadr apt)) (* (caddr (nth 2 matrix)) (caddr apt)) (cadddr (nth 2 matrix)) ) ) ) (defun v_matr (dpt alphax alphay alphaz echx echy echz / ) (list (list (* echx (cos alphaz) (cos alphay)) (- (sin alphaz)) (sin alphay) (car dpt) ) (list (sin alphaz) (* echy (cos alphaz) (cos alphax)) (- (sin alphax)) (cadr dpt) ) (list (- (sin alphay)) (sin alphax) (* echz (cos alphax) (cos alphay)) (caddr dpt) ) (list 0.0 0.0 0.0 1.0) ) ) (defun c:arround_text ( / js n key keyf dxf_ent ins_point ht_txt lg_box ht_box ang_box pt_just lst_box transform diag_box) (princ "\nChoix des MultiTEXTE ou TEXTE: ") (setq js (ssget '((0 . "*TEXT") (-4 . "=") (210 0.0 0.0 1.0))) n -1) (cond (js (initget "Boite Disque _Box Disc") (setq key (getkword "\nForme? [boite/Disque][b]<[/b]Boite>: ")) (if (not key) (setq key "Box") (if (eq key "Disc") (progn (initget "Ellipse Rond _Ellipse Round") (setq keyf (getkword "\nDisque en [Ellipse/Rond][b]<[/b]Rond>: ")) (if (eq keyf "Ellipse") (setq keyf T) (setq keyf nil)) ) ) ) (repeat (sslength js) (setq dxf_ent (entget (ssname js (setq n (1+ n))))) (cond ((eq (cdr (assoc 0 dxf_ent)) "MTEXT") (setq ins_point (cdr (assoc 10 dxf_ent)) ht_txt (* (cdr (assoc 40 dxf_ent)) 0.5) lg_box (cdr (assoc 42 dxf_ent)) ht_box (cdr (assoc 43 dxf_ent)) ang_box (atan (/ (caddr (assoc 11 dxf_ent)) (cadr (assoc 11 dxf_ent)))) pt_just (cdr (assoc 71 dxf_ent)) ) (setq lst_box (list (list (- ht_txt) ht_txt 0.0) (list (+ lg_box ht_txt) ht_txt 0.0) (list (+ lg_box ht_txt) (- 0.0 ht_box ht_txt) 0.0) (list (- ht_txt) (- 0.0 ht_box ht_txt) 0.0) ) ) (cond ((eq pt_just 1) (setq transform (v_matr (list 0.0 0.0 0.0) 0.0 0.0 0.0 1.0 1.0 1.0)) ) ((eq pt_just 2) (setq transform (v_matr (list (- (/ lg_box 2.0)) 0.0 0.0) 0.0 0.0 0.0 1.0 1.0 1.0)) ) ((eq pt_just 3) (setq transform (v_matr (list (- lg_box) 0.0 0.0) 0.0 0.0 0.0 1.0 1.0 1.0)) ) ((eq pt_just 4) (setq transform (v_matr (list 0.0 (+ (/ ht_box 2.0)) 0.0) 0.0 0.0 0.0 1.0 1.0 1.0)) ) ((eq pt_just 5) (setq transform (v_matr (list (- (/ lg_box 2.0)) (/ ht_box 2.0) 0.0) 0.0 0.0 0.0 1.0 1.0 1.0)) ) ((eq pt_just 6) (setq transform (v_matr (list (- lg_box) (/ ht_box 2.0) 0.0) 0.0 0.0 0.0 1.0 1.0 1.0)) ) ((eq pt_just 7) (setq transform (v_matr (list 0.0 ht_box 0.0) 0.0 0.0 0.0 1.0 1.0 1.0)) ) ((eq pt_just 8) (setq transform (v_matr (list (- (/ lg_box 2.0)) ht_box 0.0) 0.0 0.0 0.0 1.0 1.0 1.0)) ) ((eq pt_just 9) (setq transform (v_matr (list (- lg_box) ht_box 0.0) 0.0 0.0 0.0 1.0 1.0 1.0)) ) ) (setq lst_box (mapcar '(lambda (x) (transpts x transform)) lst_box)) (setq transform (v_matr ins_point 0.0 0.0 (- ang_box) 1.0 1.0 1.0)) (setq lst_box (mapcar '(lambda (x) (transpts x transform)) lst_box)) ) ((eq (cdr (assoc 0 dxf_ent)) "TEXT") (setq diag_box (textbox dxf_ent) ins_point (cdr (assoc 10 dxf_ent)) ht_txt (/ (cdr (assoc 40 dxf_ent)) 5.0) ang_box (cdr (assoc 50 dxf_ent)) ) (setq lst_box (list (list (- (caar diag_box) ht_txt) (- (cadar diag_box) ht_txt) 0.0) (list (+ (caadr diag_box) ht_txt) (- (cadar diag_box) ht_txt) 0.0) (list (+ (caadr diag_box) ht_txt) (+ (cadadr diag_box) ht_txt) 0.0) (list (- (caar diag_box) ht_txt) (+ (cadadr diag_box) ht_txt) 0.0) ) ) (setq transform (v_matr ins_point 0.0 0.0 (- ang_box) 1.0 1.0 1.0)) (setq lst_box (mapcar '(lambda (x) (transpts x transform)) lst_box)) ) (T (setq lst_box nil)) ) (cond (lst_box (setq toto lst_box) (cond ((eq key "Disc") (entmake (list (cons 0 "ELLIPSE") (cons 100 "AcDbEntity") (assoc 67 dxf_ent) (assoc 410 dxf_ent) (assoc 8 dxf_ent) (if (assoc 62 dxf_ent) (assoc 62 dxf_ent) (cons 62 256)) (if (assoc 6 dxf_ent) (assoc 6 dxf_ent) (cons 6 "BYLAYER")) (if (assoc 370 dxf_ent) (assoc 370 dxf_ent) (cons 370 -1)) (cons 100 "AcDbEllipse") (cons 10 (mapcar '* (mapcar '+ (car lst_box) (caddr lst_box)) '(0.5 0.5 0.5))) (cons 11 (list (* (- (distance (car lst_box) (cadr lst_box))) 0.5 (cos ang_box)) (* (- (distance (car lst_box) (cadr lst_box))) 0.5 (sin ang_box)) 0.0)) (cons 40 (if keyf 0.5 1.0)) (cons 41 0.0) (cons 42 (* 2 pi)) '(210 0.0 0.0 1.0) ) ) ) (T (entmake (append (list (cons 0 "LWPOLYLINE") (cons 100 "AcDbEntity") (assoc 67 dxf_ent) (assoc 410 dxf_ent) (assoc 8 dxf_ent) (if (assoc 62 dxf_ent) (assoc 62 dxf_ent) (cons 62 256)) (if (assoc 6 dxf_ent) (assoc 6 dxf_ent) (cons 6 "BYLAYER")) (if (assoc 370 dxf_ent) (assoc 370 dxf_ent) (cons 370 -1)) (cons 100 "AcDbPolyline") (cons 90 4) (cons 70 1) ) (apply 'append (mapcar '(lambda (x10) (list (list 10 (car x10) (cadr x10)) '(42 . 0)) ) lst_box ) ) '((210 0.0 0.0 1.0)) ) ) ) ) ) ) ) ) ) (princ) ) [Edité le 9/11/2007 par bonuscad]
-
Perpendiculaire à partir d\'un point
bonuscad a répondu à un(e) sujet de Matt666 dans Pour aller plus loin en LISP
Un lisp ancien réalisé sous une version R14 (sans vlax) (defun elperr (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 "blipmode" v2) (setvar "osmode" v3) (setvar "orthomode" v4) (setvar "snapang" v5) (setvar "aperture" v6) (setq *error* olderr) (princ) ) (defun elevperp ( / v1 v2 v3 v4 v5 v6 olderr x p p1 j) (setq v1 (getvar "cmdecho") v2 (getvar "blipmode") v3 (getvar "osmode") v4 (getvar "orthomode") v5 (getvar "snapang") v6 (getvar "aperture") ) (setvar "cmdecho" 0) (setvar "blipmode" 0) (setvar "osmode" 0) (setvar "snapang" 0) (setvar "aperture" 3) (setq olderr *error* *error* elperr) (cond ((setq x (nentsel "\nElever la perpendiculaire au segment : ")) (setq p (osnap (cadr x) "_near")) (if (null p) (setq p (osnap (cadr x) "_insert"))) (setq j (osnap p "_center")) (if (null j) (setq j (osnap p "_midpoint"))) (if (null j) (setq j (osnap p "_endpoint"))) (if (null j) (setq j (osnap p "_node"))) (if (null j) (setq j (osnap p "_insert"))) (setvar "snapang" (angle p j)) (setvar "orthomode" 1) (if (= (setq p1 (getpoint "\nDu point : ")) ()) (setq p1 p) ) (initget 9) (setq j (getpoint p1 "\nJusqu'au point : ")) (command "_.line" p1 j "") ) ) (setq *error* olderr) (setvar "aperture" v6) (setvar "snapang" v5) (setvar "orthomode" v4) (setvar "osmode" v3) (setvar "blipmode" v2) (setvar "cmdecho" v1) (prin1) ) (defun c:elp () (elevperp) ) (defun c:elevperp () (elevperp) ) (prompt "\nElevperp charge tapez ELEVPERP ou ELP pour l'execution") (prin1) -
Si je ne me trompe, la variable SNAPBASE. Celle ci n'influe pas que que la base de la résolution de la grille (RESOL), mais aussi la base de mise en place des hachures. Elles peut permettre donc d'avoir le motif qui démarre à un point précis du dessin, et entre autre pour des motifs complexes (notamment pour des motif ayant des angles) elle évite d'avoir des décalage du motif qui s'accentuent plus on s'éloigne de l'origine.
-
Pour le Ptit' Dej de Mister Lecrabe. Cette routine est très basique, elle dessine juste une clothoïde entre 1 DROITE et 1 CERCLE, pour peu que le calcul soit possible (que le delta R ou ripage du cercle par rapport à la droite soit dans une fourchette admissible). Donc pas de possibilité d'avoir une OVE (segment de cloto. entre 2 cercles) ou des raccordements di/symétrique entre 2 droites. La précision de la résolution de l'intégrale de Fresnel m'ayant posé des problèmes, il est par exemple impossible d'avoir une clotoïde qui s'enroule sur elle même (escargot). L'application se limite donc à un usage classique comme on peut le rencontrer sur un projet routier. Cette application génère des XData pour stocker les paramètres de la clotoïde, que l'on peut obtenir à l'aide d'un autre utilitaire. Tu trouveras tout ceci sur ma page , qui n'avance pas bien vite d'ailleurs....
-
Voir cette demande similaire avec ses réponses.
-
Pourquoi n'utilises tu pas l'éditeur Vlisp et tu compiles simplement ton projet en FAS. Ton code je penses sera bien protégé. (tout est relatif, car j'ai bien trouvé des décompilateurs de FAS sur le net, mais je les ais pas du tout trouvé probant quant au résultat.) Euh..., en y regardant de plus près, le FAS à l'air très similaire au VLX, donc la réponse ne vas pas t'intéresser. [Edité le 21/6/2007 par bonuscad]
-
Dans ce fil, il y a eu des malentendus et la demande allait à l'encontre de l'éthique de CadXp. Si Ahmed avait mis son lisp en ligne, je n'aurais pas fait de réponse sur le forum (peut être en MP et encore), car il évidant que l'auteur voulait protéger son travail. Avant de faire quoique ce soit, j'ai fait des recherches sur le net, et je n'ai rien trouvé! J'ai donc considéré qu'il n'y avait plus de suivi sur cette application, que celle-ci était obsolète et ne porterait pas de préjudices (pas de nouvelle versions proposée pour les versions actuelles). Je reconnais que j'ai enfreins le travail d'autrui, mais pour moi seul Ahmed doit en supporter le caractère illégal. C'est à lui maintenant qu'il incombe de ne pas diffuser ce lisp détourné. Je ne cherche pas a me justifier, mais Ahmed ayant fait des remerciements en public (ce qu'il n'aurait pas du faire à mon avis, vu le caractère ambigüe de la demande), je me dois donc quelques explications. Ahmed, tu es certainement un gentil garçon, mais tu nous as mis Patrick et moi dans une situation malsaine. Indirectement, tu nous montre du doigt comme hacker, ce qu'on est point. Je pense que Patrick et moi avons relevé ceci comme un challenge, par passion et pour te rendre service, chose que je n'aurais pas faite si mes recherches avaient été fructueuses. JE NE REPONDRAIS PLUS A CE GENRE DE DEMANDE, pour m'éviter ce genre de situations inconfortable. Sans rancune tout de même, pour moi le sujet est clos!
-
Pour clarifier la situation et qu'il n'y ait pas de malentendu pour les lecteurs. Ce lisp n'était PAS crypté et parfaitement lisible. Le problème et qu'il avait perdu son indentation, et que les variables/fonctions sont codées (du style (setq QJ@% ...), et une utilisation subtile de (apply '(lambda imbriqué, ce qui rends ça compréhension difficile. Je pense que l'auteur aurait du compilé son code pour une réelle protection, mais là c'est une autre histoire....
-
Ca me rappelle ce sujet similaire La question était plus explicite :mad:
-
J'ai du mal à te suivre :casstet: Ce que j'ai voulu te montrer et l'utilisation de 'SNAPBASE qui va te recaler ta grille de résolution au dernier point entré. Après forcément les cotés de ton carré seront des multiple de la valeur de RESOL, ce qui ne serait pas le cas si tu ne RECALE PAS le point de base de ta résolution. Ou alors on se comprend mal, as tu essayé la démarche proposée? Si c'est le cas exprime toi avec des images Un dessin vaut mieux qu'un long discours
-
Toujours avec RESOL: Un exemple pas à pas LIGNE Spécifiez le premier point:[surligneur] < Résol inactif > [/surligneur] on désactive resol et on pointe le point de départ Spécifiez le point suivant ou [annUler]: [surligneur]'snapbase [/surligneur] tapé au clavier! >>Entrez une nouvelle valeur pour SNAPBASE <0.00,0.00> : [surligneur] @ [/surligneur] pour définir le dernier point entré comme point de base Reprend la commande LIGNE. Spécifiez le point suivant ou [annUler]: [surligneur]< Résol actif > [/surligneur] on réactive résol et on pointe le point suivant Spécifiez le point suivant ou [annUler]: Spécifiez le point suivant ou [Clore/annUler]: Spécifiez le point suivant ou [Clore/annUler]: Spécifiez le point suivant ou [Clore/annUler]: et on continu tant qu'on veut
-
Les DCL doivent être placé dans un dossier de recherche d'Autocad, ou ajouter un nouveau chemin de recherche pointant là ou tu as copié ton fichier. Ainsi ces fichier seront toujours accessibles Créer trop de chemins de recherche peut être pénalisant à la longue. Il vaut mieux regrouper tes fichier toujours dans un même dossier (personnel de préférence, pas ceux d'autocad)
-
La coller directement en ligne de commande. (c'est un filtre) Donc tu peux aussi utiliser la commande 'FILTER. Mais avant toutes choses vérifie d'abord l'état de ce calque, surtout le verrouillage et aussi que tes entités soient dans le même espace (objet ou papier) que celui ou tu te trouve actuellement. Pour ton information, sache que tout qui est sur ce calque particulier, n'est jamais imprimé. A l'origine ce calque est réservé aux points de définition des cotations. Donc suivant la forme des points (variable PDMODE PDSIZE), tu peut avoir l'impression d'avoir des lignes. Je reviens sur ce que j'ai dit, les variables PDxxxx n'ont aucune incidence avec ce calque particulier. [Edité le 15/6/2007 par bonuscad]
-
Ben ça faisait longtemps que j'avais pas utiliser la fonction rechercher de l'explorateur. ET BIEN GROSSE SURPRISE ça ne fonctionne pas avec XP... :o Pourtant il n'y a pas si longtemps j'étais encore sous 98 et cela fonctionnait parfaitement avec toutes extensions. Avec Xp il se limite aux fichiers .txt pour fouiller dedans (bravo Microsoft). Ou alors j'ai raté quelque chose (pourtant j'ai cherché), il faudra qu'on me le dise ! L'alternative que j'ai trouvé est de passé par exécuter "CMD" Une fois dans la fenêtre ce placer dans le dossier qui nous intéresse avec par exemple [surligneur]cd "\program files\acad2002\mes lisp"[/surligneur] entrée puis faire [surligneur]find /i "shortcutmenu" *.lsp|more[/surligneur] entrée autant de fois que nécessaire jusqu'à la fin Pas pratique, mais pas trouvé mieux, à moins d'installer un Soft comme TotalCommander qui a des fonctions de recherche/comparaison très poussé
-
Alors maintenant, la responsabilité incombe à un lisp qui serait chargé au démarrage. Personnellement dans les lisp que j'ai pu écrire je m'assure de restaurer la variable tel qu'elle était au début (sauf que souvent je ne fais pas de gestion d'erreurs en cas d'abandon. Hou! hou le vilain) Si le lisp ne rebute pas trop, utilise l'explorateur Windows, fait une recherche de fichier *.lsp contenant le texte "SHORTCUTMENU" pour essayer de trouver le responsable qui ne remettrait pas la variable a son état initial. Tu devrais trouver une ligne du style (setvar "SHORTCUTMENU" nom_variable) normalement vers la fin du (defun principal) Pour le réglage, je te laisse apprécier ce qui te convient le mieux. Je ne sais pas si sous 2006 la valeur 11 est toujours la valeur par défaut. Honnêtement je ne pense pas que ce soit l'une de mes routine qui mette le "boxon" si tu as supprimer l'appel à (fixvar). Voilà en espérant t'avoir aider
-
Si tu as utilisé mon applicatif AVEC son menu, méfie toi de bonuscad.mnl il charge automatiquement un fichier lisp nommé fixvar.lsp Ce dernier et un fichier qui fixe des variables et à mon souvenir SHORTCUTMENU est concerné. Tu peux éditer ce fichier pour fixer les variables à ta convenance et en rajouter/supprimer et ainsi retrouver dans tout les cas un environnement de travail toujours identique quelque soit les dessins ouverts. Si ce système t'ennuie tu édite le MNL et met en remarque/enlève la ligne (load "fixvar.lsp"). Quand "ShortCutMenu" est à 11 (valeur par défaut), les lisp présentant des options en ligne de commande sous la forme [1Option/2Option/3Option...] fait que si tu fais un clic-droit, tu retrouves ces options dans un menu contextuel qui apparait au niveau du curseur. Tu n'a plus qu'a choisir ton option dans ce menu, au lieu de taper au clavier. (Les commandes standard d'autocad fonctionne de la même manière) Donc pour les inconditionnel de la souris, tout peut se faire par là en réduisant au minimum l'usage du clavier. La commande Zoom: Si tu tape Z au clavier, tu auras ceci: [Tout/Centre/DYnamique/ETendu/Précédent/Echelle/Fenêtre/Objet] : L'option Gauche n'apparait pas, mais si tu tape "G" ou "_L", autocad va te demander le coin bas gauche que tu désire et qu'il placera au coin bas gauche de ton écran. Le mieux c'est d'essayer.... ;) PS: Je trouve que tu es un très bon participant et c'est l'essentiel, et tu peux m'apprendre quelque chose aussi, Autocad est une vaste "bestiole" qu'il est impossible de connaitre entièrement. On en découvre tout les jours [Edité le 13/6/2007 par bonuscad]
-
Pour moins perdre de temps ;) On peut utiliser aussi le clic-droit pour entrer une échelle (les plus courantes), on a plus qu'a choisir. Si le clic-droit ne donne aucune option, c'est que la variable "SHORTCUTMENU" n'a pas sa valeur par défaut (11). Tu pourras observer que tu as l'option gauche dans le zoom. Je dis ça, car cette option de zoom n'apparait pas en ligne de commande, mais est tout à fait valide ("_Left"). Ca serait bête de perdre du temps à découvrir les options cachés d'Autocad....
-
Pas de solution qui me vienne à l'esprit. Mais ce que tu pourrais tenter en 1er lieu et qui ne "mange pas de pain" et de créer un nouveau profil (tu pourras le supprimer par la suite), de l'activer et de voir si sous ce nouveau profil, ça fonctionne.
-
Cela fonctionnait avant? C'est un lisp pris sur CadXp? Si c'est le cas donne un lien (si tu le retrouve), que l'on puisse jeter un oeil ;) Certain lisp ne sont pas compatible toute version (un lisp écrit pour 2006-7 ne fonctionnera pas forcément pour 2000-5) et dans ce cas le message d'erreur et celui décrit.
-
Non, non pas "recuperer" ("_recover") mais bien "controle" ("_audit") après l'ouverture d'un fichier qui n'a pas été encore sauvegarder. Concerne t-il des applications manquantes ? Je ne serais pas surpris que cela vienne d'une application tierce. Il faudrait peut être voir à réinstaller ces applications sur le poste en question. Voir aussi dans la base de GEOMEDIA ou AutoTurn si ce problème a été déjà été recensé... Et pour les fichiers, et bien bonne chance ! (repartez de sauvegardes saines)
-
Ouf, en effet! problème sérieux!! :casstet: Il faudrait plus d'info. Travaillez vous sur des fichiers partagés en réseaux, utilisez vous des applications tierces qui utilise des ARX Avez vous des messages à l'ouverture, un controle juste après l'ouverture donne quoi? Est-ce que des droits aurait pu être changé sur le poste ou les propriété d'un dossier (par inadvertance) Difficile de cerner le problème.
-
Exact, j'utilise rarement (même dire jamais) l'option Ajouter d'un xref, que j'avais oublié l'option. Par contre je me sert beaucoup des Xref en tant que tel, avec surtout les options "décharger" "recharger", c'est tellement pratique. :P
-
verouiller une liste de calque dans un fichier gabarit
bonuscad a répondu à un(e) sujet de whitesquare dans AutoCAD 2006
Oui, (cond ((setq js (ssget "_X" '((67 . 0)))) (setq n 0) (repeat (sslength js) (vlax-put-property (vlax-ename->vla-object (ssname js n)) 'Visible -1) (setq n (1+ n))))) Sans ceci pas facile à faire réapparaitre, donc avantage car pas facilement manipulable par n'importe qui. A mon avis non, pas plus que les attributs de bloc invisible, ou les arêtes de 3dfaces invisibles. Par contre une prise de tête pour la personne qui voudrait absolument purger les calques, ça je n'en doute pas. Le bit du code DXF 67 est à utiliser à bon escient et avec parcimonie, je ne le recommande pas forcément. On peut vite oublier l'existence de ces objet invisibles par la suite et "zapper" la solution de les faire réapparaitre. -
verouiller une liste de calque dans un fichier gabarit
bonuscad a répondu à un(e) sujet de whitesquare dans AutoCAD 2006
Ou simplement le rendre invisible, Met ceci en ligne de commande pour le rendre invisible: (vlax-put-property (vlax-ename->vla-object (car (entsel))) 'Visible 0)
