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 Tramber Tout dépend de Microsoft, mais je pense que cela ne devrait pas changer en raison du portage des applications. Reste à voir si avec un 64 bits, cela fonctionne correctement. Pour ta culture perso, tu as une doc en français. @+
  2. Alors, le plus simple est de rechercher dans les process (avec wmi pour info). Tu retrouves le fichier ouvert. (defun recherche_process(qui / item lst meth1 meth2 obj WMI) (setq WMI (vlax-create-object "WbemScripting.SWbemLocator") meth1 (vlax-invoke WMI 'ConnectServer nil nil nil nil nil nil nil nil) meth2 (vlax-invoke meth1 'ExecQuery "Select * from Win32_Process") ) (vlax-for item meth2 (and (setq obj (vlax-get item 'CommandLine)) (vl-string-search (strcase qui) (strcase obj)) (setq lst (cons obj lst)) ) ) (foreach item (list WMI meth1 meth2) (vlax-release-object item) ) lst ) Par exemple (recherche_process "notepad") @+
  3. Salut Oui, tu as certaines fonctions avec le visual lisp, mais beaucoup plus de possibiltés avec Scripting.FilesystemObject @+
  4. Salut La solution serait peut-être de regarger la liste des fichiers ouvert avec wmi. Une autre idée, si tu souhaites utiliser Scripting.FilesystemObject est soit de renommer le fichier et une erreur est produite si le fichier est déjà ouvert (testé avec un document ouvert avec le bloc note, et le fichier a été renommé, pas d'erreur :( ) ou de le déplacer (pas testé, mais vu sur divers forums) Mais, c'est quoi qui bloque exactement pour ne pas utiliser la solution avec open ? @+
  5. Salut Logiquement si N1>N2, cela ne peut pas être l'autre (N1<N2) Donc, on test la première condition et si c'est ok, on fait notre routine. Si la condition ne répond pas, donc N1<N2, on fait la suite. (if (condition (si vrai...) (si faux ...))) @+
  6. Salut Les portes sont des blocs avec attributs ? Si oui, tu as LSTATT pour compter en fonction ou pas des attributs. @+
  7. Salut Une réponse bête, mais l'épaisseur des lignes est suffisante par rapport au tracé ? Par exemple, le traceur imprime au mini des épaisseurs de 0.3 et si tu as des épaisseurs de 0.05 et 0.1, tu ne verras pas de différence. Une autre réponse, les calques sont imprimables ? @+
  8. Salut Quelque chose dans ce style ? (command "_.pline" (while (not (zerop (getvar "cmdactive"))) (command pause))) @+
  9. Oui ps : message encore plus court, trois lettres ;) Pour être un peu plus prolixe, je suis sur une version 2009 @+
  10. Salut Si, mais 2011... @+
  11. Eh bien, petit à petit l'oiseau fait son nid ;) Pour répondre à la question sur getattributes. Tu inséres le bloc avec la variable attreq à 0 Tu fais ensuite (setq att (vlax-invoke (vlax-ename->vla-object (entlast)) 'getattributes)) Ensuite, un (nth 3 att) pour trouver l'attribut surface. Et pour lui indiquer la valeur, un (vlax-put (nth 3 att) 'textstring Surf) Pour voir toutes les données de l'attribut (vlax-dump-object (nth 3 att)) @+
  12. Ben oui Tu as trouvé tout seul, c'est bien :D Si tu veux connaitre plus de choses en vlisp sur ta poly, tu fais (vlax-dump-object (vlax-ename->vla-object (entlast)) T) ps : le T pour le vlax-dump-object sert à montrer les méthodes applicables Par exemple, un (vlax-invoke mon_bloc 'getattributes) pour avoir la liste des attributs du bloc sélectionné @+
  13. Salut Tu te fais une mise en page aux petits oignons, et ensuite, tu utilises MPL pour dupliquer cette mise en page aux autres présentations. @+
  14. Salut D'une manière plus propre en autolisp (setq jspoly (vl-remove-if-not '(lambda(x)(eq (car x) 10)) (entget (entlast))) pt1 (car jspoly) lst (cdr jspoly) dist 0.0 ) (foreach pt2 lst (setq dist (+ dist (distance (cdr pt1) (cdr pt2))) pt1 pt2 ) ) (if (eq (logand (cdr (assoc 70 (entget (entlast)))) 1) 1) (setq dist (+ dist (distance (car jspoly) (last jspoly)))) ) (princ (strcat "\nLe périmètre est de : " (rtos dist))) Et plus simple en vlisp (princ (strcat "\nLe périmètre est de : " (rtos (vlax-get (vlax-ename->vla-object (entlast)) 'length)))) @+
  15. Salut (setq jspoly (car (entlast))) Quand tu regardes certaines fonctions, regarde les valeurs qui sont retournées Si tu fais (entlast) sur la ligne de commande, la valeur retournée est par exemple <Nom d'entité: 7430e6e8>, ce qui correspond à une entité Donc un (entget (entlast)) devrait logiquement m'indiquer les codes dxf de ma poly @+
  16. Salut Il est possible que l'affichage ne corresponde pas au scu. Essayes sur la ligne de commande repere puis entrée. @+
  17. Patrick_35

    Extension pour AutoLISP

    Salut J'avais fait cette fonction pour un choix multiple de fichiers en lisp. Par contre, tu as raison en ce qui concerne les viewports. Lire les valeurs, ok, mais les écrire :( @+
  18. Patrick_35

    .dcl non reconnu...

    Salut C'est que le fichier DCL n'est pas dans les chemins de recherche d'autocad @+
  19. Salut un sujet de 2004 ;) @+
  20. Patrick_35

    SCRIPT ET PRESENTATIONS

    Salut Ben oui, en ligne de commande. Mais si tu pouvais développer... @+
  21. Salut Avec ONG @+
  22. Salut Dans les codes dxf Le point centre --> 10 La hauteur --> 41 La largeur --> 40 En vlisp Le point centre --> vla-get-center La hauteur --> vla-get-height La largeur --> vla-get-width @+
  23. Salut Je suis amusé à faire un petit truc (defun atoms (lst / chx ele lon new sel tab tri) (defun sel(lst) (reverse (cdr (reverse (cdr lst)))) ) (defun chx(lst) (cons (car lst) (if (eq (last lst) "m") (append (sel lst) lon) (append lon (sel lst)) ) ) ) (setq lst (vl-sort lst '(lambda(a B)(< (car a) (car B)))) tab (car lst) lst (cdr lst) ) (repeat (length (sel tab)) (setq lon (cons 0 lon)) ) (setq tot (chx tab)) (while (setq new (car lst)) (setq tri (sel new)) (if (eq (car new) (car tab)) (if (eq (last new) "m") (setq tot (cons (car tot) (mapcar '+ (cdr tot) (append tri lon)))) (setq tot (cons (car tot) (mapcar '+ (cdr tot) (append lon tri)))) ) (setq ele (cons tot ele) tot (chx new) ) ) (setq tab new lst (cdr lst) ) ) (reverse (cons tot ele)) ) (atoms '(("id1" 10 21 "m")("id2" 15 2 "p")("id0" 12 10 "p")("id2" 16 20 "m")("id1" 1 10 "m")("id2" 2 20 "p"))) (atoms '(("id1" 10 21 44 "m")("id2" 15 2 8 "p")("id0" 12 10 13 "p")("id2" 16 20 22 "m")("id1" 1 10 2 "m")("id2" 2 20 2 "p"))) ps : le 0 = "" @+
  24. Salut Je rejoins Jalna, utilise les xrefs. Perso, je procède de cette manière : Je crée un répertoire Archi pour conserver l'original Je crée ensuite un répertoire xref dans lequel j'y intègre le plan archi, mais nettoyé. Si un nouveau plan arrive, no problèmo, je nettoie le nouveau plan, que je sauvegarde la place de l'ancien (dans le répertoire xref) @+
  25. Salut Le plus simple est de faire une recherche sur le forum. C'est un sujet qui a été largement abordé. De plus, tu as des personnes ici qui maitrise ce langage et qui ne sont pas avare de conseils. @+
×
×
  • 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é