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 Essaye avec (acet-plines-explode (ssget "x")) @+
  2. Tu as un Gremlin chez toi ;) Pour ton problème, me réponse te sied ? @+
  3. Patrick_35

    COPIER AVEC PT DE BASE

    Pour insérer la même chose dans plusieurs dessins via un script @+
  4. Le lisp modifié mais non testé et à affiner (defun c:grf(/ bg dirbox doc hd ele lst obj rep x y) (defun dirbox(txt / cdl rep) (if (setq cdl (vlax-create-object "Shell.Application")) (progn (and (setq rep (vlax-invoke cdl 'browseforfolder 0 txt 512 "")) (setq rep (vlax-get-property (vlax-get-property rep 'self) 'path)) ) (vlax-release-object cdl) ) ) rep ) (vl-load-com) (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (and (setq rep (dirbox "Sélectionnez le répertoire pour grouper les folios")) (setq lst (vl-directory-files rep "*.dwg" 1)) (progn (setq rep (vl-string-translate "\\" "/" rep) x 0.0 y 0.0 ) (or (eq (substr rep (strlen rep) 1) "/") (setq rep (strcat rep "/"))) (foreach ele (acad_strlsort lst) (setq obj (vla-insertblock (vla-get-modelspace doc) (vlax-3d-point (list x Y 0.0)) (findfile (strcat rep ele)) 1 1 1 0 ) ) (vla-getboundingbox obj 'bg 'hd) (setq bg (vlax-safearray->list bg) hd (vlax-safearray->list hd) ) (setq x (+ x (- (car hd) (car bg)) 10.0)) (vl-catch-all-apply 'vla-explode (list obj)) (vla-delete obj) ) (vla-purgeall doc) ) ) (vla-endundomark doc) (princ) ) @+
  5. Patrick_35

    COPIER AVEC PT DE BASE

    Salut En utilisant un bloc et en le décomposant ps : (command "_.*insert" ...) @+
  6. Salut On peut très bien rendre un calque inactif courant et même dessiner dessus (en objet), ce qui n'est pas le cas d'un calque gelé. @+
  7. Patrick_35

    fonction

    Salut Je doute que cela soit le résultat escompté mais répond à ta demande. (vl-remove-if-not '(lambda(x)(eq (type (eval x)) 'SUBR))(atoms-family 0)) Une autre solution pour retrouver tes petits. Au lancement d'Autocad, tu fais (setq liste (atoms-family 0)) Tu lances tes diverses routines et pour voir ce qui a été ajouté. (vl-remove-if '(lambda(x)(member x liste))(atoms-family 0)) @+
  8. Patrick_35

    Boîte de dialogue

    Salut Oui, sauf que je n'avais pas évolué et j'étais resté avec la commande classique réseau. Celle qui n'a plus de boite de dialogues. @+
  9. Le lisp modifié avec un regen incorporé --> V2.02 Rb.lsp
  10. Salut Ben oui, encore une ;) Essaye avec ATTREQ @+
  11. Patrick_35

    Boîte de dialogue

    Ah oui, je suis resté avec la commande reseau. Merci @+
  12. Patrick_35

    Boîte de dialogue

    @JUJUZAZA Elle a disparue depuis la 2013. Ce n'est pas ce qu'a fait de mieux Autodesk. @Turtle Avec le variable HPDLGMODE @+
  13. Bonjour Merci de tes tests VDH_Bruno Avec le fichier test de Lecrabe, le test 1 fonctionne mais prend en compte l'espace objet. Avec le test 2, cela ne fonctionne plus (pour l'affichage) mais évite l'espace objet. (defun c:test1() (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (vlax-for bl (vla-get-blocks doc) (vlax-for ent bl (vla-put-layer ent "0") (vla-put-color ent 0) (vla-put-linetype ent "ByBlock") (vla-put-lineweight ent -2) ) ) (vla-endundomark doc) (princ) ) (defun c:test2() (setq doc (vla-get-activedocument (vlax-get-acad-object))) (vla-startundomark doc) (vlax-for bl (vla-get-blocks doc) (and (eq (vla-get-islayout bl) :vlax-false) (vlax-for ent bl (vla-put-layer ent "0") (vla-put-color ent 0) (vla-put-linetype ent "ByBlock") (vla-put-lineweight ent -2) ) ) ) (vla-endundomark doc) (princ) ) C'est là ou je bloque/bug ;) Va comprendre. C'est aussi ce qui nous fait avancer, rendre les lisps le plus fiable possible. @+
  14. Patrick_35

    table des blocs

    Salut (defun c:commentblk () (setq comment "commentaire") (vlax-for b (vla-get-blocks (vla-get-activedocument (vlax-get-acad-object))) (and (eq (vla-get-islayout B) :vlax-false) (progn (setq n (vla-get-name B)) (vla-put-comments b comment) (print n) ) ) ) (princ) ) @+
  15. Salut @lecrabe Ce n'est pas ta carte graphique. J'ai exactement le même résultat que toi. Je me suis dit que c'est le vlisp qui passe mal. J'ai donc refais le lisp avec les codes dxf --> Idem. Je me suis dit que c'est la demande de sélection qui pose problème, donc je la supprime pour voir --> Idem. Grumf, commence à me titiller ce non affichage. Avec l'affichage de la demande de sélection ? --> Non. Je test avec uniquement le forçage des valeurs en vlisp --> Ok. Après mouts recherches et tests, il se trouve que c'est en testant si le bloc trouvé n'est pas un espace papier ou objet ou s'il a été choisis que l'affichage ne se fait pas. Je cherche à comprendre... @x_all Tu as uniquement chargé le lisp. Pour l'appeler depuis un lisp, tu fais (c:rb) @+
  16. C'est surprennant, car sur ma 2014 tout fonctionne correctement au niveau de l'affichage. Et sur un autocad classique ? En attendant, j'ai ajouté une fonctionnalité mais qui ralentit le résultat (v2.01) @+ Rb.lsp
  17. A cause de la fonction substr. Si la variable app à la même longueur que la variable nom_lisp, alors la formule (- (strlen app) (strlen nom_lisp)) retourne 0, ce que ne peut pas supporter la fonction substr qui elle commence toujours à 1. La fonctionnalité que tu regardes est prévu pour afficher par exemple RB.LSP Chargé......Tapez RB pour l'éxecuter. quand tu utilises la fonction lisp load au clavier (ou glisser/déposer à la souris ou encore avec _appload) et afficher ...RB chargé. quand tu utilises les fonctions autoload (chargement/lancement automatique de lisps) @+
  18. Lors de la sélection, tu valides pour faire tout, sinon tu choisis direcement à l'écran. ps : le (vl-load-com) était déjà intégré. @+
  19. Hello Grand Maître d'Autocad Ce n'est pas le plus compliqué Il faut réécrire le lisp De rien, c'est fait (v2.00) Rb.lsp
  20. Salut Normal, c'est juste la gestion des erreurs qui a été ajoutée. @+
  21. Salut Il est disponible Ici @+
  22. Salut Par exemple (defun AI_EDIT_ALT (/) (setq ALT (GetDicoPerso "Altimétrie")) (setq AiReseau (getreal "\nNouvelle Altimétrie (m): ")) ; (setq AncText "AncText") (while (setq sel (entsel "\nSélectionnez le texte à éditer: ")) (setq AncText (entget (car sel))) (setq EditText (strcat (substr (cdr (assoc 1 AncText)) 1 (- (strlen (cdr (assoc 1 AncText))) 16) ) (strcat (rtos AiReseau 2 2) "m / " (rtos (+ AiReseau ALT) 2 2) "NGF" ) ) ) (entmod (subst (cons 1 EditText) (assoc 1 AncText) AncText)) ) ) ps : non testé @+
  23. Pas tout à fait, le if regarde une valeur non nil Par exemple (if (setq a 45)(alert"Oui")(alert "Non")) @+
  24. Salut Cela peut-être un peu plus subtile que ça Par exemple, on peut se servir du or comme condition "tant que" pour atteindre une fonction et ne pas attendre forcément une valeur en retour. (or nil nil nil (alert "Ma Fonction")) En reprennant mon exemple et qui ne lance pas la boite d'alerte (or nil T nil (alert "Ma Fonction")) La même chose est faisable avec le AND (logique inversé au or --> non nil) ps : (gile) aime bien ce genre de subtilité mais pas facile à aborder au début. pps : dans le message #4, tu as (if (not nom)(setq nom "")) peut être traduit par (or nom (setq nom "")) @+
  25. Salut Rien n'empêche avant de repartitionner le DD de regarder dans le bios si la détection automatique du DD est activée. Un petit rappel si la commande sous dos existe encore est d'utiliser sys. @+
×
×
  • 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é