-
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
-
Salut, Il y aurait une histoire de SCU Origine que je ne serait pas surpris. Essaye aussi l'option *0,0,0, comme cela tu seras sûr de faire ton insertion dans le SCG
-
script insertion d\'image
bonuscad a répondu à un(e) sujet de ribbit dans Personnalisation, macros, DIESEL
Oups! Désolé, une petite erreur. Il faut replacer (grread) par (cadr (grread)) Ceci récupère le point cliqué, si tu veux t'accrocher, il faut le définir dans ton script Exemple pour s'accrocher à l'extrémité du point cliqué: '_setvar filedia 0 _.-image _attach "N:\BD ORTHO\2000-0604-2584-62.tif" _end (cadr (grread)) 5 0 '_setvar filedia 1 -
Salut, Voici donc le même code avec l'ajout pour avoir le nom du DWG mis en xref (avec son chemin) J'ai mis l'écriture dans le fichier en REM par ";" et remplacé par un (print) pour faire le test et avoir le retour d'info à l'écran. ;début (defun c:getxref () (vl-load-com) (setq activedocument (vla-get-activedocument (vlax-get-Acad-Object))) (setq theblocks (vla-get-blocks activedocument)) (setq theList '()) [i] ; (setq filexref (open "C:\\temp\\listexref.txt" "w")) [/i] (vlax-for item theblocks (setq yesxref (vlax-get-property item 'isXref)) (if (= yesxref :vlax-true) (progn (setq ablock (vlax-get-property item 'Name)) (setq prxref ablock) [color=red] (setq nam_dwg_xref (cdr (assoc 1 (tblsearch "BLOCK" prxref)))) (print nam_dwg_xref) [/color] [i] ; (write-line prxref filexref) [/i] (setq theList (append (list ablock) theList)) ) ) ) [i] ; (close filexref) [/i] ) ;fin Donc en rouge ce que j'ai rajouté et en italique ce qui a été mis en remarque (pour les besoins du test) Bruno V.
-
script insertion d\'image
bonuscad a répondu à un(e) sujet de ribbit dans Personnalisation, macros, DIESEL
Dans un script (fichier .scr), il n'est pas prévu de faire de pause pour une entée utilisateur. Un tel fichier pouvant être lancé au démarrage d'Autocad... Cependant avec une version pleine tu peut contourner le problème en utilisant du lisp Exemple du contenu d'un fichier SCR (à lancer par la commande script) '_setvar filedia 0 _.-image _attach "N:\BD ORTHO\2000-0604-2584-62.tif" (grread) 5 0 '_setvar filedia 1 NB: Pas d'espace en fin de ligne -
script insertion d\'image
bonuscad a répondu à un(e) sujet de ribbit dans Personnalisation, macros, DIESEL
pause en mode macro est le symbole \ A ne pas confondre avec le / employé entre guillemet "/" , celui-ci est équivalent à "\\" pour représenter les dossiers (DIRectory). Il est souhaitable (et recommandé pour ma part) d'utiliser "/" au lieu "\\" comme séparateur de dossier. Il faut savoir que l'usage de "\" avec Autocad est un mode d'instruction de caractères spéciaux. Difficile de ne pas se mélanger les pinceaux ;) [Edité le 25/11/2004 par bonuscad] -
Salut, Une ligne de code de ce style pourrait faire l'affaire: (cdr (assoc 1 (tblsearch "BLOCK" (vlax-get-property (vlax-ename->vla-object (car (entsel))) 'Name)))) Bruno V.
-
mes barres d\'outils ne tiennent pas en place
bonuscad a répondu à un(e) sujet de alf_ze_cat dans AutoCAD 2000 à 2002
Salut, En effet si on bascule en mode grandes icones, les barres d'outils sont poussée pour être ajustés. Si on revient en mode petites icones, les barres gardent leur positions précédente et peuvent se retrouvée en dehors de la zone écran. Je pense que ton collégue devrait se créer un profil "Grand bouton" (pour exemple), le rendre courant, passer alors en mode grandes icones. Grace à la réponse de Patrick_35 sur le sujet des profils, voir: http://www.cadxp.com/modules.php?op=modload&name=XForum&file=viewthread&tid=3980#pid12498 S'il tu défini un bouton comme ceci: ^C^C(vl-load-com)(vla-put-activeprofile (vla-get-profiles (vla-get-preferences (vlax-get-acad-object))) "Grand boutonl") Cela lui permettra de retrouver sa config écran Tu peut faire la même chose pour les petites icones, ainsi chacun retrouvera sont environnement rapidement si vous êtes plusieurs à utiliser le poste. -
script insertion d\'image
bonuscad a répondu à un(e) sujet de ribbit dans Personnalisation, macros, DIESEL
Salut Ribbit, J'ai fait ça dans un bouton sous 2002 et ça fonctionne ;) ^C^CFILEDIA;0;_.-image;_attach;"N:/BD ORTHO/2000-0604-2584-62.tif";\5;0;FILEDIA;1; J'ai changé les "\" par "/" qui est mieux compris pour les arborescences et le \ n'est pas suivi ni d'un espace,ni d'un point-virgule. NB: Si l'on veut employer les "\" dans les noms de chemin, il faut les doubler "\\", du moins en lisp c'est comme ça. -
Changement de profil utilisateur
bonuscad a répondu à un(e) sujet de bonuscad dans Personnalisation, macros, DIESEL
Un grand merci à Patrick_35 et X13, C'est tout à fait ce que je cherchais! :D Les quelques lignes de Patrick me suffiront amplement car je ne veux pas utiliser de boite de dialogue (Mais le lisp fonctionne très bien !) Je garde celui-ci sous le coude, et il va aussi me servir à connaître la syntaxe à utiliser pour ces fonctions (vla-.....). En effet, je n'ai trouvé aucune trace de ces fonctions dans l'aide, ni dans les documents complémentaires que j'ai pu télécharger sur le net. (Mais où allez vous chercher ces infos?) Un grand gourou ne ferait pas appel à ses disciples :exclam: Je suis comme tout à chacun, un utilisateur qui est passionné et fait partager le peu de connaissance qu'il a. Quant à la donation, ce n'est pas ce genre de réflexion qui me pousseras à la faire, mais plutôt les réponses qu'ont pu m'apporter les utilisateurs lambda. D'ailleurs la réponse de Patrick_35 et x13 va me pousser dans ce sens, je vais voir si les appels de mon poste professionnel ne sont pas bloqués vers les numéros spéciaux, je serais peut être obligé de le faire depuis le poste de mon chef. (Il ne va peut être pas apprécier car une trace des appels est conservée et épluché en cas d'abus) -
Bonjour, Quelqu'un connait-il un moyen de changer de profil utilisateur sans passer par la boite de dialogue "options" et l'onglet "profils"? L'option /p "nom profil" dans l'icone de démarrage sur le bureau, ne m'intéresse pas, je ne veux pas quitter AutoCAD. Mon but est de créer un bouton pour changer de profil. J'en suis rendu à ce point, mais je n'arrive pas à trouver la suite: ^C^C_.+options;8; Cette action m'appelle les options en allant directement sur l'onglet profils, mais pour valider le profil qui m'intéresse et le rendre courant, c'est une autre histoire! :( Une autre méthode?
-
Enlever puis remettre une variable dans un bouton
bonuscad a répondu à un(e) sujet de LUDWIG dans Personnalisation, macros, DIESEL
Voilà une réponse en diesel (pour les LT) C'est toujours la même technique: utiliser les variables USERxx pour stocker une valeur. Donc on pourrait définir un bouton comme ceci ^C^C_select;\useri1;$M=$(getvar,osmode);osmode;3;_align;_p;;\\\\\\osmode;$M=$(getvar,useri1); NB: Pas d'espace après le dernier ";" et tout ça sur une seule ligne Après essai il se revèle que cela marche en cas de réponse de 2 ou 3 points. En faite la dernière pause sert, si on a choisi 2pt, à répondre Oui ou Non pour mettre à l'échelle. Moi aussi je vais mettre dans un coin l'astuce de Serge à propos de la boucle faite avec CMDACTIVE, cela pourra servir ;) -
Salut Ludwig Essaye plutôt avec ceci ;) (setq dxf_ent (entget (car (entsel)))) (setq nam_lay (cdr (assoc 8 dxf_ent))) (setq def_lay (tblsearch "LAYER" nam_lay)) (cdr (assoc 70 def_lay)) ;Etat du calque gelé ou verrouillé (cdr (assoc 62 def_lay)) ;Numéro de la couleur du calque, si négatif:calque eteint (cdr (assoc 6 def_lay)) ;Type de ligne du calque Voir l'aide pour informations complémentaire sur les code 70 62 et 6 Bruno V.
-
un SCRIPT : pour ouvrir les dessins (par exemple)
bonuscad a répondu à un(e) sujet de rebcao dans Personnalisation, macros, DIESEL
Salut Je ne peut retenir ma fougue, Tramber va dire que je met du Lisp partout. Ce que je te propose en fait, est une routine pour FABRIQUER ton SCRIPT Si tu execute le code suivant, un fichier OPEN_FOLDER.SCR va être généré dans le dossier en cours. Ce script va donc ouvrir chaque dessin du dossier en cours, faire un zoom tout et fermer celui-ci en sauvegardant. (defun c:open_folder () (command "_sh" "dir *.dwg/b>files.txt") (setq file_dwg (open "files.txt" "r")) (setq file_scr (open "open_folder.scr" "w")) (while (setq dwg (read-line file_dwg)) (write-line "_.open" file_scr) (write-line dwg file_scr) (write-line "_.zoom" file_scr) ;;mettre la commande que l'on veut (write-line "_all" file_scr) ;;mettre les options désirées de la commandes précédente (write-line "_.close" file_scr) (write-line "_no" file_scr) ) (close file_scr) (close file_dwg) ) La routine sera peut être à paufiner, mais elle fonctionne (j'ai essayé) ;) Soit tu lance directement le script dans AutoCAD avec la commande SCRIPT et tu sélectionne le fichier généré Soit tu te créer un raccourci de lancement avec l'option /b et le nom du fichier script ex: "C:\Program Files\AutoCAD 2002\acad.exe" /b "c:\dossier\open_folder.scr" NB: le smiley est involotaire dans le code, il faut comprendre (defun c: open_folder sans l'espace -
Après quelque manips en lisp, voici ce que l'on peut apprendre Extraits des résultats: (dictsearch (namedobjdict) "ACAD_GROUP") -> (-1 . ) (0 . "DICTIONARY") (5 . "55") (102 . "{ACAD_REACTORS") (330 . ) (102 . "}") (330 . ) (100 . "AcDbDictionary") (280 . 1) (281 . 1) (3 . "*A1") (360 . ) (3 . "*A10") (360 . ) (3 . "*A100") (360 . ) (3 . "*A1000") (360 . ) (3 . "*A10000") (360 . ) (3 . "*A100000") (360 . ) (3 . "*A100001") (360 . ) ...... Ceci pour 285418 entités ------ (dictnext ...) -> ((-1 . ) (0 . "GROUP") (5 . "56") (102 . "{ACAD_REACTORS") (330 . ) (102 . "}") (330 . d'entité: 40076ea8>) (100 . "AcDbGroup") (300 . "GROUPE DE TALUS NE PAS DETRUIRE") (70 . 3) (71 . 1)) ------ (entget ...) -> .... (3 . "GRP_TALUS_AUTOSURF_61") (360 . ) ..... Je pense que c'est purgable a travers une procédure. J'en possède une mais ce n'est pas moi qui l'ai écrite, et je retrouve pas le lien. Je sais que c'est sur le web Italien. Mais une recherche avec google avec: (dictsearch (namedobjdict) "ACAD_GROUP") devrait donner des résultats. Bonne chance
-
10 000 Membres ! mais où sont les Donateurs ???
bonuscad a répondu à un(e) sujet de rebcao dans CADxp, comment ça marche?
Bonjours à tous, Je me range sous l'avis de Ribbit. Je trouve ANORMAL que ce soit les membres les plus actifs qui soit les donateurs (c'est une constatation), alors qu'ils consacrent déjà pas mal de temps à répondre et à donner des solutions qui font GAGNER du temps et de L'ARGENT à ceux qui les ont posés (et à d'autres non-inscrits). Qu'ont-ils en échange : un remerciement quand il y en a un! C'est le monde à l'envers. Et ceux qui ne sont pas inscrit se "foutent" pas mal de ce genre de remarques. Je ne vais pas polémiquer plus longtemps. A chacun son libre arbitre ;) -
Maximilien, Pour les options des commandes en international, malheuresement rien ne peut t'aider à les trouver sur une version Française. Il faut, soit avoir bosser sur une version Anglaise, soit avoir un vocabulaire un peu étoffé en Anglais pour les trouver. Même moi, j'ai du mal des fois à trouver certaines options en Anglais. Dans un lisp (j'avais déjà donné cet exemple!) il faut utiliser (initget) (defun c:mnutextuel ( / cle_cod) (initget "Bonjour Aurevoir _Hello Goodbye") (setq cle_cod (getkword "\nChoix de l'option [bonjour/Aurevoir]? :")) (if (null cle_cod) (setq cle_cod "Hello")) (cond ((eq cle_cod "Hello") (print cle_cod) (prin1 " : Bonjour tout le monde") ) ((eq cle_cod "Goodbye") (print cle_cod) (prin1 " : Au revoir tout le monde") ) (T (print cle_cod) (prin1 " : Erreur") ) ) (prin1) ) Si tu execute ce code tu remarqueras que la fonction accepte aussi bien les options Francaises que Internationales. Soit tu entre "Bonjour" "B" "_Hello" "_H" "Aurevoir" "A" "_Goodbye" "_G". La fonction (getkword) pour cet exemple retournera toujours la version internationale si celle ci est définie dans (initget). Donc les tests des réponses devra se faire avec les options en language international. Ce qui veut dire que le portage du code sur une version Anglaise ne posera aucun problème. NB:Il n'y a qu'un seul underscore "_" dans initget qui spécifie que tu passe en International, toutes les options suivantes (sans underscore) sont considéré AUSSI en International.
-
Bonsoir Tramber, Pour _.-Editref , cette commande attend la sélection d'un objet. Celle ci peut être retourné par la fonction (entsel) qui sera accepté par Refedit. C'est à dire le nom d'entité et son point de sélection. Si tu ne veux pas à avoir à sélectionner les objets mais à les soumettre directement, il te faudra extraire un point connu ET valide de la dernière entité par exemple. Tu pourra alors créer une autosélection en utilisant par exemple: (cons (entlast) (list point_connu)) et soumettre ceci à la commande Refedit sans faire de pause pour la sélection. J'espère que j'ai été clair. ;) Bon Lisp
-
Une réponse toute bête Est ce que le mode RESOL ne serait pas activé dans l'EO ? donnant l'impression de saccades si le pas est petit. Mettre SNAPMODE à 0. Etpour les grips ne seraient-ils pas actif dans les blocs ? Ce qui pourait augmenter le temps de réponse. Mettre GRIPBLOCK à 0.
-
Salut, Essaye de voir si tu peux faire quelque chose dans la partie ***ACCELERATORS du fichier AutoCAD.MNS/MNU C'est une section dédiée aux raccourcis clavier.
-
Salut Je ne sais pas si ma réponse va t'aider. Toujours est-il que j'ai eu aussi un problème pour lancer une application externe en lisp depuis Autocad suivant la plateforme: windows XP/NT (NTFS) ou windows 98 ME 2000 (FAT32) sous version XP ou NT: (setq folder (substr (findfile "triangle.exe") 1 (- (strlen (findfile "triangle.exe")) 12))) (command "_shell" (strcat "triangle.exe -pcrq " "\"" folder "bonus.pol" "\"")) fonctionne sous les autres version: (setq folder (substr (findfile "triangle.exe") 1 (- (strlen (findfile "triangle.exe")) 12))) (command "_shell" (strcat "\"" folder "\"" "triangle.exe -pcrq " "\"" folder "bonus.pol" "\"")) donne le même résultat La diffèrence est minime mais l'interprétation est diffèrente suivant la plateforme. Je crois que tu vas être obligé de tatonner comme je l'ai fait car je n'ai pas d'explication a avancer sur ce phénomène d'interprétation sur la syntaxe du chemin fourni :mad: Voilà pour la réponse que je peux te faire Sii quelqu'un a des explications plus précices, je suis tout ouie.
-
Zut, chaque fois je me fais avoir avec les caractères "<" et ">" dans le copier-coller. (if (eq (getkword "\nProjection 2D dans SCU [Général/Courant]: ") "Wolrd") devient (if (eq (getkword "\nProjection 2D dans SCU [Général/Courant]"<"Courant">": ") "Wolrd") et (if (eq (getkword "\nEffacer la spline3D [Oui/Non] ") "No") devient (if (eq (getkword "\nEffacer la spline3D [Oui/Non]"<"Oui">" ") "No") Enlever les " (guillemets) de part et d'autre du signe ">" et "<" après le copier-coller.
-
Salut, Voilà ce que je te propose si ça peut résoudre ton problème. Démarche à suivre: utiliser le lisp pour convertir les entités SPLINE en POLYLIGNE "Splinés" Faire un "pedit" "joindre", ce qui a pour effet de retouver les segments "enveloppe", il te faut donc "spliner" le résultat de l'option joindre et le tour est joué. (defun c:spl3Dto2D ( / flag_erase old_osmd e l_dxf l_som 2d_lsom ) (setvar "cmdecho" 0) (initget "Général Courant _Wolrd Current") (if (eq (getkword "\nProjection 2D dans SCU [Général/Courant]: ") "Wolrd") (command "_.ucs" "_world") ) (initget "Oui Non _Yes No") (if (eq (getkword "\nEffacer la spline3D [Oui/Non] ") "No") (progn (princ "\nBien Chef, on conserve") (setq flag_erase T)) (setq flag_erase nil) ) (setq old_osmd (getvar "osmode")) (setq js (ssget "_X" '((0 . "SPLINE") (67 . 0) (410 . "Model")))) (cond (js (command "_.undo" "_begin") (setvar "osmode" 0) (repeat (setq n (sslength js)) (setq l_dxf (entget (setq e (ssname js (setq n (1- n)))))) (setq l_som (mapcar '(lambda (x) (trans x e 0)) (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) l_dxf)))) (setq 2d_lsom (mapcar '(lambda (x) (trans (list (car x) (cadr x) 0.0) 0 1)) l_som)) (command "_.pline" (foreach n 2d_lsom (command n)) ) (command "_.pedit" (entlast) "_spline" "") (if (not flag_erase) (entdel e) ) ) (setvar "osmode" old_osmd) (command "_.undo" "_end") ) (T (princ "\nAucune Spline trouvée") ) ) (setvar "cmdecho" 1) (prin1) )
-
Salut, Je t'invite à regarder les fonctions Lisp suivantes, l'une d'elle résoudra peut être ton problème. (getenv "ACAD") ou autre variable d'environnement (findfile "Atbash2.exe") recherche ce fichiers dans les dossier de recherche (setcfg) et (getcfg) Voir l'aide pour plus de précision.
-
Tester le nom d\'un bloc
bonuscad a répondu à un(e) sujet de dr.loveless dans Pour aller plus loin en LISP
Salut Si présence de bloc imbriqué, pour explorer la présence de sous-bloc tu peut aller voir la réponse que j'ai faite à http://www.cadxp.com/sujetXForum-3602.htm -
Remplacement de cercles par des blocs
bonuscad a répondu à un(e) sujet de bucheron dans Débuter en LISP
Ben moi aussi je vais apporté ma pierre. Didier te propose de faire un test d'égalité de nombre en passant par RTOS. Bien que cette solution fonctionne, tu peux obtenir la même chose avec la fonction (equal 0.0575427 (cdr(assoc 40 (entget ent))) 0.0000001) Le dernier élément est l'écart toléré pour la comparaison. Voilà pour la précision si tu te sens pas à l'aise avec les filtre de (ssget)
