Aller au contenu

Patrick_35

Membres
  • Compteur de contenus

    6 374
  • Inscription

  • Dernière visite

  • Jours gagnés

    30

Tout ce qui a été posté par Patrick_35

  1. Salut Ma petite contribution (defun c:maxat(/ doc ent lst sel) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (and (ssget (list (cons 0 "insert") (cons 66 1))) (progn (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (setq lst (cons (vla-get-textstring (car (vlax-invoke ent 'getattributes))) lst)) ) (vla-delete sel) (alert (strcat "La valeur max est : " (car (vl-sort lst '>)))) ) ) (vla-endundomark doc) (princ) ) @+
  2. Patrick_35

    état de calque

    Salut Et avec GEF ? @+
  3. Salut Je vois que tu commences à rentrer dans les subtilités du dcl et du lisp ;) La réponse d'-Olivier- est excellente. @+
  4. Patrick_35

    Problème avec pat.lsp

    Salut J'aime la réponse succincte. :blink: Je vais donner encore une piste, regarde si tu ouvres bien tout tes fichiers avec autocad et voir si par exmemples tu as la bonne version, qu'il ne faut pas récuperer, etc... @+
  5. Salut Extrait di site en question Tes icones, c'est pour quelle utilisation ? Si c'est pour un message d'alerte, on peut aussi utiliser MsgBox @+
  6. Patrick_35

    Problème avec pat.lsp

    Je voulais vérifier que l'ObjectId passait bien sur une 64, ce que tu me confirmes. Là, on dirait que c'est sur le dossier que l'on a un problème. Tu as les droits ? Il reste assez de place sur le disque ? Tu n'as pas un nombre limité de fichiers ? Une autre personne ou un autre Autocad n'utilise pas déjà un dessin du dossier ? Les fichiers ne sont pas en lecture seul ? En faisant une copie de tes dessins dans le même dossier, cela fonctionne ? @+
  7. Patrick_35

    Problème avec pat.lsp

    Salut C'est un problème avec l'ObjectId en 64 bits J'en ai profité pour mettre à jour ObjectDbx pour les versions 2013 Dis-moi si c'est ok pour que je fasse la même chose avec MAT. ps : c'est mis à jour sur mon blog (v1.11) @+
  8. Non, du tout. C'est à mon avis un problème de boucle ou de variable si tu ne retrouves pas tout. Tu as une 1ère boucle pour la 1ère boire de dialogue et un seconde boucle qui s'imbrique dans la première pour la seconde boite de dialogue. Tu peux aussi afficher les boites de dialogues les unes sur les autres. C'est suivant les gouts. L'exemple de MAT est de permettre une sélection à l'écran. Dans ce cas, pas 50 solutions. Si tu veux un exemple de deux fenêtres ou plus qui se superposent, regarde le lisp JAV en cliquant sur le bouton Sélection puis ajouter @+
  9. Sur mon blog indiqué dans ma signature @+
  10. Salut Tu as des fonctionnalités que je ne connaissais pas. C'est apparues sur quelle version ? Il va falloir que je me mette au gout du jour ;) @+
  11. Non, on ne la décharge par mais on la ferme pour la réouvrir ensuite. Si tout est mis dans des variables, rien n'est perdu. Fait un test avec MAT en sélectionnant un bloc ou attribut et regarde le résultat @+
  12. Salut ;;; listSavedLayerstates ;;; Returns a list of all layer states ;;; by Serge Camiré, www.cadnovation.com ;;; ;;; Since layer 0 is always involved in a drawing, thus in any subsequent saved layer state, ;;; we scan this layer. ;;; ;;; Receive: ;;; no parameters ;;; Returns ;;; LIST or nil (defun listSavedLayerstates ( / return ) (cond ((not (setq return (entget (cdr (assoc 330 (entget (tblobjname "layer" "0"))))))) (setq return nil)) ((not (setq return (cdr (assoc 360 return)))) (setq return nil)) ((not (setq return (member (cons 3 "ACAD_LAYERSTATES") (entget return)))) (setq return nil)) (t (setq return (mapcar 'cdr (vl-remove-if-not '(lambda (x) (= 3 (car x))) (entget (cdadr return))))) ) ) return ) ; By Patrick_35 (defun c:elman(/ doc lm) (setq doc (vla-get-activedocument (vlax-get-acad-object)) lm (vlax-create-object (strcat "AutoCAD.AcadLayerStateManager." (itoa (atoi (getvar "acadver"))))) ) (vla-startundomark doc) (vla-setdatabase lm (vla-get-database doc)) (mapcar '(lambda(x)(vl-catch-all-apply 'vla-delete (list lm x))) (listSavedLayerstates)) (vlax-release-object lm) (vla-endundomark doc) (princ) ) @+
  13. Salut Il suffit de fermer la boite de dialogue pour la réaficher ensuite Un extrait du lisp MAT (while (and (/= resultat 0) (/= resultat 1) ) (new_dialog "mat" dcl_id) .... (action_tile "chbl" "(done_dialog 2)") (action_tile "chat" "(done_dialog 3)") (action_tile "cancel" "(done_dialog 0)") (action_tile "accept" "(done_dialog 1)") (setq resultat (start_dialog)) (cond ((eq resultat 1) .... ) ((eq resultat 2) (rech_bl) ) ((eq resultat 3) (rech_blat) ) ) ) (unload_dialog dcl_id) @+
  14. Je trouve que tu te complique la vie Pour le fichier XPT, tu fait un export depuis ta palette d'outils Pour les menus, j'ai fait un menu partiel en texte (mns) que tu ajoutes s'il n'existe pas Il faut aussi laisser aux utilisateurs la possibilité de gérer les outils comme ils veulent. @+
  15. Salut Voici un exemple que j'ai trouvé pour ajouter un bouton sur une toolbar Visual LISP Example (vl-load-com) (defun c:Example_AddToolbarButton() ;; This example creates a new toolbar called TestToolbar and inserts a ;; toolbar button into it. The toolbar is then displayed. ;; To remove the toolbar after execution of this macro, use the Customize Menu ;; option from the Tools menu. (setq acadObj (vlax-get-acad-object)) (setq currMenuGroup (vla-Item (vla-get-MenuGroups acadObj) 0)) ;; Create the new toolbar (setq newToolBar (vla-Add (vla-get-Toolbars currMenuGroup) "TestToolbar")) ;; Assign the macro string the VB equivalent of "ESC ESC _open " (setq openMacro (strcat (Chr 3) (Chr 3) (Chr 95) "open" (Chr 32))) (setq newButton (vla-AddToolbarButton newToolBar "" "NewButton" "Open a file." openMacro)) ;; Display the toolbar (vla-put-Visible newToolBar :vlax-true) ) Pour les palettes, je n'ai rien trouvé à part utiliser la ligne de commande (command "'_ToolPalettes" "_import" Mon_fichier_xpt) @+
  16. Pour lire un fichier et tout mettre dans une liste (defun ouvrir () (setq ouvrir (getfiled "Selectionnez un fichier " "C:\\Users\\cx\\Desktop\\Infosave" "txt" 2)) (setq lecture_sauvegarde (open ouvrir "r")) (while (setq h (read-line lecture_sauvegarde)) (setq lst (cons h lst)) ) (close ouvrir) ) Ou encore, si c'est structuré (defun ouvrir () (setq ouvrir (getfiled "Selectionnez un fichier " "C:\\Users\\cx\\Desktop\\Infosave" "txt" 2)) (setq lecture_sauvegarde (open ouvrir "r")) (while (setq h (read-line lecture_sauvegarde)) (setq i (read-line lecture_sauvegarde)) (setq j (read-line lecture_sauvegarde)) (setq k (read-line lecture_sauvegarde)) (setq lst (cons (list h i j k) lst) ) (close ouvrir) ) Le résultat est dans la variable lst @+
  17. Patrick_35

    JAV dernier cri SVP ?

    Je pense qu'une reinstall ou réparation s'impose @+
  18. Patrick_35

    JAV dernier cri SVP ?

    A bien y reflechir, on dirait que tu as déjà une boite de dialogue définit avec le même nom pour JAV Je te propose de changer dans le lisp (foreach txt (list "opt : dialog {" par (foreach txt (list "jav : dialog {" et (new_dialog "opt" dcl "") par (new_dialog "jav" dcl "") @+
  19. Patrick_35

    JAV dernier cri SVP ?

    Ton erreur est en essayant la ligne de code que je t'ai donné ou en lancant JAV ? @+
  20. Patrick_35

    JAV dernier cri SVP ?

    Et en essayant en 1er cette ligne, quel est le résultat ? (sur la version qui ne fonctionne pas) (setq tmp (vl-filename-mktemp "opt" nil ".dcl")) Pour ensuite le fichier temporaire (vl-file-delete tmp) @+
  21. Patrick_35

    JAV dernier cri SVP ?

    Oui Regarde dans Autocad le répertoire des fichiers temporaire (Options --> Fichiers --> Emplacement du fichier de référence externe temporaire) Tu n'as peut-être pas la même chose entre les deux versions. @+
  22. Patrick_35

    JAV dernier cri SVP ?

    Salut JAV créé ses boites de dialogue par un fichier temporaire. Donc, il n'y a pas de raison qu'il ne les retrouvent pas. Maintenant, si tu as un répertoire temporaire de déclaré et qu'en réalité, il n'existe plus, c'est peut-être là le problème. Ou encore un problème avec des droits administrateur ? @+
  23. Oui, en ajoutant un argument à la fonction Par exemple (action_tile "diametre" "(verif_saisie \"diamétre\" $value)") (defun verif_saisie(qui nb) (or (eq (type (read nb)) 'REAL) (alert (strcat "Dans " qui " ,ce n'est pas un réel"))) ) Ps : j'ai pris un str comme exemple, mais ça pourrait être un entier @+
  24. Pas tout à fait Le fichier est écrasé s'il existe, sinon il est créé. Pour ajouter sur un fichier existant, tu as la fonction "a" (pour append) à la place du "w" (pour write) Pour compléter sur la fonction, il reste le "o" (pour open) Pour l'emplacement, tu lui indiques directement (open "d:/dir1/dir2/dir3/mon_fichier.txt" "w") Regade l'aide sup la fonction open, elle est très compléte. @+
  25. Ben, de la même manière que tu fais ton DCL ? (setq toto (open "mon_fichier.txt" "w")) (mapcar '(lambda(x)(write-line x toto)) liste_de_variables) (close toto) @+
×
×
  • 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é