Aller au contenu

Fraid

Membres
  • Compteur de contenus

    2 523
  • Inscription

  • Dernière visite

  • Jours gagnés

    23

Tout ce qui a été posté par Fraid

  1. Comme promis (defun encodeURI (str / ind ret pre) (setq ret "" pre "") (if (and str (> (strlen str) 0)) (progn (if (and (> (strlen str) 6)(= (substr str 1 6)) "https:") (setq pre (substr str 1 (1+ (vl-string-position (ascii "/") str nil T))) str (substr str (1+(strlen pre)) (strlen str)) ) ) (foreach cod (vl-string->list str) (cond ( (or (and (>= cod 48)(<= cod 57)) (and (>= cod 65)(<= cod 90)) (and (>= cod 97)(<= cod 122)) (member cod (vl-string->list "-_.!~*'()")) ) (setq ret (strcat ret (chr cod))) ) ((< cod 128) (setq ret (strcat ret "%"(dec2hex cod)))) ((> cod 127) (setq ind (/ (- cod 128) 64) ret (strcat ret "%C" (itoa(+ ind 2)) "%" (dec2hex (- cod (* ind 64)))) ) ) ) ) ) (setq ret nil) ) (if ret (strcat pre ret) ret) ) (defun decodeURI (str / ret pre hex flag ind) (setq ret "" pre "" hex "") (if (and str (> (strlen str) 0)) (progn (if (and (> (strlen str) 6)(= (substr str 1 6)) "https:") (setq pre (substr str 1 (1+ (vl-string-position (ascii "/") str nil T))) str (substr str (1+(strlen pre)) (strlen str)) ) ) (foreach char (mapcar 'chr (vl-string->list str)) (cond ((and (null flag)(/= char "%")) (setq ret (strcat ret char))) ((and (null flag)(= char "%"))(setq flag 0)) ((and (= flag 0)(= char "C"))(setq flag 1)) ((and (= flag 0)(null ind)) (setq hex (strcat hex char)) (if (= (strlen hex) 2) (setq ret (strcat ret (chr (hex2dec hex))) flag nil hex "") ) ) ((= flag 0) (setq hex (strcat hex char)) (if (= (strlen hex) 2) (setq ret (strcat ret (chr (+ (hex2dec hex) (* 64 ind)))) flag nil hex "" ind nil) ) ) ((= flag 1)(setq ind (-(atoi char)2) flag nil)) ) ) ) (setq ret nil) ) (if ret (strcat pre ret) ret) ) ;cadxp (defun hex2dec (str / n s) (setq n (strlen str)) (if (zerop n) n (+ (* (if (numberp (read (setq s (substr str 1 1)))) (atoi s) (- (ascii (strcase s)) 55) ) (expt 16 (1- n)) ) (hex2dec (substr str 2)) ) ) ) (defun dec2hex (nb / sub) (defun sub (nb n / r d) (if (= 0 (/ nb (expt 16 n))) "" (progn (setq r (rem nb (expt 16 (1+ n)))) (strcat (sub (- nb r) (1+ n)) (if (< (setq d (/ r (expt 16 n))) 10) (itoa d) (chr (+ 55 d)) ) ) ) ) ) (sub nb 0) ) je comprend que cela ne passionne pas grand monde...
  2. bon, j'avais pourtant essayé avec apply, j'avais du m’emmêler les parenthèses. Maintenant que cela fonctionne, je posterais du propre demain.
  3. Merci Gile pour ce lien cela fait pourtant longtemps que je cherche, jamais tombé sur cette page... super ce n'est pas toujours évident de trouver les bonnes requêtes.
  4. Bonjour, Depuis ce matin que je suis la dessus. J'ai bien réussi avec '= en argument mais pas la fonction lambda... sans chercher à optimiser (defun coup-if-not (fct lst / posl ret ltmp) (setq posl 0) (repeat (length lst) (if (not ltmp)(setq ltmp (append ltmp (list (nth posl lst))))) (if ((eval fct) (nth posl lst) (nth (1+ posl) lst)) (setq ltmp (append ltmp (list (nth (1+ posl) lst)))) (setq ret (append ret (list ltmp)) ltmp nil) ) (setq posl (1+ posl)) ) ret ) (defun coup-if (fct lst / posl ret ltmp) (setq posl 0) (repeat (length lst) (if (not ltmp)(setq ltmp (append ltmp (list (nth posl lst))))) (if (not((eval fct) (nth posl lst) (nth (1+ posl) lst))) (if (nth (1+ posl) lst)(setq ltmp (append ltmp (list (nth (1+ posl) lst))))) (setq ret (append ret (list ltmp)) ltmp nil) ) (setq posl (1+ posl)) ) (if ltmp (append ret (list ltmp)) ret) ) Cela doit être eval qui n'est pas adapté... je ne sait plus quoi testé une petite piste?
  5. (logior (lsh r 16) (lsh g 8) b) Bonjour Gile, J'ai toujours du mal avec les fonctions "bitiennes" Sur ta page d'intro au lisp et celle de Didier, ce n'est pas super clair et surtout pas dans l'aide. J'arrive à m'en passé avec des pirouettes mathématiques, mais j'aimerais bien comprendre. y a t'il une page consacrées que je n'aurais pas trouvée. Merci
  6. allez, pour une fois je vais prendre du temps pour t'aider, d'habitude je suis bien trop court dans mes post... C'est une étape importante de "maîtriser" ENTMAKE, même si on le lâche une fois qu'on connais le vla. voici l'exemple mini pour créer un calque. (defun addlay (nom) (if (null (tblsearch "LAYER" nom)) (entmake (list (cons 0 "LAYER") (cons 100 "AcDbSymbolTableRecord") (cons 100 "AcDbLayerTableRecord") (cons 2 nom) (cons 70 1);état du calque ) ) ) nom ) Pour l'instant oublie ton rvb, inutile car tu peux trouver une couleurs avoisinante en ACI avec le carnet de couleur. Le RVB est intéressant quant on fait des rendus, ou que l'on a plus de 225 calques avec une couleurs différentes. Sinon, pour un plan ???? Certain préconise l'utilisation de ENTMAKEX pour les calques, je n'ai jamais compris pourquoi... Sinon, je vais revenir à ton code. Tu n'as pas du tester avec un csv de plus de 2 lignes, car la variable ListLine n'est pas remis à nil donc cumule les lignes. De plus tu n'ignore pas la 1er lignes qui contient la description. Tu ne teste pas l’existence du calque avant de la créer. et il me semble que tu peut tout faire dans la première boucle au fur et à mesure de la lecture. avec tous ça, tu as déjà de bonne piste. aller, courage, tu vas finir par la montée cette marche, cela fait des années que tu essaye...
  7. Bonjour, Je vais me permettre de te donner quelques conseils. Tu n'as pas déclaré de variables après ton defun tu devrais avoir (/ FichLstCalq LstCalqLine nomCalque ...) Sinon elle deviennent globales. (on te l'a déjà dit plusieurs fois) Tu fait 2 fois (findfile "ECPS_Calques.csv") une fois suffit, tu place le chemin dans une variable plutôt que de faire un (exit) tu devrais parcourir le disque et dans une boucle foreach, j' évite la fonction command, je pense qu'il faudrait mieux utiliser entmake ou vla-add de toute façon essayer de se passer de command, ce n'est pas qu'un simple sport de programmeur, car cette fonction simule l'entrée utilisateur d'Autocad, c'est donc très lourd. mais vraiment lourd au point de contribuer au réchauffement !!!! de plus, si ton csv contient 50 lignes, je doute que ton lisp arrive jusqu'au bout. amicalement
  8. t'est vraiment super rapide gile, impressionnant !!!! cela fonctionne très bien. j'avais mis 3 jours... étrangement j'ai plus galéré avec le décode que l'encode.
  9. oui, en utilisant un objet ADODB Il y a des exemples sur theswamp.org mais par injection d'url (dans ce cas la on dit injection SQL) c'est plus facile. il y a des tutos, tape injection SQL dans google
  10. Ok, tu t'éloigne un petit peu. On s’occupe que de la partie injection. (après le dernier / ) dans l'absolue, si on encode tous les caractères, c'est évidement accepté par le serveur. Mais la, le but, est de garder une lisibilité par un être humain de l'injection. Je vais reformuler le challenge en oubliant le javascript. Convertir les caractères spéciaux excepté "- _ . ! ~ * ' ( )" en caractères hexadécimal pour UTF-8 voir lien donné à Luna + haut.
  11. avec une autre console
  12. je ne comprend pas...
  13. bonjour Luna un petit lien pour comprendre caracteres et oui, ce challenge demande un peu de recherche
  14. non, c'est bien encodeURIComponent, encodeURI converti tout les caractères.
  15. et j'ai oublié de préciser que l'espace peut etre "%20" ou "+", les 2 fonctionnent
  16. Bonjour, Malheureusement, il n'y a pas de consensus, et il y a quelque différence, selon les langages. C'est pourquoi j'ai donné en exemple celle du Javascript, pour qu'on partent sur la même chose. si tu vas voir le lien fournis, les caractères spéciaux ignorés sont "- _ . ! ~ * ' ( )"
  17. si ton pc fait cela, c'est que ta RAM est pleine ou inaccessible. Quand tu fait un ctrl+alt+suppr/gestionnaire des taches/performances tu vois l’occupation de la RAM. et dans l'onglet processus, tu vois qui l'occupe
  18. Bonjour, Je pense que ce n'est pas sur ton disque, mais dans ta RAM. Redémarre ta machine, et tout iras mieux. Si ce n'est pas la cas, verifie si tu n'as pas une appli en tache de fond, genre antivirus qui tourne.
  19. Fraid

    eTransmit sans ouverture

    Bonjour, Oui c'est possible dans tous les langage (ligne de commande compris), mais rien de générique, car on a tous une organisation différente et ainsi que les fichiers à fournir.
  20. Bonjour, Je viens de me souvenir d'un challenge perso qui m'avais bien tordu l'esprit. Convertir un texte pour injection d'URL. (ou requete HTML). Lorsque nous tapons une adresse internet dans la barre d'adresse d'un navigateur, c'est une injection. Exemple simple "https://www.openstreetmap.org/#map=16/48.4674/-2.5486" Ici nous arrivons directement au coordonnées injectées. Mais lorsque nous utilisons une URL en programmation, nous utilisons pas la barre du navigateur, cela va directement au serveur. Si l'injection contient des caractères spéciaux il faut les convertir en Caractères hexadécimales. Exemple "https://fr.wikipedia.org/wiki/Saint-Barthélemy-d'Anjou" doit devenir "https://fr.wikipedia.org/wiki/Saint-Barth%C3%A9lemy-d'Anjou" ou "aB 09_éùl'o @£" -> "aB%2009_%C3%A9%C3%B9l'o%20%40%C2%A3" Il existe des fonctions ou méthodes dans beaucoup de langage qui s'occupe très bien de cela, mais pas en Autolisp. Je me permet donc de vous proposer d'écrire l'équivalent de ces 2 fonctions Javascript encodeURIComponent decodeURIComponent Évidement sans énumération telle que '(("é" . "%C3%A9") ...) Je poste mes fonctions Dimanche soir. bonne exploration et à bientôt.
  21. Bonjour, Je ne comprend pas le sens de ta question? Pourquoi t'imposes tu une limite? Pour ma part, mon but est de contourner les limites du langage utilisé, si j'arrive à les atteindre... Peut être parle tu de SQL? Je ne pense pas que nous soyons nombreux à utiliser cette technologie. J'ai fait quelque essais, plutôt bancals, de modification de base SQL en Autolisp, cela fonctionne. Mais, la plus rapide est d’écrire une page html temporaire, ou par injection d'URL. dommage je ne retrouve pas mes essais.
  22. Bonjour, Et non, il faut qu' Autocad sache quand tu as finis de taper ta commande ou raccourci, puisqu'on est pas limité en nombre de caractères.
  23. Oui, mais je trouvais cela rigolo en peux de fonctions. et pas tant que cela si on nettoie la liste des redondances.
  24. Un essai qui produit un groupe par point (defun groupt (lstpt tol / ret l di) (foreach pt1 lstpt (setq l (list pt1)) (foreach pt2 lstpt (setq di (distance pt1 pt2)) (if (and (/= di 0)(< di tol)) (setq l (append l (list pt2))) ) ) (setq ret (append ret (list l))) ) ret ) (GROUPT pts 10.0) -> (((14.4 4.7) (8.0 0.9) (9.3 4.7)) ((4.8 0.7) (8.0 0.9) (9.3 4.7) (-1.9 -3.2) (2.4 -4.9)) ((8.0 0.9) (14.4 4.7) (4.8 0.7) (9.3 4.7) (2.4 -4.9)) ((9.3 4.7) (14.4 4.7) (4.8 0.7) (8.0 0.9) (6.6 11.2)) ((-14.3 14.3) (-6.3 14.2) (-13.6 7.5)) ((-6.3 14.2) (-14.3 14.3) (-13.6 7.5) (-6.6 4.7)) ((-13.6 7.5) (-14.3 14.3) (-6.3 14.2) (-6.6 4.7)) ((-1.9 -3.2) (4.8 0.7) (2.4 -4.9) (-6.6 4.7)) ((2.4 -4.9) (4.8 0.7) (8.0 0.9) (-1.9 -3.2)) ((6.6 11.2) (9.3 4.7)) ((-6.6 4.7) (-6.3 14.2) (-13.6 7.5) (-1.9 -3.2)))
×
×
  • 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é