Aller au contenu

LUDWIG

Membres
  • Compteur de contenus

    1 396
  • Inscription

  • Dernière visite

Tout ce qui a été posté par LUDWIG

  1. Bon j'ai pas tout suivi car je ne suis pas trop VBiste, mais ton exemple parle d'Attribut. Or, je veux changer la couleur de chaque entité constituant le bloc (ligne, attribut, hachure, cercle, polyligne, etc). En LISP, je ne sais pas comment sélectionner l'entité X qui appartient au bloc Z. Y-a-t'il un code de groupe particuler ? [Edité le 7/12/2004 par LUDWIG]
  2. Aïe ! Ca veut dire qu'il n'y a pas d'autres solutions ? Bon, j'ai lancé mon script. 130 Mo de fichiers au total. On va voir ce que ça donne.
  3. Quand j'enlève le "_close" de fin, le script s'execute bien. Mais comme j'ai plus de 1000 fichiers à traiter, je ne peux pas me permettre de tous les charger en même temps.
  4. Rebonjour, Quelqu'un connaîtrait--il un lisp qui permettrait de redéfinir tous les blocs d'un dessin en "calque 0, couleur DuBloc, etc" ? :exclam:
  5. Bonjour, J'ai un script qui est censé récupérer une série de dessins contenant des erreurs (merci Tramber pour l'idée d'utiliser Excel et merci le logiciel Pcatalog que je recommande). Mon problème est que mon script ne traite que le premier dessin de la liste. Quelqu'un a une idée ? filedia 0 recuperer C:\Temp\Traitement_symb\Resultat\BTEBPGA_00_COMPLEMENT.dwg\_archtick.dwg _qsave _close recuperer C:\Temp\Traitement_symb\Resultat\BTEBPGA_01_COMPLEMENT.dwg\_archtick.dwg _qsave _close recuperer C:\Temp\Traitement_symb\Resultat\BTEMESS-00.dwg\_none.dwg _qsave _close recuperer C:\Temp\Traitement_symb\Resultat\BTEHECE_03.dwg\_oblique.dwg _qsave _close recuperer C:\Temp\Traitement_symb\Resultat\BTEADMI_01.dwg\_oblique.dwg _qsave _close recuperer C:\Temp\Traitement_symb\Resultat\BTEPEP-00.dwg\_open30.dwg _qsave _close [...]
  6. LUDWIG

    Lignes de même longueur

    Je souhaiterais que cette invite soit du style "Choisissez la zone ou rechercher les lignes de longueur XXX ". S'il appuie direct sur entrée, la sélection est "_all" (ssget "X").
  7. LUDWIG

    Lignes de même longueur

    ah ouais "initget" c'est sympa, moi qui pensait mettre quantitié de "if" derrière mon "get" pour contrôler la saisie utilisateur...
  8. LUDWIG

    Lignes de même longueur

    Merci pour vos aides. sssetfirst, je savais pas trop comment l'utilisé donc merci pour la correction. J'ai rajouté la possibilité de tolérance. Question : à quoi ça sert de déclarer les variables après le defun ? Car j'ai vu des lisp fonctionnant bien sans cette déclaration... (defun c:ml2 (/ e_ref LIGNE LONG selection jeu en e_name n LONGn tol) (sssetfirst nil nil) (setq LIGNE (entget (setq e_ref (car (entsel "\nLigne de référence: "))) ) ) (setq tol (getdist "\nSélectionnez une tolérance: ")) (setq LONG (distance (cdr (assoc 11 LIGNE)) (cdr (assoc 10 LIGNE)))) (setq SELECTION (ssadd e_ref)) (princ (strcat "\nChoisissez la zone ou rechercher les lignes de longueur " (rtos long) ) ) (setq jeu (ssget '((0 . "LINE"))) n 0 ) (if jeu (repeat (sslength jeu) (setq en (entget (setq e_name (ssname jeu n))) n (1+ n) ) (setq LONGn (distance (cdr (assoc 11 en)) (cdr (assoc 10 en)))) (If (equal LONG LONGn tol) (ssadd e_name SELECTION) ) ) ) (sssetfirst SELECTION SELECTION) (setq SELECTION nil jeu nil ) (princ) )
  9. LUDWIG

    Lignes de même longueur

    Merci bien pour cette correction si rapide ! Je vais regardé mes erreurs et en tirer des leçons... Question : j'ai enlevé la commande erase à la fin de ton lisp, mais comment avoir mes éléments sélectionnés (en pointillés) prêts à "subir" une autre commande (move, rotate, erase...) ? [Edité le 30/11/2004 par LUDWIG]
  10. Je n'arrive pas à faire un lisp qui sélectionnerai les lignes de même longueur que la ligne sélectionnée. HELP (defun c:ml (/ LIGNE X Y Z LONG jeu n Xn Yn Zn LONGn) (setq LIGNE (entsel "Ligne de référence\n")) ;(setq X (- (cadr(assoc 11 LIGNE))(cadr(assoc 10 LIGNE)))) ;(setq Y (- (caddr(assoc 11 LIGNE))(caddr(assoc 10 LIGNE)))) ;(setq Z (- (cdr(caddr(assoc 11 LIGNE)))(cdr(caddr(assoc 10 LIGNE))))) ;(setq LONG sqrt (+(* X X) (* Y Y) (* Z Z))) (setq LONG (distance '(cdr(assoc 11 LIGNE))'(cdr(assoc 10 LIGNE)))) (setq SELECTION (ssadd LIGNE)) (prompt "\nChoisissez la zone ou rechercher les lignes de longueur ") (print LONG) (prompt " :\n") (setq jeu (ssget)'((0 . "LINE"))) (Foreach n Jeu ;(setq Xn (- (cadr(assoc 11 n))(cadr(assoc 10 n)))) ;(setq Yn (- (caddr(assoc 11 n))(caddr(assoc 10 n)))) ;(setq Zn (- (cdr(caddr(assoc 11 n)))(cdr(caddr(assoc 10 n))))) ;(setq LONGn sqrt (+(* Xn Xn) (* Yn Yn) (* Zn Zn))) (setq LONGn (distance '(cdr(assoc 11 n))'(cdr(assoc 10 n)))) (If (= LONG LONGn)(ssadd n SELECTION)) )
  11. LUDWIG

    logand ?

    Ich spreichst nicht deutsch
  12. LUDWIG

    logand ?

    je ne sais pas si ça peut intéresser j'avais fait un lisp qui donne les puissances des nombres (mais qui ne m'a pas servi...) : exemple : 2500- -> (2 6 7 8 11) soit 2^ 2+2^ 6+2^ 7+2^ 8+2^ 11 ;**************************************** ; ---------Décomposer binaire ---------- ;**************************************** ;by Ludwig Desmier (defun c:bin (/ NB n LISTn) (setq NB (getreal "\nEntrez le réel :\n")) (setq n 14) ; attention ne pas mettre plus car après 2^15 est un nombre trop grand pour autocad --> erreur fatale (while (> NB 0) (while (<= (+ NB 1) (expt 2 n)) (setq n (- n 1))) (setq NB (- NB (expt 2 n))) (setq LISTn (cons n LISTn)) ) (print LISTn) (print) )
  13. Ah j'ai trouvé. J'ai ajouté ça à mon fichier mns : ***ACCELERATORS [CONTROL+"RIGHT"]'_-pan;0,0,0;-10,0,0 [CONTROL+"DOWN"]'_-pan;0,0,0;0,+10,0 [CONTROL+"UP"]'_-pan;0,0,0;0,-10,0 [CONTROL+"LEFT"]'_-pan;0,0,0;10,0,0
  14. LUDWIG

    Variables de VBA à LISP

    Oui, il faudrait que je m'y mette, mais l'absence d'interface graphique est génante...
  15. LUDWIG

    Variables de VBA à LISP

    Mais c'est intéressant ça ! J'étais parti sur une addition de codes binaires (1/2/4/8/16/32/64/128/256 etc) (à la manière de OSMODE)qui ne représentait qu' UNE variable que je transférait vers LISP, celui-ci redécomposait cette variable en plusieurs. Mais le problème c'est que dans mon code LISP pour retrouver les valeurs, j'utilise (expt 2 n) et comme on est limité à un nombre de 32000 et des poussières, ça me limite mon n à 14 variables. Avec le registre, je n'aurais plus ce problème et en plus ça me sauvegardera mes variables. Merci. Me reste plus qu'à voir comment on écrit/lit les clés de registre dans vba...
  16. LUDWIG

    Variables de VBA à LISP

    ah ! mais ? Comment qu'on inscrit/récupère des valeurs dans la base de registre depuis vba et lisp ?
  17. Je cherche à m'affranchir du DCL pour les boîtes de dialogue. Je créé donc un Userform sous VBA. Mais d'après un message précédent : Comment fait-on quand on a besoin de passer plus de 5 variables d'un type de VBA vers LISP ou l'inverse ? (désolé si la réponse est évidente, en tout cas elle ne l'est pas pour moi. Pas encore)
  18. LUDWIG

    LISP ET VBA

    Comment fait-on quand on a besoin de passer plus de 5 variables d'un type de VBA vers LISP ou l'inverse ?
  19. Ah ces fichues parenthèses ! Je les avais doublées car la commande s'écrit elle-même entre parenthèses et que dans certains cas on met des parenthèses après setq [(setq A (length B))]. Quand à (cdr (assoc 410 n)) , c'est que je me suis dit que dans mon "layouts" était une liste d'objets dont il fallait extraire le nom. Un peu comme dans mon programme précédent : [...] (setq PROP (entget (setq ENT (ssname JEU N) (setq CALQUE (cdr (assoc 8 PROP)))[...] Mais bien sûr, maintenant que je l'écris, je me rend compte de mon erreur et je comprends mieux le fonctionnement de certains trucs... Si j'avais fait (cdr (assoc 410 n)) sur une entité, ça m'aurait donné le nom de l'espace où il se situe... En gros je ne peux pas demander dans quel espace se situe mon espace... J'adore ce forum ! Au fur et à mesure que j'écris, je comprends des choses...
  20. Je cherche à faire un lisp qui supprime toutes les présentations. (defun c:Layout_killer (/ n layouts) (setvar "ctab" "Model") (setq layouts ((layoutlist))) (foreach n layouts (command "presentation" "EF" n)))) Mais celui-ci ne fonctionne pas. Quelqu'un pourrait me dire le problème (mais sans me donner la réponse du programme histoire que je cherche un peu...). J'imagines déjà que je donne la présentation "n" à effacer qu'il n'apprécie pas... Chaque éléments de la liste "layout" représente une présentation et il me doit falloir en extraire le nom ? Pourtant : (defun c:Layout_killer (/ n layouts) (setvar "ctab" "Model") (setq layouts ((layoutlist))) (foreach n layouts (command "presentation" "EF" (cdr(assoc 410 n))))) ne fonctionne pas non plus. [Edité le 18/11/2004 par LUDWIG]
  21. Il est vieux ce messge mais je réponds quand même : t'es sûr qu'avant None Found ya pas marqué "L'objet est sur un calque verrouillé." ?
  22. Mais c'est ça que je ne sais pas faire : affecter une commande à un bouton. Je crois qu'il faut éditer AutoCAD.mnu (à moins que ce soit un autre fichier) ?
  23. LUDWIG

    STB ou CTB

    moi aussi j'ai eu le pb et la seule solution trouvée : copier-coller des entités vers les coordonnées d'origine, puis coller présentation par le designCenter. Ma réponse n'apporte rien par rapport à celle de Fabcad ? Si, si, elle apporte une bonne question: une bonne ceinture noire serait-elle a même de créer un lisp qui fasse ça tout seul ?
  24. Encore modifié : ;**************************************** ; -- Déplacer entité sur calque indicé -- ;**************************************** ; By Ludwig DESMIER qui est tout fier de sa réussite !!! (defun c:FDP ( / cmd n jeu ind nb ent prop calque TL CO GEL Nouv DEF) ; cmd : valeur de la variable cmdecho / n : le compteur / jeu : le jeu de sélection / ind : l'indice ajouté aux nouveaux calques ; nb : le nombre d'entités dans le jeu de sélection / ent : le nom de l'entité en cours ; prop : la liste des propriétés de l'entité en cours / calque/TL/CO/GEL : nom/Type de ligne/Couleur/Etat de l'entité en cours ; Nouv : le nouveau nom de calque de l'entité en cours / DEF : table de définition du calque (graphscr) (setq cmd (getvar "CMDECHO")) (setvar "CMDECHO" 0) (prompt "\nChoisissez les entité(s) à mettre sur un calque indicé") (setq n 0) (setq jeu (ssget)) (setq ind (getstring T "\nDonnez le nom de l'indice (_FDP)")) (If (= ind "") (setq ind "_FDP")) (setq nb (sslength jeu)) (repeat nb (setq prop (entget (setq ent (ssname jeu n)))) (setq calque (cdr (assoc 8 prop))) (setq DEF (tblsearch "LAYER" calque)) (setq TL (cdr (assoc 6 DEF))) (setq CO (cdr (assoc 62 DEF))) ;(setq GEL (cdr (assoc 70 DEF))) l'entité selectionnée n'est forcément pas gelée. (setq Nouv (strcat calque ind)) (If (=(tblsearch "LAYER" Nouv) nil) (command "-calque" "nouv" Nouv "CO" CO Nouv "TL" TL Nouv "")) (command "chprop" ent "" "ca" Nouv "") (setq n (+ 1 n)) ) (setvar "CMDECHO" cmd) (prin1) ) (prompt "\nFDP : Déplacer sur un calque identique mais indicé")
  25. je fais des copies multiples sur toute l'étendue de mon dessin. Quand j'ai besoin de déplacer ma vue, soit je fais un panoramique avec le bouton du milieu de la souris, soit je fais un zoom+ à droite puis zoom- à gauche à la molette. Je voudrais savoir si il y a moyen d'effectuer ce panoramique sans solliciter la souris et sans quitter ma commande (style : une main sur la souris qui clique pour coller les copies, l'autre sur les flèches du clavier pour déplacer l'écran).
×
×
  • 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é