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. Voilà quelque lignes adapté à ta version Acrobat (defun c:read_pdf ( / id_file) (setq id_file (getfiled "Sélectionner un fichier PDF" "" "pdf" 16)) (startapp "C:\\Program Files\\Adobe\\Acrobat 7.0\\Reader\\AcroRd32.exe" id_file) (prin1) )
  2. Bonjour Envois simplement ton fichier ou tu as dessiné ton parking. N'utilises surtout pas la fonction "Etransmit" ou encore "PackandGo" des expresstools qui eux se chargent de joindre tous les fichiers dépendants de ton dessin. (xref polices typedeligne etc...)
  3. Sans avoir fait l'essai, je pense que oui. Il faut éditer le fichier AutoCAD.PGP et rajouter dans la section "; Exemples de commandes externes pour Windows" la commande appropriée.
  4. bonuscad

    pb impression calque

    Ce ne serait pas le calque "Defpoints" par hazard? Si c'est le cas, c'est normal; ce calque spécial est non-imprimable (reservé aux points de définitions de la cotation) Il y a peut être aussi le calque "ASHADE", je ne sais plus, qui a les mêmes caractéristiques.
  5. Bonjour Ludwig Si tu as les expresstools, tu pourrais t'inspirer du programme "XDATA.lsp" Xdata permet de rajouter des données, mais pas de substituer des données. Cependant tu doit pouvoir l'adapter. Un autre conseil, pour une valeur entière utilise plutot le code "1070" que le code "1000" qui est plutot destiné aux chaines de caractères. ce qui pourrait donné en code (pas achevé, j'ai fais la substitution mais je n'ais pas reconstruis la liste pour la mise à jour) Attention l'ordre des xdata est TRES important, si tu as plusieurs fois le même code par exemple 1070, assure toi de bien extraire celui qui t'interesse et de le remettre dans le même ordre. (defun c:test ( / ) (while (not (setq e_sel (entsel))) ) (setq e_name (car e_sel)) (setq increment 10) (setq e_list (entget e_name (list "SAF_ID"))) (cond ((setq xd_list (assoc -3 e_list)) (setq xd_list (cdadr xd_list)) (print (assoc 1070 xd_list)) (setq xd_list (subst (cons 1070 (+ increment (cdr (assoc 1070 xd_list)))) (assoc 1070 xd_list) xd_list)) (print (assoc 1070 xd_list)) ) (T (princ "\nAucune donnée d'objet étendue n'est associée à cet objet.") ) ) (prin1) )
  6. Je confirme tes dires , Y'a un "blème" En positionnant comme indiqué sur tes images, j'ai le même symptôme. Il doit y avoir un référencement de fait quelque part (dans l'aide ils en parlent; absolu et relatif, mais j'ai pas tout compris). A priori si tu inséres des lignes dans ce style de menu autre qu'à la fin, ca fout le bazard. T'a raison cela marche très bien à la fin, on va pas se compliquer la vie ;)
  7. Je viens de réessayer, et ca fonctionne. Le problème que j'ai eu (je crois) est que le message n'apparait pas systématiquement "Le style de cote Copie de ISO-25 à été rendu courant." Ce qui m'a enduis en erreur et moi de m'obstiner sur le click-droit J'ai eu la présence d'esprit d'essayer de faire quand même une cotation pour me rendre compte que le style avait changé. A la suite de ça le message est apparu régulièrement sans problème. Cela m'a fait la même chose pour la 1ere utilisation avec les grips activé, puis le click-droit; pas de message, puis à la suite fonctionnement normal J'ai fermé mon dessin, réouvert et là pas problème, même à la 1ere utilisation. Il reste des mystères réactifs ;) qui seront pas simple à résoudre car très aléatoire. Cela serait bien que d'autres confirment.... Bonne chance Et merci pour le B.A.BA sur les réacteurs, mais je pense que si je me mets à les utiliser, cela sera avec parcimonie car l'interdépendance m'a l'air assez ardue à gérer pour des applics un peu complexes
  8. En reprenant mon précédent exemple. Même principe que giles avec un controle un peu plus poussé DCL test : dialog { label = "Essai de bouton"; : row { : edit_box { label = "Distance:"; mnemonic = "D"; key = "e_dist"; edit_width = 10; } : button { label = "Saisir <"; mnemonic = "S"; key = "pick_d"; } } : row { : edit_box { label = "Angle :"; mnemonic = "A"; key = "e_ang"; edit_width = 10; } : button { label = "Saisir <"; mnemonic = "S"; key = "pick_a"; } } : toggle { label = "Bouton bascule"; mnemonic = "B"; key = "btn"; } ok_cancel_err; } LISP (defun tstval (val idx_v / val idx_v) (if (or (distof val) (angtof val)) (progn (if idx_v (setq e_dist (distof val)) (setq e_ang (angtof val)) ) (set_tile "error" "") ) (progn (set_tile "error" "Valeur numérique incorrecte !") (if idx_v (set_tile "e_dist" (rtos e_dist)) (set_tile "e_ang" (angtos e_ang)) ) ) ) ) (defun c:test_bouton ( / dcl_id what_next v_btn e_dist e_ang) (setq dcl_id (load_dialog "test") v_btn "" e_dist 0.0 e_ang 0.0) (setq what_next 4) (while (< 1 what_next) (if (not (new_dialog "test" dcl_id)) (exit)) (set_tile "btn" v_btn) (set_tile "e_dist" (rtos e_dist)) (set_tile "e_ang" (angtos e_ang)) (action_tile "btn" "(setq v_btn $value)") (action_tile "e_dist" "(tstval $value T)") (action_tile "e_ang" "(tstval $value nil)") (action_tile "pick_d" "(done_dialog 3)") (action_tile "pick_a" "(done_dialog 2)") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq what_next (start_dialog)) (cond ((= what_next 2) (initget 1) (setq e_ang (getangle "\nAngle?: ")) ) ((= what_next 3) (initget 71) (setq e_dist (getdist "\nDistance?: ")) ) ) ) (unload_dialog dcl_id) (prin1) )
  9. Salut Patrick_35, J'ai essayé ton lisp par curiosité, mais il a un étrange comportement. Le réacteur sur le click-droit fonctionne aléatoirement, et quand il fonctionne il ne met pas le bon style courant (c'est toujours le même) Je m'y prend peut être mal. N'étant toujours pas à l'aise avec les réacteurs je ne peux t'aider. J'attends la suite du cours ;) Désolé que ma réponse ne puisse t'aider mais au moins tu sais qu'il y a peut être un problème.
  10. Une autre façon, avec 1 exemple. fichier test.dcl test : dialog { label = "Essai de bouton"; : toggle { label = "Bouton bascule"; mnemonic = "B"; key = "btn"; } ok_cancel_err; } Comme définie, la touche B active ou désactive la case le fichier lisp (defun c:test_bouton ( / dcl_id what_next v_btn) (setq dcl_id (load_dialog "test") v_btn "") (setq what_next 2) (while (< 1 what_next) (if (not (new_dialog "test" dcl_id)) (exit)) (set_tile "btn" v_btn) (action_tile "btn" "(setq v_btn $value)") (action_tile "accept" "(done_dialog 1)") (action_tile "cancel" "(done_dialog 0)") (setq what_next (start_dialog)) ) (unload_dialog dcl_id) (prin1) )
  11. Je referais des essais ce soir, mais il ne me semble pas avoir eu ce genre de problème sous une 2005. As tu fait d'autres modications dans le AutoCAD.MNS? Si c'est le cas essaye de repartir d'une copie (en MNS) du MNU original. Autrement mystère et boule de gomme (peut être la variable "ShortCutMenu" /= 11)
  12. Je pense que le problème peut venir des caractères spéciaux d'affichage de la hièrachie des pop-up. Dans un menu "[->....]" représente le début d'un sous-menu "[<-....]"la dernière ligne d'un sous-menu Lors de l'insertion de commandes supplémentaires faire attention ne pas "casser" cette hiérachie. le caractère de dernière ligne peut être déplacer sur ta ligne, si tu veux qu'elle soit le dernier élément du sous-menu Un peu comme le lisp, 1 "("ouvrante 1")" fermante ;) Personellement je l'ai essayé à plusieurs endroits et pas de problèmes. :cool:
  13. Bonjour ICI tu as des plug-in pour autocad (2000 à 2002 & pour2004-2005) en free pour pouvoir charger des images géoréférencées et compressées au format ECW
  14. Bonjour, Il est possible d'utiliser dans certaine condition un lisp au cours d'une commande Autocad. Les conditions pour que cela fonctionne: * il faut que le code renvoi ce qu'attend la commande au moment de l'appel, - cela peut être un point sous forme de liste (5.0 3.0 0.0) un réel, entier ou caractère alphanumérique. * il ne faut pas que ton code fasse des appels à commande (un appel à la commande "CERCLE" ne pourra fonctionner au milieu de l'utilisation de la commande "POLYLIGNE", elle fera avorter celle-ci). Un exemple concret, sans controle de validité et d'erreur, vite fait pour l'exemple ;-) En considérant que le code suivant est chargé en mémoire. (defun qla? () (cdr (assoc 43 (entget (car (entsel "\nSélectionner une LWPOLYLINE pour récuperer sa largeur: "))))) ) Ce code récupère la largeur d'une polyligne préalablement dessinée. Il est maintenant possible de t'en servir dans la commande polyligne Ex: Commande: _pline Spécifiez le point de départ: La largeur courante est de 0.0000. Spécifiez le point suivant ou [Arc/Clore/Demi-larg/LOngueur/annUler/LArgeur]: LA Spécifiez la largeur de départ <0.0000>: (qla?) (<- ici l'appel à la fonction lisp) Sélectionner une LWPOLYLINE pour récuperer sa largeur: 4.01972 (<- valeur renvoyée par la fonction (qla?)) puis la suite de la commande continue normalement.
  15. bonuscad

    faces 3d en polylignes3d

    Ca devrait le faire! (defun C:3dfto3dpo ( / js ind e_name ent dxf_10 dxf_11 dxf_12 dxf_13) (setvar "cmdecho" 0) (princ "\nChoix des 3Dfaces.") (setq js (ssget '((0 . "3DFACE"))) ind 0) (cond (js (setvar "osmode" (+ 16384 (rem (getvar "osmode") 16384))) (while (setq e_name (ssname js ind)) (setq ind (1+ ind) ent (entget e_name) dxf_10 (trans (cdr (assoc 10 ent)) 0 1) dxf_11 (trans (cdr (assoc 11 ent)) 0 1) dxf_12 (trans (cdr (assoc 12 ent)) 0 1) dxf_13 (trans (cdr (assoc 13 ent)) 0 1) ) (if (not (equal dxf_12 dxf_13 1E-012)) (command "_.3dpoly" dxf_10 dxf_11 dxf_12 dxf_13 "_close") (command "_.3dpoly" dxf_10 dxf_11 dxf_12 "_close") ) ) (princ (strcat "\n" (itoa ind) " 3Dpoly crées à partir de 3Dface.")) (setvar "osmode" (rem (getvar "osmode") 16384)) ) (T (prompt "\nAucune sélection valide.")) ) (setvar "cmdecho" 1) (prin1) ) [Edité le 16/9/2010 par bonuscad]
  16. bonuscad

    croisillons batis leger??

    Bon le temps étant morose et l'envie au rendez-vous ;) J'ai planché un peu sur le problème, ce n'est pas aussi simple que je le pensais :casstet: Mais voici déjà une approche qui peut être encore amélioré. Le résulat sera convenable si les polyligne ont des contours proche de ce qu'on peut trouver comme contour de bati. Bien sur si on a des contour très tortueux avec des formes en "U" (concave) le résultat ne sera pas celui escompté. Concluant ou pas ? (defun C:croisillons ( / ent ptlst di_lst pt_sco pt_nxt pt_tmp ptscu p_min p_max pt_box l_near d_near p_near) (setvar "cmdecho" 0) (while (not ent) (setq ent (entsel "\nSélectionner une Polyligne:")) (if ent (progn (setq ent (entget(car ent))) (if (/= (cdr(assoc 0 ent)) "LWPOLYLINE") (progn (prompt "\nEntitée sélectionée n'est pas une Polyligne. Réessayer") (setq ent nil) ) ) ) (prompt "\nAucune sélection. Réessayer") ) ) (setq ptlst (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) ent))) (setq di_lst (mapcar '(lambda (x y) (distance x y)) ptlst (append (cdr ptlst) (list (car ptlst))))) (setq pt_sco (nth (- (length di_lst) (length (member (eval (cons 'max di_lst)) di_lst))) ptlst)) (setq pt_nxt (nth (- (1+ (length di_lst)) (length (member (eval (cons 'max di_lst)) di_lst))) (append ptlst (list (car ptlst))))) (setq pt_tmp (polar pt_sco (+ (angle pt_sco pt_nxt) (/ pi 2)) (distance pt_sco pt_nxt))) (setvar "osmode" (+ 16384 (rem (getvar "osmode") 16384))) (command "_.ucs" "_3point" pt_sco pt_nxt pt_tmp) (setq ptscu (mapcar '(lambda (x) (trans x 0 1)) ptlst)) (setq p_min (list (apply 'min (mapcar 'car ptscu)) (apply 'min (mapcar 'cadr ptscu)) ) p_max (list (apply 'max (mapcar 'car ptscu)) (apply 'max (mapcar 'cadr ptscu)) ) ) (setq pt_box (list p_min (list (car p_max) (cadr p_min)) p_max (list (car p_min) (cadr p_max)))) (setq l_near '()) (repeat 4 (setq d_near (mapcar '(lambda (x) (distance (car pt_box) x)) ptscu)) (setq p_near (nth (- (length d_near) (length (member (eval (cons 'min d_near)) d_near))) ptscu)) (cond ((not (member p_near l_near)) (setq l_near (cons p_near l_near)) ) (T (setq d_near (mapcar '(lambda (x) (distance (car pt_box) x)) (vl-remove p_near ptscu))) (setq p_near (nth (- (length d_near) (length (member (eval (cons 'min d_near)) d_near))) (vl-remove p_near ptscu))) (setq l_near (cons p_near l_near)) ) ) (setq pt_box (cdr pt_box)) ) (command "_.line" (car l_near) (caddr l_near) "" "_.line" (cadr l_near) (cadddr l_near) "") (command "_.ucs" "_previous") (setvar "osmode" (rem (getvar "osmode") 16384)) (setvar "cmdecho" 1) (princ) )
  17. Désolé! :( Essaye (si ce n'est déjà fait !) de faire la même chose (sous XP pro) mais avec le profil administrateur. Vu que tu essayes d'accéder à la racine de ton DD. Des permissions restrictives seraient la cause?
  18. Bonjour, Une suggestion sans pouvoir tester (pas 2006) Essaye simplement de substituer "c:\\autospeed.txt" par "c:/autospeed.txt" Personnellement j'ai déjà rencontré ce genre de problème avec les caractères spéciaux, mais cela était pour mon cas, du à l'environnement windows (xp ou plus ancien) Autre suggestion vérifie qu'il n'y ait pas un distinguo fait entre l'emploi de minuscule ou majuscule dans le nom du fichier ou encore sur l'attribut du fichier (caché?) Autrement je ne vois pas...
  19. (entnext ssel1) est incorrect (entnext) sert à obtenir l'entité suivante dans la base de données par rapport à un nom d'entité Pour un un jeu de sélection il faut utiliser (ssname) exemple commenté: (defun C:ESSAI ( / nom_du_calque ssel1 ind x dxf_x) (setq nom_du_calque (getstring T "\nEntrez le nom du calque : ")) (setq ssel1 (ssget "_X" (list (cons 8 nom_du_calque)))) ;On vérifie l'existence du jeu de sélection (cond (ssel1 ;On fixe l'indice à 0 pour parcourir le jeu de sélection (setq ind 0) ;On répète l'action pour parcourir tout le jeu de sélection (repeat (sslength ssel1) ;On récupère le nom de l'entité indicée dans le jeu de séléction ;On incémente l'indice ;On récupère le définition de l'entité indicée ;On substitue le nouveau calque (ici "0") à l'ancien ;On met à jour l'entité dans la base de donnée (setq x (ssname ssel1 ind) ind (1+ ind) dxf_x (entget x) dxf_x (subst '(8 . "0") (assoc 8 dxf_x) dxf_x) ) (entmod dxf_x) ) ) (T (princ (strcat "\nAucun objet sur le calque " nom_du_calque))) ) (princ) )
  20. Précisions qui peuvent avoir leurs importances. (defun C:ESSAI ( / calque ssel1) (setq calque (getstring T "Entrez le nom du calque : ")) (setq ssel1 (ssget "_X" (list (cons 8 calque)))) ) Préferer (getstring T "Entrez le nom du calque : "), ceci pour permettre un caractère d'espace dans le nom du calque (la validation se fera par entrée). Les espaces sont en effet acceptés dans les noms de calque. Bien que pour ce cas precis cela n'ai aucune importance préférer ssget "_X" (pour les bonnes habitudes) ;) (ssget "T" (trajet) fonctione que sur les versions Fr, (ssget "_F" (fence) sur toutes versions. il est mieux après phase de debug de déclarer ses variables (/ calque ssel1), plus propre ;) bien qu'ici l'usage de "calque" en variable ne pose pas de problème, (defun C:Calque ()) en aurait posé beaucoup plus. Coolman a raison fait attention au nom de tes variables. ex: (setq car nil) et fait un (car '(1 2)) tu verras le problème... :P
  21. bonuscad

    un plan 2D en 3D

    Un petit coup d'oeil ICI La demande est très similaire... Mais une autre posibilité. Dans la zone de telechargement en free tu peut récuperer l'ensemble de bonuscad et y extraire les fichiers suivants: Semfic.lsp pour créer un semis de points dans un fichier Ascii. La routine offre la posibilité de récupérer la valeur d"un attribut pour le Z (au pire la valeur d'un texte que tu devras sélectionner1 par 1; méthode longue mais pouvant rendre service) Une fois ceci fait, tu peux réimporter tes points avec: Topo.lsp & topo.dcl tes point seront mis en place en 3D avec du texte pour la valeur du Z. Le dcl oblige à mettre ces fichier dans un dossier de recherche d'Autocad.
  22. bonuscad

    croisillons batis leger??

    J'me suis complétement planté sur le sens de la question :mad: Maintenant que j'ai vu la routine de Fabcad, j'ai compris :) Il y aurait peut être moyen d'adapter pour une polyligne à + de 4 sommets. Je ferais le (boundingbox) de celle ci, puis chercherais les 4 sommets les plus proches des 4 coins de cette boite englobante Si j'ai le temps et l'envie....
  23. Bien que je sois pas trop à l'aise avec les dictionnaires, j'ai tenté le coup avec ce qui suit. Il a l'air de fonctionner, le dégroupage est le plus difficile mais on pourrait également faire le regroupage de la même manière; sans (command) Mais j'ais fait au plus simple avec REGROUPER :cool: Il y a certainement mieux ou plus simple, c'est une approche :P (defun c:degroup ( / ent dxf_ent dxf_def dxf_grp lst lst_name_gr ent_grp) (while (null (setq ent (entsel)))) (setq dxf_ent (entget (car ent))) (setq dxf_def (entget (cdr (assoc 330 dxf_ent)))) (cond ((eq (cdr (assoc 100 dxf_def)) "AcDbGroup") (setq dxf_grp (dictsearch (namedobjdict) "ACAD_GROUP") lst (member (cons 350 (cdar dxf_def)) (reverse dxf_grp)) nam_gr (list (cadr lst) (car lst)) ent_grp (dictsearch (cdr (assoc -1 dxf_grp)) (cdar nam_gr)) ) (entdel (cdar ent_grp)) (princ "\nEntités dégroupées") ) (T (princ "\nEntité non groupée") ) ) (princ) ) (defun c:regroup ( / js) (setq js (ssget)) (cond (js (setvar "cmdecho" 0) (command "_.-group" "_create" "*" "" js "") (setvar "cmdecho" 1) (princ "\nGroupe créé.") ) (princ "\nAucune sélection.") ) (princ) ) (princ "\nCommande REGROUP/DEGROUP")(princ)
  24. bonuscad

    mea culpa ?

    Une anedocte: Il y a quelque temps déjà, dans l'urgence j'ai du produire des plans papiers. Pouff que m'arrive t-il pas? je perds ma licence. Ne pouvant obtenir rapidement à l'époque un code de réactivation, je mais un crack en place.(hou le vilain!) Le lendemain je fait part à mon revendeur de mes actes. Surprise, il me dit que mon acte ne peut être répréhensible car je suis propriétaire de ma licence et que j' en fais ce que j'en veux. (texto) En tout cas j'ai du faire une réinstallation usine + options non documentées pour me débarasser de ma licence illégale, car cela avait cumulée 2 numéros de licences sur mon DD. Tout ça pour dire que la trace d'une inégalité peut perdurer, sans que tu en sois responsable et même concient.
  25. ID mais quelle idée? Mais oui, c'est bieb sûr..... Blague à part c'est vrai que c'est bien mieux et plus élégant! ;)
×
×
  • 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é