Aller au contenu

mateus

Membres
  • Compteur de contenus

    261
  • Inscription

  • Dernière visite

  • Jours gagnés

    2

Tout ce qui a été posté par mateus

  1. Bonsoir , je n'arrive toujours pas à calculer mon angle entre mes deux points de la droite :/ il me prend en compte que le pi/2 j'ai l'impression mais quand j'ajoute un espion sur ma variable "angl" elle vaut "nil" je ne comprends pas <_< (defun ORIENTATION (listeDecal / angl) (setq pta (list (car ListeDecal) (cadr ListeDecal)) ptb (list (caddr ListeDecal) (cadddr ListeDecal)) ) (setq angl (angle pta ptb)) (+ angl (/ pi 2 )) )
  2. Bonjour Olivier :)
  3. j'ai regardé dans l'aide et c'était inscrit comme cela mais j'ai même essayant sans et ça n'a pas marché non plus :/
  4. Grillé le clément ! ça va ti bien?

  5. J'essai avec ce bout de code : (defun ORIENTATION (listeDecal / angl) (setq pta (list (car ListeDecal) (cadr ListeDecal)) ptb (list (caddr ListeDecal) (cadddr ListeDecal)) ) (setq angl (angle 'pta 'ptb)) (+ angl (/ pi 2 )) ) avec pta et ptb mes deux points de la droite, je voudrai que la fonction retourne le résultat de l'angle entre ces deux points + 90 degrés mais on m'affiche cette erreur : ; erreur: type d'argument incorrect: point 2D/3D: PTA Merci par avance
  6. Bonjour Didier :) Oui je comprends j'ai mis la totalité de mon programme désolé en fait c'est juste que je demande à l'utilisateur qui trace une droite avec deux points en guise d'alignement à une route. Cet alignement est décalée pour obtenir le réseau des luminaires et après je voudrais placer mes luminaires mais c'est clair que je pars dans des trucs mais ça doit être un truc tout bête... Merci en tout cas !
  7. Une solution serait que je place mon scu local sur ma droite, que je règle au préalable les angles en degrés et que j'insère mon bloc à 90 degrés de ma droite. Mais si je pouvais trouver une meilleure méthode ça serait l'idéale... :unsure:
  8. Est ce que quelqu'un aurait une idée pour que je puisse insérer mon bloc perpendiculairement à ma droite ? Merci d'avance
  9. Et j'ai rien dis pour le gisement c'est le même angle <_<
  10. J'ai regardé à nouveau ce matin et en fait j'ai bêtement vu mon erreur, il ne faut pas que j'utilise le gisement entre mes deux points pour placer perpendiculairement à ma droite mes blocs. Du coup il faut que je cherche un autre moyen , par contre bizarrement le gisement entre mes deux points ne vaut pas exactement l'angle d'orientation d'insertion de mon bloc je n'ai pas trop compris à ce niveau bref il faut que je cherche un autre moyen pour placer mes blocs perpendiculairement :)
  11. Le gisement est toujours donné en grade et calcul l'angle entre deux points par rapport à l'axe des ordonnées. Il doit y avoir un soucis par apport à cette axe des ordonnées justement. Je me demande sur quel axe il se base pour faire le gisement....
  12. mateus

    "error"

    Merci beaucoup Giles, ton cours de lisp est vraiment bien fait ! :) Bonne journée !
  13. Bonsoir à tous, je poste ce sujet car j'ai un soucis avec mon code pour l'instant je voudrais insérer mon premier bloc sur ma droite après l'avoir crée. Mais le problème c'est qu'il ne s'insère pas comme je le voudrais, il y a un problème au niveau de l'angle que j'ai calculé (gisement) voici mon code ci-dessous : (defun c:MAIN () (setq alignementEnCours (ALIGNEMENT)) (setq ListeDecal (DECAL_RESEAU alignementEncours)) (setq premierCandelabre (getpoint "\n cliquez sur le premier candélabre " ) projectionCandelabre (PROJECTION premierCandelabre (car ListeDecal) (cadr ListeDecal) (caddr ListeDecal) (cadddr ListeDecal) ) ) (setq decalageCandelabre (getdist "\n Indiquez le décalage des candélabres" ) ) (setq gisRadian (GISEMENT (car ListeDecal) (cadr ListeDecal) (caddr ListeDecal) (cadddr ListeDecal) ) ) (setq gisGrade (rad2grad gisRadian)) (ASSISTANT decalageCandelabre projectionCandelabre gisGrade) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Alignement;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun ALIGNEMENT () (setq 1erPoint (getpoint "\nsélectionner le premier point de votre alignement" ) ; sélection du premier point de l'alignement 2emePoint (getpoint "\nsélectionner le deuxième point de votre alignement" ) ; sélection du deuxième point de l'alignement ) (command "polylign" 1erPoint 2emePoint "") ;tracé de l'alignement (cdar (entget (entlast))) ;récupère le nom de l'entité "Alignement" ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; DECAL_RESEAU;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun DECAL_RESEAU (AL) (command "décaler" (getdist "\nvaleur de décalage du réseau") AL (getpoint "\nCliquer sur le côté du réseau") "" ) ; décalage de l'alignement pour réseau (setq nomEntité (entlast)) ;mise en variable de la poly décalée = réseau (setq listeDXF (entget nomEntité)) ;récupère la liste DXF de la polylign "réseau" (setq xa (cadr (assoc 10 listeDXF))) ;récupère le x du premier sommet (setq ya (caddr (assoc 10 listeDXF))) ;récupère le y du premier sommet (setq xb (cadr (assoc 10 (cdr (member (assoc 10 listeDXF) listeDXF))) ) ) ;récupère le x du deuxième sommet (setq yb (caddr (assoc 10 (cdr (member (assoc 10 listeDXF) listeDXF))) ) ) ;récupère le y du deuxième sommet (list xa ya xb yb) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; PROJECTION;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun PROJECTION (C xa ya xb yb) ;avec ;C= point à projeter sur la droite ;P= projeté orthonormal ;r= paramètre indiquant l'emplacement de P sur la droite ;L= module de la droite (setq xc (car C)) (setq yc (cadr C)) (setq L (sqrt (+ (* (- xb xa) (- xb xa)) (* (- yb ya) (- yb ya))))) (setq r (/ (- (* (- ya yc) (- ya yb)) (* (- xa xc) (- xb xa))) (* L L) ) ) (setq PX (+ xa (* r (- xb xa)))) ; abscisse du projeté orthonormal (setq PY (+ ya (* r (- yb ya)))) ; ordonné du projeté orthonomal ;(setq P (list PX PY) ) (list PX PY) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; GISEMENT;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun GISEMENT (xa ya xb yb) (atan (/ (abs ;valeur absolue (- xb xa) ) (abs (- yb ya) ) ) ) ) ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; Assistant;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; (defun ASSISTANT (decal 1erCandelabre gisGrade / p1 p2 p3 p4 p5 p6 p7) ;;decal, 1erCandelabre, gisGrade -->arguments et p1 à p7 sont les variables locales. (if (not (tblsearch "BLOCK" "assistant")) (progn (command "zoom" "f" "-5,15,0" "-5,-15,0" "") (command "ortho" "a" "") (setq p1 '(0 0 0) p2 (polar p1 (/ pi 2) decal) p3 (polar p2 pi 2) p4 (polar p2 0 2) p5 (polar p1 (- (/ pi 2)) decal) p6 (polar p5 pi 2) p7 (polar p5 0 2) ) (command "polylign" p1 p2 p3 p4 p2 p1 p5 p6 p7 "") (setq ent (entlast)) (command "zoom" "et" "") (command "ortho" "i" "") (command "_block" "assistant" p1 ent "") ) ;;progn ) (command "inserer" "assistant" 1erCandelabre 1 1 gisGrade "") ) (defun rad2grad (gisRadian) (/ (* gisRadian 200) pi) ) Je sais que Giles, si tu passes par ici, tu m'as déjà conseillé de ne pas relancer des routines mais c'est juste que j'aimerai vraiment utiliser les fonctions préalablement crées pour que je sente que je contrôle le maximum de choses et que je comprenne ce que je fais. Le bloc s'insère mais pas perpendiculairement à la droite. Merci à vous
  14. mateus

    "error"

    Merci beaucoup Bryce :) Et justement tu tombes bien car j'ai du mal à comprendre cette fonction, j'aimerai bien savoir à quel moment doit t-on l'utiliser et en savoir plus sur cette fonction , tu pouvais pas tomber mieux :) Merci
  15. mateus

    "error"

    Bonsoir à tous voilà j'ai un soucis dans la création de mon block. Je m'explique si je relance le code une deuxième fois, on me pose alors la question "voulez vous redéfinir le block" pourtant j'ai utilité la fonction qui aurait du permettre au programme de ne pas créer le block s'il existe déjà... Est ce que quelqu'un aurait une idée. Merci :) (if (not (tblsearch "BLOCK" "assistant")) (command "zoom" "f" "-5,15,0" "-5,-15,0" "") (command "ortho" "a" "") (setq p1 '(0 0 0) p2 (polar p1 (/ pi 2) decal) p3 (polar p2 pi 2) p4 (polar p2 0 2) p5 (polar p1 (- (/ pi 2)) decal) p6 (polar p5 pi 2) p7 (polar p5 0 2) ) (command "polylign" p1 p2 p3 p4 p2 p1 p5 p6 p7 "") (setq ent (entlast)) (command "zoom" "et" "") (command "ortho" "i" "") (command "_block" "assistant" p1 ent "") (command "inserer" "assistant" 1erCandelabre 1 1 gis "") )
  16. mateus

    "error"

    En essayant à nouveau j'ai réussi à dessiner ma forme en "I" voici le code : (defun c:ASSISTANT (/ decal p1 p2 p3 p4 p5 p6 p7);decal est l'argument qui provient de "decalageCandelabre et p1 à p7 sont les variables locales. (command "zoom" "f" "-5,15,0" "-5,-15,0" "") (command "ortho" "a" "") (setq p1 '(0 0 0) decal(getdist "\nDécalage des candélabres? ") p2 (polar p1 (/ pi 2) decal) p3 (polar p2 pi 2) p4 (polar p2 0 2) p5 (polar p1 (-(/ pi 2)) decal) p6 (polar p5 pi 2) p7 (polar p5 0 2) ) (command "polylign" p1 p2 p3 p4 "") (command "polylign" p1 p5 p6 p7 "") (command "zoom" "et" "") (command "ortho" "i" "") ) Bon dimanche à tous et toutes
  17. mateus

    "error"

    déjà j'ai repéré une erreur, pour les points p3 p4 p6 et p7 les valeurs de "2" en vert sont des mètres donc il me semble que cela s'écrit plutôt comme ça "2" ... Mais je suis toujours bloqué :huh:
  18. mateus

    "error"

    Bonjour à tous voilà je voulais créer une fonction simple pour mon programme qui dessine une entité en forme de "I" pour créer un assistant. Et je me retrouve avec deux soucis : le premier : quand je désire mettre dans la variable p1 le point d'origine "0,0,0" du scu général cela me renvoit à la ligne de commande autocad et je dois alors appuyer sur la touche "entrer" pour valider ma sélection. Pourtant j'ai essayer avec les deux guillemets ("") pour valider la sélection et avec l'espace. Rien n'y fait ... Le deuxième soucis est que pour le point p2 il me met : ; erreur: type d'argument incorrect: point 2D/3D: nil J'ai cru que pour mon point p1 était en 3d et celui de p2 était en 2d donc j'ai volontairement mis à la place de "0,0,0" "0,0" pour le point p1 mais rien n'a changé .. (defun c:ASSISTANT (/ decal p1 p2 p3 p4 p5 p6 p7);decal est l'argument qui provient de "decalageCandelabre et p1 à p7 sont les variables locales. (command "zoom" "f" "-5,15,0" "-5,-15,0" "") (command "ortho" "a" "") (setq p1 (getpoint "0,0" ) decal(getdist"\n Décalage des candélabres? ") p2 (getpoint(polar p1 (/ pi 2) decal)) p3 (getpoint(polar p2 pi 2)) p4 (getpoint(polar p2 0 2)) p5 (getpoint(polar p1 (-(/ pi 2)) decal)) p6 (getpoint(polar p5 pi 2)) p7 (getpoint(polar p5 0 2)) ) (command "polylign" p1 p2 p3 p4 p5 p6 p7 "") (command "zoom" "et" "") ) Merci par avance :)
  19. Ok pour le formatage j'ai compris c'est justement ce que je cherchais à faire pour mettre en forme en fait ça permet tout simplement de mettre en ordre avec les parenthèses etc... Il me reste toujours ce problème de coordonnées que j'aimerai faire passer dans la fonction PROJECTION pour que l'ensemble fonctionne et surtout pour que je puisse continuer le pgn. Merci bien Giles pour tous tes conseils
  20. Bonjour Giles ! qu'entends tu par formatage avec l'éditeur lisp? D'accord pour les sauts de lignes mais je ne vois pas trop comment formater avec l'éditeur lisp. Je comprends parfaitement ce que tu veux dire mais j'ai besoin de récupérer "xa" "ya" "xb" "yb" dans ma fonction projection pour que je puisse avancer dans mon programme... qui a le faire avec variables locales comme tu dis, peut importe le résultat du moment que je puisse les récupérer .. Merci par avance
  21. Bonsoir je pensais avoir compris mais à croire que non voilà j'essai de faire un test pour bien comprendre la fonction "apply" en faisant passer la liste retournée par la fonction (DECAL_RESEAU) comme arguments pour la fonction (PROJECTION) mais ça ne fonctionne pas (voir code ci dessous): (defun c:MAIN ();Fonction principale (setq alignementEncours (ALIGN)) (DECAL_RESEAU alignementEncours) (setq premierCandelabre (getpoint"\n Cliquez sur le premier candélabre ")) (setq projectionCandelabre (PROJECTION premierCandelabre)) ;(c:DROITE projectionCandelabre entraxeCandelabre decalageCandelabre ) ;Trace les droites pour l'assistance. stoker tout les nom des bloc inserer ds une liste. En attente ) (defun ALIGN () (setq 1erPoint(getpoint"\nsélectionner le premier point de votre alignement") ; sélection du premier point de l'alignement 2emePoint(getpoint"\nsélectionner le deuxième point de votre alignement"); sélection du deuxième point de l'alignement ) (command "polylign" 1erPoint 2emePoint "") ;tracé de l'alignement (cdar(entget(entlast)));récupère le nom de l'entité "Alignement" ) (defun DECAL_RESEAU (AL) (command "décaler" (getdist"\nvaleur de décalage du réseau") AL (getpoint "\nCliquer sur le côté du réseau") "") ; décalage de l'alignement pour réseau (setq nomEntité(entlast));mise en variable de la poly décalée = réseau (setq listeDXF (entget nomEntité));récupère la liste DXF de la polylign "réseau" (setq xa(cadr(assoc 10 listeDXF)));récupère le x du premier sommet (setq ya(caddr(assoc 10 listeDXF)));récupère le y du premier sommet (setq xb(cadr(assoc 10(cdr(member(assoc 10 listeDXF) listeDXF)))));récupère le x du deuxième sommet (setq yb(caddr(assoc 10(cdr(member(assoc 10 listeDXF) listeDXF)))));récupère le y du deuxième sommet (list xa ya xb yb) (apply 'PROJECTION (DECAL_RESEAU)) ) (defun PROJECTION (C xa ya xb yb) ;avec ;C= point à projeter sur la droite ;P= projeté orthonormal ;r= paramètre indiquant l'emplacement de P sur la droite ;L= module de la droite (setq xc (car C)) (setq yc (cadr C)) (setq L (sqrt (+(*(- xb xa) (- xb xa)) (*(- yb ya) (- yb ya))))) (setq r (/(-(*(- ya yc) (- ya yb)) (*(- xa xc) (- xb xa))) (* L L))) (setq PX (+ xa(* r (- xb xa)))) ; abscisse du projeté orthonormal (setq PY (+ ya(* r (- yb ya)))); ordonné du projeté orthonomal ;(setq P (list PX PY) ) (list PX PY) (command "point" projectionCandelabre "") ) Aussi , dans la fonction (PROJECTION), je stock en variable locale © le getpoint du premier candélabre. J'aimerai bien comprendre davantage cette fonction apply, Faut- il que les variables locales de la fonction (PROJECTION) soit : xa ya xb yb soient les mêmes noms que la liste retournée par la fonction (DECAL_RESEAU). Est ce que l'ordre à une importance ? Voilà j'aimerai juste à l'aide de cette exemple bien comprendre cette fonction "APLY" et faire fonctionner ce test :unsure: . Merci par avance
  22. Merci Didier pour ta réponse En fait mon objectif est de lancer le programme et une fois lancé, dans une boucle demander à l'utilisateur est ce que l'implantation te convient? Si oui on continue le programme si non à quelle étape veux tu revenir? A partir de là, plusieurs choix s'offre à lui les 5 étapes que l'on peut voir sur mon dernier post (qui sont des fonctions). Exemple : Est ce que l'implantation vous convient? Rép: Non Sur qu'elle étape voulez vous revenir? 1- Alignement 2-Décalage 3-PremierCandélabre 4-Entraxe 5-Ecart Rép: Décalage Par conséquent revenir à la fonction 2 en effaçant le tracé du programme précédent. Voilà j'esprèe que je suis assez clair. Pour les boites de dialogues effectivement, ça serait une étape intéressante pour l'utilisateur que je ferai après, je préfère m'attarder dans un premier temps à la réalisation du programe "brut". Voici ci dessous : mon dernier code : (defun c:questions ( / ans ) (initget "Yes No") (if (/= "Yes" (getkword "\nEtes vous satisfait de l'implantation des luminaires? [Yes/No] <No>: ")) (while (progn (initget "Alignement Décalage PremierCandélabre Entraxe Ecart") (setq ans (getkword "\nChange [Alignement/Décalage/PremierCandélabre/Entraxe/Ecart] <Accept>: ")) ) (cond ( (= ans "Alignement") (ALIGN) ) ( (= ans "Décalage") (DECAL_RESEAU alignementEncours) ) ( (= ans "PremierCandélabre") ((setq premierCandelabre (getpoint"\n Cliquez sur le premier candélabre ")) projectionCandelabre (c:PROJECTION premierCandelabre)) ) ( (= ans "Entraxe") ((setq entraxeCandelabre (getdist"\ Entraxe des candélabres? "))) ) ( (= ans "Ecart") ((setq decalageCandelabre(getdist"\ Indiquez le décalage des candélabres "))) ) ) ) ) (princ "\nPoursuite du programme...") (princ) ) J'ai pas encore tester entièrement, mais d'après un premier aperçu, le programme se lance et une fois les étapes passées ( les questions sont bien posées puis redémarre à l'étape choisi par l'utilisateur Bonne soirée à tous ! :)
  23. Voici mon dernier code pour mes questions mais ça ne fonctionne toujours pas :unsure: (defun c:QUEST2 () (setq question2 (strcase(getstring "\n Que souhaitez vous modifier? [Alignement / Décalage / PremierCandélabre / Entraxe / Ecart] <Alignement> "))) (cond ((or(= choix "Alignement") (= choix "A") (= choix "")) (setq cas1 1 cas2 0 cas3 0 cas4 0 cas5 0 ) ) ((or(= choix "Décalage") (= choix "D")) (setq cas1 0 cas2 1 cas3 0 cas4 0 cas5 0 ) ) ((or(= choix "PremierCandelabre") (= choix "P")) (setq cas1 0 cas2 0 cas3 1 cas4 0 cas5 0 ) ) ((or(= choix "Entraxe") (= choix "EN")) (setq cas1 0 cas2 0 cas3 0 cas4 1 cas5 0 ) ) ((or(= choix "Ecart") (= choix "EC")) (setq cas1 0 cas2 0 cas3 0 cas4 0 cas5 1 ) ) ((or(= choix "OUI") (= choix "O")) (setq interrupteur 1) ) ) )
  24. Bonjour à tous, voilà j'ai un soucis avec mon pc, je m'explique dès que je veux installer un logiciel ou jeux , la plupart du temps on me dit que des fichiers DLL sont manquants. j'ai regardé à quoi correspondait ces fichiers, ou les télécharger et où les ranger , mais le problème c'est que il y en a dont je trouve pas , des fichiers dll pour le jeux GTA par exemple ou bien pour le logiciel Artlantis. Ma question est : est ce qu'il existe un moyen efficace et gratuit qui permet de rechercher et d'installer directement les fichiers DLL manquants? Merci par avance!
×
×
  • 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é