Tramber Posté(e) le 22 mars 2004 Posté(e) le 22 mars 2004 J'ai écrit: (setq compt01 0 listpoly nil) (repeat (length poly) (if (= (car(nth compt01 poly)) 10) (setq listpoly (append listpoly (list(cdr(nth compt01 poly)))))) (setq compt01 (1+ compt01))) Poly vient d'un ENTGET sur une polyligne. Je parcours ainsi la base de données de points de la polyligne.Mais j'utilise des variables, notamment à cause du compteur. Y-a-t-il un autre moyen + intelligent ? Comment marche le code 42, je suppose qu'il donne les infos pour les arcs de cercles.Mais comment ca marche ? Je ne crie pas au secours :exclam: , j'ai tout mon temps. :angel: Merci d'avance. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
didier Posté(e) le 22 mars 2004 Posté(e) le 22 mars 2004 hello TramberEncore une fois :Qu'est ce que tu veux obtenir à la fin ?si c'est le dernier élément de la polylignevoici une proposition qui tourne depuis longtemps : (setq test (cdr (assoc 0 (entget ent2))))(while (/= test "SEQEND")___(progn_____(setq sommet (cdr (assoc 10 (entget ent2))))_____(setq x (car sommet) y (cadr sommet) z (caddr sommet) )_____(setq ent2 (entnext ent2))_____(setq test (cdr (assoc 0 (entget ent2))))___);progn);while en clair tant que je trouve pas "SEQEND" je teste tous les sommetsamicalementps: il est tard et je vais au sport,je reviens demain pour le code 42 ...t'as vu y'a AutoDesk qui est par minou (hihihihihi) :yltype: Éternel débutant... Mon site perso : Programmer dans AutoCAD
didier Posté(e) le 22 mars 2004 Posté(e) le 22 mars 2004 hello !il s'agit de la réponse du10/3/2004 à 21:15dans le for homme, des butés en lispeciao ... Éternel débutant... Mon site perso : Programmer dans AutoCAD
Tramber Posté(e) le 22 mars 2004 Auteur Posté(e) le 22 mars 2004 J'y vais de ce pas, mais comme dit dans un autre message, il faudrait vraiment que tu apprennes à faire des liens !!! D'autant que tu ne m'as pas donné les meilleures indications pour trouver le message ( eh oui, j'aurais préféré le titre du sujet !!!) Enfin, J'ai fait un Rechercher par Pseudo dans le forum et j'ai trouvé, merci. ....ah mince, c'est pas sur le code 42 de la poly, c'est sur DIstance. Je donne le LIEN quand même ! Au fait, merci pour le message Posté le 22/3/2004 à 19:40 ! Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Invité Patrick Posté(e) le 22 mars 2004 Posté(e) le 22 mars 2004 Si le but est de récupérer les sommets d'une LWpolyline, la fonction dans ce message est le nec plus ultra, on n'a pas fait mieux ni plus court depuis!
didier Posté(e) le 23 mars 2004 Posté(e) le 23 mars 2004 BonjourEn Réponse à PatrickElle est bien ta routine, je t'ai déjà félicitésur la compacité du code, je m'en sers maintenantmais il est à noter qu'elle ne donne aucune indicationsur les segments courbes de la polyligne. En réponse à TramberEffectivement le code 42 donne la courburepar défaut la valeur est 0, elle est renseignée dans le cas d'un segment courbeen revanche je n'ai pas compris ce que signifie la valeur écritesont ce des radians ? est un gisement de tangente ? quid ?quelqu'un de plus balaise devra nous répondre ... bonne journée à tous Éternel débutant... Mon site perso : Programmer dans AutoCAD
Tramber Posté(e) le 23 mars 2004 Auteur Posté(e) le 23 mars 2004 Super, ...ce que je cherchais. Je sais depuis longtemps qu'il faut que je me rentre Mapcar et Apply dans le crâne ! Merci à tous les 2 et aux suivants car c'est vrai que je coince un peu sur le 42 et son exploitation. Mais j'y reviendrai et m'acharnerai avec vous bientôt. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
bonuscad Posté(e) le 23 mars 2004 Posté(e) le 23 mars 2004 Pour le code DXF 42 des LWPOLYNE, un extrait de l'aide: La courbure est la tangente d'un quart de l'angle inclus dans un segment d'arc, rendu négatif si l'arc est dans le sens horaire, du point de départ au point final. Une courbure de 0 désigne un segment droit et une courbure de 1 désigne un demi-cercle Cette info est visible dans l'aide a propos des VERTEX de POLYLINEPour les LWPOLYLINE, elle est absente :casstet: mais c'est la même définition. NB:Bien sûr la valeur est en RADIAN. Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Tramber Posté(e) le 23 mars 2004 Auteur Posté(e) le 23 mars 2004 ...ci bien, il fallait savoir que tout était décrit dans POLYLINE, moi je suis de la nouvelle génération. La valeur n'est pas en radian, à mon avis, puisque tu dis toi-même que c'est la tangente (sans unité). Pour un angle de 90°, soit 22.5° (le quart), j'ai trouvé un 42 du genre 0,41... (de mémoire).Je viens de vérifier, c'est bon. Super merci. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
didier Posté(e) le 23 mars 2004 Posté(e) le 23 mars 2004 bonjourBien vu BonusCadje me doutais qu'il s'agissait de tangente, mais tu le prouves.merci bienquant à la réponse de Tramber, bien sûr que la tangentecomme toutes les valeurs naturelles n'a pas d'unités,mais la tangente de la valeur absolue d'un angle est variantesuivant l'unité d'expression dudit angleprenons comme exemple 33 grades >> tangente = 0.047159...3 radians >> tangente = -0.142547...3 degrés >> tangente = 0.052408...moralité tout angle retourné par AutoCad est en radiansencore merci à BonusCad :D Éternel débutant... Mon site perso : Programmer dans AutoCAD
Tramber Posté(e) le 23 mars 2004 Auteur Posté(e) le 23 mars 2004 Oui, et, come tu vois que je n'ai pas oublié tes bons conseils, je rappelle qu'il est préférable de faire une convertion soi-même que d'utiliser les ANGTOF ANGTOS.Aussi je continue à raisonner en angle et prends mes précautions en programmant, en faisant les transfos by-myself. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
bonuscad Posté(e) le 23 mars 2004 Posté(e) le 23 mars 2004 Un exemple vaut mieux qu'un long discours:Pour un objet qui serait un segment unique d'arc de polyligne,la ligne suivante: (* 4.0 (atan (cdr (assoc 42 (entget (car (entsel)))))))retounera la valeur de l'angle au centre en radians de l'arc Celle ci le fera en degré:(/ (* (* 4.0 (atan (cdr (assoc 42 (entget (car (entsel))))))) 180.0) pi) la fonction (atan n'accepte que les radians comme toutes les fonctions lisp réclamant un angle d'ailleur. A mon avis qui reste personnel est qu'en lisp il vaut mieux préférer(command "_line" '(0.0 0.0 0.0) (polar '(0.0 0.0 0.0) (/ pi 4) 10) "")à(command "_line" '(0.0 0.0 0.0) "@10<45" "") L'avantage? vous n'avez pas besoin de vous préocuper des unités utilisés par l'utilisateur et à vous lancez dans des conversions d'angle. Réservez la convertion pour l'affichage des données mais travaillez en radians (les routines seront plus facilement portables sans bugs) ;) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Messages recommandés
Créer un compte ou se connecter pour commenter
Vous devez être membre afin de pouvoir déposer un commentaire
Créer un compte
Créez un compte sur notre communauté. C’est facile !
Créer un nouveau compteSe connecter
Vous avez déjà un compte ? Connectez-vous ici.
Connectez-vous maintenant