Aller au contenu

stephan35

Membres
  • Compteur de contenus

    345
  • Inscription

  • Dernière visite

Tout ce qui a été posté par stephan35

  1. Bonjour à tous ! Voilà une ptit bout de code récupéré qui fonctionnait bien jusqu'à ce que je fasse : (@Macro_remplace_texte "Tables d'écoutes" "'" "\'" ) Et oui il cherche mon ' et le remplace toujours par \' qui contient un ' !!!! Une petite récursivitée non souhaitée ..... (defun @Macro_remplace_texte ($source $search $rempl / ) (while (/= (wcmatch $source (strcat "*"$search"*")) nil) (setq $source(vl-string-subst $rempl $search $source)) ) $source ) Merci à vous ! Bientôt le week-end ..... et avec du soleil ????? (en bretagne ...) :casstet:
  2. Chapeau BAS !, En écriture, éffectivement ! Mais Le traitement serat-il plus rapide ???? Oops, meaculpa, effectivement, mais en fait, ils portent des noms complêtements différents ... citation extraite du message original: le (cons 8 (list ***)) devient inopérant Ce qui me parait logique Cela revient à sélectionner tous les calques, cette partie du filtre ne sert donc à rien. J'ai du mal à m'exprimer correctement !!! Ce que je voulais te dire, c'est que cette syntaxe est fausse pour un filtre ! ,on ne peut imbriquer une liste dans un cons, différe de la base de création des entités, donc refoulée, (pour un filtre bien entendu , je me répète, surement l'âge ...) A+
  3. Super ! Voilà un problème résolu et optimisé !!!! Il est vrai que je n'avais peut-être pas fourni tous les éléments pour y arriver correctement, soit ! Le principale c'est d'y arriver , et c'est le cas ! Pour conclure: On a supprimé les 2 boucles foreach imbriquées qui multipliait les requêtes ssget inutilement, car, dans tous les cas de figures je n'avais forcément qu'un seul bloc cartouche insérer dans l'un des 13 calques génériques commencant par les caractères générique "folio_****", ce qui revient à dire (ssget "X" (list (cons 8 "222_*"))) pour le folio 122 , donc 13 requêtes de gagnées (multipliée par le reste ...) Puis idem pour les cartouches, il suffisait de construire un filtre and / or pour ajouter des cartouches dans la liste du filtre (cons -4 " [b]<[/b]or")(cons 2 "Cartouch1")(cons 2 "Cartouche2)(cons 2 "Cartouch3")(cons -4 "or [b] >[/b]") ; mélange des méthodes fournies par bred et patrick_35 (cadxp) encore merci à eux ! (setq &filtre (list (cons -4 " (foreach $cartouche &L_PDG (setq &filtre (append &filtre (list (cons 2 (nth 0 $cartouche))))) ) (foreach $cartouche &Liste_des_cartouches (setq &filtre (append &filtre (list (cons 2 (nth 0 $cartouche))))) ) (setq &filtre (append &filtre (list (cons -4 "or>")))) (foreach #tmp &Liste_des_folios ;Extrait les titres folio (setq &tmp (@SQL_& (STRCAT "SELECT TRIM(T1),TRIM(T2),TRIM(IND),TRIM(FOL) FROM TRANCHE WHERE FONC='SOM' and FOL='" (@000 #tmp #nbdigit) "' ")) $t1 "?" $t2 "?" $ind "?" $nua "?" ) (if &tmp (setq $t1 (nth 0 (nth 0 &tmp)) $t2 (nth 1 (nth 0 &tmp)) $ind (nth 2 (nth 0 &tmp))) (progn ; Recherche des données dans le cartouche !!!! ; &L_PDG et &Liste_des_cartouches doit être initialisé (setq &selection (ssget "X" (append (list (cons 8 (strcat (itoa #tmp) "_*"))) &filtre))) (if &selection (prompt (strcat "\nCartouches trouvés pour le folio " (itoa #tmp) " : " (itoa (sslength &selection)))) (prompt (strcat "\nCartouches trouvés pour le folio " (itoa #tmp) " : 0" )) ) ) ) (dcl_ListView_AddItem FOLIO (list (itoa #tmp) $t1 $t2 $ind $nua )) ) Patrick_35, désolé je n'ai pas pris le temps de fournir toutes les fonctions pour tester mon bout de lisp ! Merci à tous ! a+
  4. Salut patrick_35 ! Bien vue pour les caractères génériques ! ça fonctionne : (cons 8 "118_*) Cependant la strucutre des données n'est pas formaté en liste imbriquée donc le (cons 8 (list ***)) devient inopérant :( Mais ça me fait avancer ! donc merci !!!! A+
  5. Merci BRED ! Je teste et je diffuse ! Je vais rejouter bêtement dans mes while le (not &selection) pour éviter de continuer à scruter quand j'ai trouvé !!! Si quelqu'un se rappelle de la syntaxe pour ajouter des "and" dans le filtre ??? ça m'interesse !!! PS: j'ai 14000 entités dans mon dwg :casstet: (Mais je pense qu'il y a pire ...) Merc à vous !
  6. Merci TRAMBER pour cette précision ! Mais pas très juste ... Effectivement j'entendait par bloc, le nom du bloc (cons 2 "BLOC") Par contre je peux rajouter le type d'entité soit (cons 0 "INSERT") N'est ce pas ??? A+
  7. Bonjour à tous ! Voici l'exposé litéraire de mon problème: J'ai environ 600 calques portant un préfixe numérique suivi d'une désignation. (22_LATERAL,22_FORM,22_EXT 23_XXX, 23_YYY etc) Ces calques servent à classer mes entités par folio, le préfixe numérique étant le numéro de folio. La norme dit que mon cartouche devrait être inserer dans un calque **_NEUTRE (** étant la partie numérique de mon folio) Donc si j'ai 150 Folios, j'ai 150 cartouches placés dans le calque ***_NEUTRE Mes cartouches portent des noms différents suivant leur utilisation (...) Je dois rechercher un bloc pour y lire ou modifier le contenu de ses attributs. Pour ceci: j'ai 2 listes qui contiennent la liste de mes blocs (cartouches) j'ai 1 liste qui contient la liste des folios a analyser (numérique) &Liste_des_folios Ma première boucle foreach scrute chaque folio Ma deuxième boucle foreach effectue un ssget sur ma liste des pdg pour chaque calque Ma deuxieme boucle foreach effectue un ssget sur ma liste cartouches pour chaque calque (foreach #tmp &Liste_des_folios ;Extrait les titres folio (setq &tmp "requete sql : qui fonctionne <0.015 s") (if &tmp (setq $t1 (nth 0 (nth 0 &tmp)) $t2 (nth 1 (nth 0 &tmp)) $ind (nth 2 (nth 0 &tmp))) (progn ; Recherche des données dans le cartouche !!!! ; &L_PDG et &Liste_des_cartouches doit être initialisé (foreach $cartouche &L_PDG (foreach $layer (list "NEUTRE" "ACTIF" "5" "FCOTES" "NOMENCLATURE" "PUISSANCE" "REPERE") (if (ssget "X"(list (cons 8 (strcat (itoa #tmp) "_" $layer)) (cons 2 (nth 0 $cartouche))) ) (progn (print (strcat "\nAnalyse de "(nth 0 $cartouche)" dans " (itoa #tmp) "_" $layer)) ) ) ) ) (foreach $cartouche &Liste_des_cartouches (foreach $layer (list "NEUTRE" "ACTIF" "5" "FCOTES" "NOMENCLATURE" "PUISSANCE" "REPERE") (if (ssget "X" (list(cons 8 (strcat (itoa #tmp) "_" $layer)) (cons 2 (nth 0 $cartouche)))) (progn (print (strcat "\nAnalyse de "(nth 0 $cartouche)" dans " (itoa #tmp) "_" $layer)) ) ) ) ) ) ) ;;; (alert (strcat (itoa #tmp) $t1 $t2 $ind)) (dcl_ListView_AddItem FOLIO (list (itoa #tmp) $t1 $t2 $ind $nua )) ) Mon gros soucis est le temps de traitement de chaque itération sur le SSGET ~ 30 secondes !!! [surligneur] (ssget "X" (list (cons 8 "calque") (cons 2 "bloc"))) n'est pas rapide [/surligneur] Comment accèlerer le process ??? Comment optimises le process ??? Merci
  8. Bonjour ! Perso, je vois la chose très compliquée, même avec OpenDCL (Ex ObjectDCL), Je n'est peut-être pas bien compris ta demande,mais, je ne vois pas l'intérêt de la chose, car, le controle des calques se suffit à lui même , je ne vois ce que l'on peut y apporter ??? Explique les choses autrement et ton besoin différemment ? ;) A+
  9. Salut patrick_35 ! en fait, je voudrais juste pouvoir exporter l'arborescence de la base de registre correspondante aux données voulue, ceci afin de pouvoir réimporter et paramétrer à l'identique et par défaut 26 PC ... ;) Merci !
  10. Bonjour, Avons nous accès dans la base de registre, au contenu défini avec SetCFG et GetCFG ??? Exemple 1: (setcfg (strcat "AppData/BHZ/Config/Lisp/" (getvar "DWGPREFIX")) (strcat $drive "SCRIPT\\#Zoom#Save#Export.Lsp")) ou Exemple 2: (setcfg "AppData/BHZ/Config/IMPRIMANTE" "1") :casstet: Merci !
  11. No soucis Bred ! A+
  12. (vla-put-PrinterStyleSheetPath FILES "c:\\mon répertoire") Files étant défini dans les autres post ou : (vla-put-PrinterStyleSheetPath (vla-get-files (vla-get-preferences (vlax-get-acad-object))) "c:\\mon répertoire") Merci et a+ ;)
  13. L'essayer c'est l'adopter ! Merci Gile A+
  14. C'était un exemple ! Oui le froeach répond nil , je change d'exemple .... :P fonction @toto qui retourne une liste au format (number "string1" "string2") j'ai besoin de tester le nth 0 pour faire un cond donc si je ne souhaite pas passer par une variable intermédiaire (@toto "fichier) ; Je ne suis pas sur de mon résultat retourne nil si erreur (if (@toto "fichier) (if (= (nth 0 (@toto "fichier)) 0)(progn .... ....... ....) (progn (alert "Pas possible") .... ) ) (alert "Plantage") ) Sinon effectivement, (@toto "fichier) ; Je ne suis pas sur de mon résultat retourne nil si erreur (if (setq tmp (@toto "fichier)) (if (= (nth 0 tmp) 0)(progn .... ....... ....) (progn (alert "Pas possible") .... ) ) (alert "Plantage") ) ??? :casstet: Il n'y a pas urgence ! c'est juste pour ma connaissance personnelle ;) Merci et a+
  15. Bonjour, j'aimerai régler un problème de développement, Imaginons que je dois extraire une liste de fichiers ("string" "string" ...) et qu'ensuite je dois faire un test sur chaque élément de la liste, (setq &liste (list "1" "2" "3")) (foreach $tmp &liste (print $tmp) ) Jusque là facile ! Maintenant la liste &liste est issue d'une fonction (setq &liste (getfile "*.plt" "C:/")) Maintenant je souhaite faire la même chose sans passer par la variable &liste !!! :casstet: (foreach $tmp (getfile "*.plt" "C:/") (print $tmp) ) Et maintenant losrque mon résultat de mon getfile est nil ça plante !!! Je peut faire un (if (getfile ...) (foreach $tmp (getfile ... Mais ça ne me plait pas ! Donc ma demande est : comment fait-on pour executer un test sur le résultat d'une fonction dans rappeler 2 fois la fonction et sans passer par une variable intermédiaire ??? :casstet: Ps: milles excuses pour la longueur ...
  16. Merci Bred .... Afin de digérer correctement des solutions toutes offertes, Il n'y avait pas de solutions avec le (vla-get ???) et dans ce cas contraire, comment est-tu arriver à cette solution, ou comment obtenir la liste des "methodes" ou "propriété" ??? Et merci !
  17. Bonjour, Bien inspiré par une méthode qui m'a été fournie (par les vétérans ... ;) ) je cherche à modifier le chemin d'accès aux fichiers .ctb "Plot Style" et pas trouvé (peut-être pas assez cherché ???) (setq ch (vla-get-files (vla-get-preferences (vlax-get-acad-object)))) (vla-get-supportpath ch); ça on connait ! (vla-get-plotstylename ch) ; ??? :casstet: Merci
  18. Bonjour patrick_35 En utilisant ton exemple : TIP TOP ! :D Juste le strcat qui manque ... (defun delenv (var / REP VERS) (if (getenv var) (progn (setq vers (vl-string-subst "" (substr (getvar "ACADVER") 5) (getvar "ACADVER"))rep (car (vl-registry-descendents (strcat "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\R" vers "\\")))) (if (vl-registry-delete (strcat "HKEY_CURRENT_USER\\Software\\Autodesk\\AutoCAD\\R" vers "\\" rep "\\FixedProfile\\General\\") var) (princ (strcat "\n Variable " var " supprimée !.")) (princ (strcat "\n Variable " var " non supprimée.")) ) ) (princ (strcat "\n Variable " var " n'existe pas")) ) (princ) ) Voili voilou, pour moi ça roule ! Merci à tous ! [Edité le 4/5/2007 par stephan35]
  19. Merci à tous, Faute de solution satisfaisante j'utiliserai la solution proposée par bonuscad : ^C^CUSERS1;"NEUTRE", ..... Celle-ci aurait pu fonctionner, mais je développe en relatif, a tout moment mon arborescence peut changer (indexée sur une autre variable), Hormis le coté fonctionnel (c'est le résultat qui compte) à mon avis çette solution aurais tendance à semer des fichiers un peu partout ... PS: il est vrai que j'aurais aussi pu faire le tout en lisp .... :casstet:
  20. Y a pas de soucis ! :exclam:
  21. FRAPPADINGUE !!!! (setvar "users1" (strcat (chr 34) "NEUTRE" (chr 34)));$M=$(if,$(eq,$(getenv,Gestion_Projet),"1"),^C^C(rcalque $(getvar,users1));_line;,^C^C(@mess 1)) pour mettre les guillemets (chr 34) à cause du \ qui est considéré comme une attente utilisateur ! Dans ce cas, il n'y aurait pas l'équivalent en diesel afin d'éviter de passer par une variable ???
  22. Bon, Les parametres sans guillemets fonctionnent bien : (@mess 1) ne pose aucun soucis, Par contre pour le (rcalque "neutre") c'est embêtant de repasser par un fonction pour executer une fonction ! :casstet: Je cherche un peu de mon coté !
  23. J'ai voulu revérifier, je l'avais tenté et il l'interprête comme une attente d'entrée au clavier :casstet: Merci ...
  24. Bonjour, Me voilà rendu dans le gas-oil ! humm humm humm ... Un petit coup de pouce svp : J'ai récupéré grace aux véterans (encore merci à vous) un petit exemple qui me permet grace à une variable de faire un choix entre 2 sous fonctions pour un même boutons, seulement dans mon cas mes guillemets sont ignorés $M=$(if,$(eq,$(getenv,Gestion_Projet),"1"),^C^C(rcalque "NEUTRE");_line;,^C^C(@mess 1)) donne (rcalque NEUTRE) !!! :casstet: Merci !
  25. stephan35

    Sacré échange !

    Oui .... et plus précisément dans celle d'une école maternelle .... NANANEREU !!!!! Que le meilleur gagne ( :casstet: ) Vive la france !
×
×
  • 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é