-
Compteur de contenus
6 374 -
Inscription
-
Dernière visite
-
Jours gagnés
30
Type de contenu
Profils
Forums
Calendrier
Blogs
Tout ce qui a été posté par Patrick_35
-
[Résolu] Petit souci dans une routine
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Maintenant si (cdr (assoc 281 (entget (cdr (assoc 330 (entget (cdr (assoc -2 (tblsearch "block" "Mon_Bloc"))))))))) @+ -
[Résolu] Petit souci dans une routine
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
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")) @+ -
[Résolu] Pourquoi est-ce différent
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
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/ @+ -
Salut Ah oui, tu as raison. J'ai modifié le lisp en conséquence. @+
-
Désactiver un calque dans une fenêtre ?
Patrick_35 a répondu à un(e) sujet de DaWeeD_Gab dans AutoCAD 2010
Salut Il faut ajouter (vl-load-com) au début du lisp. Eternel oubli @+ -
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 @+
-
Utiliser variable systeme dans un script
Patrick_35 a répondu à un(e) sujet de SF.Designer dans Personnalisation, macros, DIESEL
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) @+ -
demande d'aide pour un lisp (STEAL)
Patrick_35 a répondu à un(e) sujet de cactus_ben dans AutoCAD 2012
Salut Tu peux donner tes arguments pour la fonction steal ? (ou de la manière dont tu appels cette fonction) @+ -
Désactiver un calque dans une fenêtre ?
Patrick_35 a répondu à un(e) sujet de DaWeeD_Gab dans AutoCAD 2010
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) ) ) ) @+ -
[Résolu] Petite option dans un initget
Patrick_35 a répondu à un(e) sujet de DenisHen dans Pour aller plus loin en LISP
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) @+ -
[Résolu] Petite option dans un initget
Patrick_35 a répondu à un(e) sujet de DenisHen dans Pour aller plus loin en LISP
Salut (setq def "Automatiquement") (initget "Automatiquement Manuellement Non") (or (setq OptionIns (getkword (strcat "Placement des textes [Automatiquement/Manuellement/Non] <" def "> : "))) (setq OptionIns def) ) @+ -
Imprimer un PLT sans avoir AutoCAD
Patrick_35 a répondu à un(e) sujet de famaice dans Tutoriaux AutoCAD
Salut Merci pour tes explications qui pourront servir à plus d'un. Mais tu peux aussi te simplifier la tâche avec GoPlot @+ -
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 @+
-
Attributs grisés et non modifiables
Patrick_35 a répondu à un(e) sujet de illidan05 dans AutoCAD 2012
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) ) @+ -
Je ne me permettrai surtout pas de penser à ta place, ni à la place de quiconque.
-
On est bien sur la même longueur d'onde. @+
-
[Résolu] Z=0 et élévation=0 aussi...
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
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))))) ) ) ) ) ) ) @+ -
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é. @+
-
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. @+
-
[Résolu] Obtenir la date d'aujourd'hui
Patrick_35 a répondu à un(e) sujet de DenisHen dans Débuter en LISP
Salut (menucmd "M=$(edtime,$(getvar,date),DD/MO/YYYY)") Tu peux aussi jouer avec la variable CDATE @+ -
[Résolu] Fenêtre (F2) qui s'ouvre de temps en temps pendant des macro
Patrick_35 a répondu à un(e) sujet de baba0000000000 dans Personnalisation, macros, DIESEL
Ben oui, où est le problème ? @+ -
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) @+
-
[Résolu] Fenêtre (F2) qui s'ouvre de temps en temps pendant des macro
Patrick_35 a répondu à un(e) sujet de baba0000000000 dans Personnalisation, macros, DIESEL
Salut Le plus simple est de ne plus donner de macro ;) Sinon, plus sérieusement, avec la commande _graphscr à la fin. @+ -
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) ) @+
-
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) ) @+
