Aller au contenu

Caleb

Membres
  • Compteur de contenus

    7
  • Inscription

  • Dernière visite

Caleb's Achievements

Newbie

Newbie (1/14)

  • Week One Done Rare
  • One Month Later Rare
  • One Year In Rare

Recent Badges

0

Réputation sur la communauté

  1. Non justement. Soit cette liste : ((2 7 5) (8 0 4)) Si j'applique tes instructions ou celles de Tramber à cette liste, j'obtiens : (7 8) Soit le maximum de chaque liste. Si j'applique les instructions de Giles, j'obtiens : (8 7 5) En fait, je cherche à comparer tous les 1er éléments de chaque liste entre eux et trouver le max, puis les 2nd éléments, et ainsi de suite. Faut admettre que c'est pas évident à expliquer. Sinon j'ai compris le "concept" de l'instruction de Giles : on alimente 'mapcar d'une liste constituée de l'instruction 'max puis des listes passées comme argument
  2. Tramber et Patrick_35, ce n’est pas exactement ce que je recherchais, mais je vous remercie beaucoup d’avoir pris le temps de me répondre et de m’expliquer. Admettons que je recherche les maximums de ‘((8 3 4) (4 6 8) (1 0 8)) > (8 6 8) Par défaut, c’est (mapcar ‘max ‘(8 3 4) ‘(4 6 8) ‘(1 0 8)) Sauf que, cette instruction est en fin de programme : les arguments de mapcar sont de quantité, de taille et de contenance inconnues avant exécution. Seule certitude, les arguments / listes sont contenus dans une liste. La question, c’est comment alimenter mapcar à partir d’une liste de listes et non des listes prédéfinies (je ne sais pas si je suis clair). Par contre, GillesCAD a visé juste : c’est exactement ce que je recherchais. Conceptuellement, ce n’est pas évident à appréhender (je marine encore un peu, et si vraiment c'est pas clair, je fais signe). Un grand merci !
  3. Bonjour, Je cherche à employer la fonction mapcar, pour la recherche de maximums : (mapcar 'max '(2 7 5) '(8 0 4)) Petit soucis, mes listes / mes arguments sont contenus... dans une liste, et en quantité variable. Comment "lui faire comprendre" que (mapcar 'max toto) c'est pareil, avec toto ma liste d'arguments ?
  4. Merci Tramber, au moins je suis fixé. Et un grand merci Gile. Je travaille avec ton document "Introduction à AutoLISP" depuis 6 mois, pour concevoir mon outil (je partais de 0 en AutoLISP). Et tu viens de porter mon regard sur les derniers paragraphes que je n'avais pas lu. Pour revenir à ma problématique, je pense m'inspirer de ton premier post : créer un arc, puis modifier ses données DXF en temps réel.
  5. Merci bonuscad. Si j'ai bien compris, l'arc est discrétisé / approximé par de petits segments ? La fonction grvecs permet de les tracer. Je vais regarder ça de prêt, j'ai bien l'impression que la fonction ARC ou une fonction type grvecs / grdraw ne permette pas de tracer en temps réel un arc.
  6. Bon bah je me réponds à moi-même, je viens de trouver une solution : ;; Dessin d'une ligne en temps réel (setq xe '((0 0 0))) (while (/= (car (setq x (grread T))) 25) (cond ((= (car x) 5) (redraw) (grdraw (car xe) (cadr x) -1)) ((= (car x) 3) (setq xe (cons (cadr x) xe)) (redraw) (command "LIGNE" (cadr xe) (car xe) "")))) Qu'en pensez-vous ? Patrick_35, de ce que j'ai compris la fonction pause redonne la main à l'utilisateur. Ce n'est pas exactement ce que je recherche, vu que l'utilisateur n'est pas censé faire d'autres entrées que celle du curseur. Mais j'y ai appris des choses qui pourraient me servir plus tard. Maintenant, je cherche à faire la même chose, mais avec un arc... Temporairement je l'ai fait avec un cercle, mais ça saccade ;; Dessin d'un cercle en temps réel (setq xe nil) (while (/= (car (setq x (grread T))) 25) (cond ((= (car x) 5) (redraw) (command "CERCLE" (cadr x) 10 "")) ((= (car x) 3) (setq xe (cons (cadr x) xe)) (redraw) (command "CERCLE" (car xe) 10 ""))))
  7. Bonjour à tous, J'aurais besoin de vos conseils, pour récupérer les coordonnées du pointeur puis tracer une ligne - en temps réel. Mon objectif : reproduire le comportement de la fonction "LIGNE" ou "POLYLIGN" en AutoLISP. Soit "tirer" la ligne (après définition du premier point, tracer une ligne entre le premier et le curseur en temps réel, puis figer la ligne une fois le deuxième point posé). J'essaye d'utiliser les fonctions GRREAD et LIGNE, mais sans succès. Voilà mon échec : (setq xe '((0 0 0))) (while (/= (car (setq x (grread T))) 25) ; tant que pas clic droit (cond ((= (car x) 5) ; Si pointeur sans clic gauche (command "LIGN" (car xe) x "")) ((= (car x) 3) ; Si pointeur avec clic gauche (setq xe (cons (cadr x) xe))))) Avez-vous une idée ?
×
×
  • 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é