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. Maintenant si (cdr (assoc 281 (entget (cdr (assoc 330 (entget (cdr (assoc -2 (tblsearch "block" "Mon_Bloc"))))))))) @+
  2. Salut Je pense que le problème vient qu'un bloc peut-être inséré en précisant le facteur d'échelle x, y et z; alors que d'autres avec seulement 1 facteur d'échelle. Tu peux le voir grace à la case coché ou pas dans la commande bloc --> Mettre à l'échelle uniformément Ou avec cette fonction (pas trouvé le code dxf) (vla-get-blockscaling (vla-item (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) "Mon_Bloc")) @+
  3. Salut C'est à cause de la variable dans le 1er code Quand tu utilises une liste, l'argument derrière un quote n'est pas évalué, donc erreur. Tu peux aussi l'écrire comme cela (list '(0 . "INSERT") (cons 8 (car PosLst))) Deux sujets à lire http://cadxp.com/topic/29334-listes-arguments-de-fonctions/ http://cadxp.com/topic/28642-arguments-et-variables/ @+
  4. Salut Ah oui, tu as raison. J'ai modifié le lisp en conséquence. @+
  5. Salut Il faut ajouter (vl-load-com) au début du lisp. Eternel oubli @+
  6. Bonjour J'ai indiqué à un collègue qu'on pouvait être identifié par autocad si on le souhaitait. Après quelques recherches, j'ai trouvé comment faire et j'ai trouvé amusant d'ajouter la voix et qu'Autocad dise bonjour au monsieur (à placer dans la valise au démarrage d'_appload). (defun c:qui(/ meth1 meth2 ok sapi wmi) (or (vl-bb-ref 'Patrick_35_Hello) (progn (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_ComputerSystem") sapi (vlax-create-object "Sapi.SpVoice") ) (and (setq ok (vlax-get (vlax-invoke meth2 'itemindex 0) 'username)) (vlax-invoke sapi "Speak" (strcat "Bonjour " (vl-string-subst " " "." (substr ok (+ (vl-string-search "\\" ok) 2)))) 0) ) (mapcar 'vlax-release-object (list meth2 meth1 WMI sapi)) (vl-bb-set 'Patrick_35_Hello T) ) ) (princ) ) (c:qui) Pour la voix en français @+
  7. Salut De mémoire, je vu ou fais (je ne sais plus) un truc qui permet de récupérer les variables d'environnement DOS. C'est sur la base des API. Je me demande même si ce n'est pas dans un exemple que j'ai donné qui donne toutes les indications sur le PC Reste à le retrouver, mais pas pour l'instant (pas le temps) @+
  8. Salut Tu peux donner tes arguments pour la fonction steal ? (ou de la manière dont tu appels cette fonction) @+
  9. Salut Tu as ce lisp mais qui fonctionne pour geler/dégeler des calques. Il faut remplacer dans le lisp (if (eq (getvar "tilemode") 0) (setq tag :vlax-false) (setq tag :vlax-true) ) (vlax-for lay (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) (foreach cal lst (and (wcmatch (vla-get-name lay) cal) (vla-put-freeze lay tag) ) ) ) par (if (eq (getvar "tilemode") 0) (setq tag :vlax-true) (setq tag :vlax-false) ) (vlax-for lay (vla-get-layers (vla-get-activedocument (vlax-get-acad-object))) (foreach cal lst (and (wcmatch (vla-get-name lay) cal) (vla-put-layeron lay tag) ) ) ) @+
  10. Tu peux pousser le bouchon plus loin, à savoir, sauver la variable def dans les registres (avec setenv/getenv) ou dans le dessin (avec les ldata) @+
  11. Salut (setq def "Automatiquement") (initget "Automatiquement Manuellement Non") (or (setq OptionIns (getkword (strcat "Placement des textes [Automatiquement/Manuellement/Non] <" def "> : "))) (setq OptionIns def) ) @+
  12. Salut Merci pour tes explications qui pourront servir à plus d'un. Mais tu peux aussi te simplifier la tâche avec GoPlot @+
  13. Patrick_35

    petit programme

    Salut Pour sélectionner un objet (setq ent (entsel)) Pour récupérer les codes dxf de l'objet sélectionné (setq ent (entget (car ent))) Pour vérifier que c'est un bloc (eq (cdr (assoc 0 ent)) "INSERT") récupere le nom du bloc (et pas ceux qui sont anomymes comme pour les blocs dynamiques) (setq nom (cdr (assoc 2 ent))) Créer un jeu de sélection avec le bloc sus nommé (setq js (ssget "x" (list (cons 0 "insert") (cons 2 nom)))) Faire une boucle pour changer le facteur d'échelle de chaque bloc (setq n 0) (while (setq ent (ssname js n)) (setq ent (entget ent)) Et changer le facteur d'échelle (command "_.scale" (cdr (assoc -1 ent)) "" (cdr (assoc 10 ent)) "2.54") Passer au suivant (setq n (1+ n)) Ce qui donne au final (defun c:e254() (and (setq ent (entsel)) (setq ent (entget (car ent))) (eq (cdr (assoc 0 ent)) "INSERT") (setq nom (cdr (assoc 2 ent))) (setq js (ssget "x" (list (cons 0 "insert") (cons 2 nom)))) (setq n 0) (while (setq ent (ssname js n)) (setq ent (entget ent)) (command "_.scale" (cdr (assoc -1 ent)) "" (cdr (assoc 10 ent)) "2.54") (setq n (1+ n)) ) ) (princ) ) ps : tu peux aussi utiliser la commande filtrer et ensuite changer directement le facteur d'échelle dans les propriétés @+
  14. Salut Comme tu es sur une version pleine et pour éviter de tout perdre (defun c:att(/ ent txt) (and (setq ent (nentsel "\nSélectionnez l'attribut : ")) (setq ent (vlax-ename->vla-object (car ent))) (eq (vla-get-objectname ent) "AcDbAttribute") (setq txt (getstring "\nTexte : ")) (vla-put-textstring ent txt) ) (princ) ) @+
  15. Patrick_35

    Latence dans un plan

    Je ne me permettrai surtout pas de penser à ta place, ni à la place de quiconque.
  16. Patrick_35

    Latence dans un plan

    On est bien sur la même longueur d'onde. @+
  17. Salut Un exemple qui passe en revue les attributs d'un sélection de blocs en autolisp (if (setq js (ssget "_x" (list (cons 0 "insert")))) (progn (setq n 0) (while (setq ent (ssname js n)) (setq ent (entget ent) n (1+ n) ) (if (= (cdr (assoc 66 ent)) 1) (progn (setq sub (entget (entnext (cdr (assoc -1 ent))))) (while (/= (cdr (assoc 0 sub)) "SEQEND") (if (eq (cdr (assoc 0 sub)) "ATTRIB") (progn (princ "\nC'est un attribut") ) ) (setq sub (entget (entnext (cdr (assoc -1 sub))))) ) ) ) ) ) ) @+
  18. Patrick_35

    Latence dans un plan

    Salut Je trouve la réponse de Rebcao un peu cavalière. J'ai la solution, on se voit pour que je te la donne en privé et les autres se débrouillent même si cette solution pourrait les intéresser (il y a un copyright sur les solutions ?) Heureusement que c'est un forum d'entraide et que d'autres contributeurs n'ont pas cette mentalité. @+
  19. Patrick_35

    Latence dans un plan

    Salut Le dessin est long à charger et à s'afficher, mais très rapide pour la sauvegarde. C'est logiquement dut à la génération graphique du dessin. La preuve, lors d'un zoom étendu, le dessin met un certain temps à s'afficher. Ce que je ferai à ta place. 1) Une présentation par plan (pour limiter le nombre d'objets à générer). 2) Un zoom étendu par présentation, espace objet compris et toujours sauvegarder son dessin en ayant toutes les présentations avec ce zoom (étendu) 3) Définir la variable LAYOUTREGENCTL à 2 si la mémoire du pc le permet 4) Il existe plusieurs variables qui permettent d'accélérer l'affichage. Fais une recherche à ce sujet sur le forum. @+
  20. Salut (menucmd "M=$(edtime,$(getvar,date),DD/MO/YYYY)") Tu peux aussi jouer avec la variable CDATE @+
  21. Salut Je pense que ton bloc est déjà dans le dessin et le fait de l'insérer de nouveau via le designcenter ou autre sans le redéfinir ne changer rien. Donc, redéfinir ce bloc par insertion (fichier, designcenter sur un autre dessin + clic droit) puis ensuite faire une synchro (attdef ou battman) @+
  22. Salut Le plus simple est de ne plus donner de macro ;) Sinon, plus sérieusement, avec la commande _graphscr à la fin. @+
  23. Patrick_35

    FENETRE EO / EP

    Salut En générale, quand j'ai ce type de message d'erreur, je relance Autocad. C'est qu'il y a eu une merde auparavant. Si tu veux éviter l'objet. (defun c:aon(/ def doc ent lay sel tot) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object)) def (vla-get-activelayout doc) tot 0 ) (vla-startundomark doc) (vlax-for lay (vla-get-layouts doc) (and (ssget "x" (list (cons 0 "VIEWPORT") (cons 410 (vla-get-name lay)))) (progn (vla-put-activelayout doc lay) (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (eq (vla-get-viewporton ent) :vlax-false) (/= (vla-get-name lay) "Model") (setq tot (1+ tot)) (vla-put-viewporton ent :vlax-true) ) ) (vla-delete sel) ) ) ) (vla-put-activelayout doc def) (princ (strcat "\n" (itoa tot) " fenêtre(s) d'activée(s)")) (vla-endundomark doc) (princ) ) (defun c:aoff(/ def doc ent lay sel tot) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object)) def (vla-get-activelayout doc) tot 0 ) (vla-startundomark doc) (vlax-for lay (vla-get-layouts doc) (and (ssget "x" (list (cons 0 "VIEWPORT") (cons 410 (vla-get-name lay)))) (progn (vla-put-activelayout doc lay) (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (eq (vla-get-viewporton ent) :vlax-true) (/= (vla-get-name lay) "Model") (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-viewporton (list ent :vlax-false)))) (setq tot (1+ tot)) ) ) (vla-delete sel) ) ) ) (vla-put-activelayout doc def) (princ (strcat "\n" (itoa tot) " fenêtre(s) de désactivée(s)")) (vla-endundomark doc) (princ) ) @+
  24. Patrick_35

    FENETRE EO / EP

    Salut J'ai trouvé un peu de temps pour te faire quelque chose. Il faut être patient car on a l'impression qu'Autocad se fige, mais il tourne. Je pense que c'est dû au changement de présentations. (defun c:aon(/ def doc ent lay sel tot) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object)) def (vla-get-activelayout doc) tot 0 ) (vla-startundomark doc) (vlax-for lay (vla-get-layouts doc) (and (ssget "x" (list (cons 0 "VIEWPORT") (cons 410 (vla-get-name lay)))) (progn (vla-put-activelayout doc lay) (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (eq (vla-get-viewporton ent) :vlax-false) (setq tot (1+ tot)) (vla-put-viewporton ent :vlax-true) ) ) (vla-delete sel) ) ) ) (vla-put-activelayout doc def) (princ (strcat "\n" (itoa tot) " fenêtre(s) d'activée(s)")) (vla-endundomark doc) (princ) ) (defun c:aoff(/ def doc ent lay sel tot) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object)) def (vla-get-activelayout doc) tot 0 ) (vla-startundomark doc) (vlax-for lay (vla-get-layouts doc) (and (ssget "x" (list (cons 0 "VIEWPORT") (cons 410 (vla-get-name lay)))) (progn (vla-put-activelayout doc lay) (vlax-for ent (setq sel (vla-get-activeselectionset doc)) (and (eq (vla-get-viewporton ent) :vlax-true) (not (vl-catch-all-error-p (vl-catch-all-apply 'vla-put-viewporton (list ent :vlax-false)))) (setq tot (1+ tot)) ) ) (vla-delete sel) ) ) ) (vla-put-activelayout doc def) (princ (strcat "\n" (itoa tot) " fenêtre(s) de désactivée(s)")) (vla-endundomark doc) (princ) ) @+
×
×
  • 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é