Tramber Posté(e) le 23 avril 2005 Posté(e) le 23 avril 2005 (vlax-invoke-method vlaxes "Offset" (- (/ largt 2.0))) en programmation il est possible de décaler avec une valeur négative. Ca c'est bien mais je cherche des témoignages sur la commande DECALER. Chez vous aussi ça inverse le sens d'une polyligne ou comme moi, des fois ca l'inverse, dès fois pas ? Troublant et difficile à assumer quand on le programme, je voudrais savoir si DECALER inverse ou non le sens des polylignes. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
didier Posté(e) le 23 avril 2005 Posté(e) le 23 avril 2005 Bonjour,je ne vais pas te répondre au sujet du VLisp, mais mon test va peut être t'intéresser j'ai sévis en VBA avec une LWPOLYLINE et je ne constate pas de changement du sens de la PolyLigne. le test a été effectué sur la version 2005, pour info. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
didier Posté(e) le 23 avril 2005 Posté(e) le 23 avril 2005 coucou Complément de réponse je sévis toujours en VBA avec une LWPOLYLINE lorsque je fais un Miroir 2D [surligneur]il est constaté un changement du sens de la PolyLigne.[/surligneur] le test a été effectué sur la version 2005, car depuis tout à l'heureje n'ai pas touché la 2006 ;) ami calmant Éternel débutant... Mon site perso : Programmer dans AutoCAD
Tramber Posté(e) le 23 avril 2005 Auteur Posté(e) le 23 avril 2005 Merci Didier. Mais justement, je constate que c'est variable, pendant 30 min, pas d'inversion puis après, inversion ! Normalement, nous devons accéder à la même commande, en Vlsip ou VBA.Mais, sans être programmeur, n'importe qui pourra me donner un avis. Mon problème, c'est que j'a l'impression que ca n'est pas stable, si tu refais le test à un autre moment, je veux bien savoir le résultat. Même en passant par la commande manuelle, je constate souvent un [surligneur] inversement[/surligneur] . Et je m'arrache un peu les cheveux (j'ai une bonne réserve :) ), parce que c'est pas toujours le cas. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
didier Posté(e) le 23 avril 2005 Posté(e) le 23 avril 2005 coucou bon ben je remettrai le couvert dans une demie heure c'est malin, j'ai effacé ma Sub temporaire !!! ça me paraît, pour le moins louche, mais je vais vérifier et te tenir électrifié,au courant, voulais-je dire amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
didier Posté(e) le 23 avril 2005 Posté(e) le 23 avril 2005 hello IL N'Y A AUCUN CHANGEMENT DE SENS CONSTATE j'ai tout fait effacé puis undofermer, sauvegarder et ré-ouvrirenregistrer sous un autre nom toujours le même sens,ce qui me semble logique. amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Tramber Posté(e) le 23 avril 2005 Auteur Posté(e) le 23 avril 2005 Je me pince fort pourtant. J'ouvre une nouvelle cession, bingo, en commande manuelle, la polyligne est inversée. :casstet: Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
didier Posté(e) le 24 avril 2005 Posté(e) le 24 avril 2005 hello, il n'est pas utile de te pincer,dans une nouvelle session, j'ai testé aussi, PAS DE CHANGEMENT il est plus utile de vérifier ta façon de déterminer le sens des polylignes. amicalement aidez moi les autres à lui prouver que c'est vrai Éternel débutant... Mon site perso : Programmer dans AutoCAD
Tramber Posté(e) le 24 avril 2005 Auteur Posté(e) le 24 avril 2005 La conclusion serait donc : en commande manuelle, elle est inversée.en VBA, elle n'est pas inversée. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
didier Posté(e) le 25 avril 2005 Posté(e) le 25 avril 2005 coucou ni en VBAni en commande manuelle fin des tests,à ceux qui veulent s'y mettre de vérifier ... amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Tramber Posté(e) le 25 avril 2005 Auteur Posté(e) le 25 avril 2005 If the distance is negative, it’s interpreted as specifying an offset to create a ‘smaller’ curve. If ‘smaller’ has no meaning, the object is offset in the direction of smaller X, Y, and Z WCS coordinates Enfin, j'ai trouvé qqe chose qui me rafraichit la mémoire. ...et qui va me permettre de contrôler. Ca dit que si le chiffre est négatif, ca va tenter de créer l'objet du côté où il sera plus petit. Sicela n'a pas de signification (poly droite par ex), l'objet partira dans la direction du + petit X,Y,Z. Ce qui reste un peu hardu à comprendre :casstet: [Edité le 25/4/2005 par Tramber] Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 25 avril 2005 Posté(e) le 25 avril 2005 (setq ent (vlax-ename->vla-object (car (entsel)))) (setq deg (atof (angtos (angle (vlax-safearray->list (vlax-variant-value (vla-get-coordinate ent '0)))(vlax-safearray->list (vlax-variant-value (vla-get-coordinate ent '1)))) 0 2))) (if (and (> deg 90) (< deg 180)) (vla-offset ent '1) ; décalage de +1 (vla-offset ent '-1) ; décalage de -1 ) Peut-être de cette manière ?@+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
bonuscad Posté(e) le 28 avril 2005 Posté(e) le 28 avril 2005 En tout cas, ta découverte de l'usage de valeur négative avec vlax-invoke-method, permet de faire une routine sympa pour décaler de chaque cotés, c'est peut être ce que tu voulait faire, mais en plus en capsulant les extémités, d'ou ton problème de parcours.Mais il y a quand même quelque chose qui m'échappe, en sachant qu'une valeur négative pour "OFFSETDIST" correspond a l'option "Par le point", je me demande bien comment vlax fait pour traiter cette valeur d'une autre manière.En tout cas le code suivant fonctionne bien et est très court, Merci Tramber ;) (defun c:dbl_offset ( / val_offset ent vla_obj) (setq val_offset (getdist (strcat "\nLargeur du décalage <" (rtos (getvar "USERR1")) ">:"))) (if (not val_offset) (setq val_offset (getvar "USERR1")) (setvar "USERR1" val_offset)) (while (null (setq ent (entsel "\nChoix de l'objet à décaler de part et d'autre: ")))) (setq ent (car ent)) (setq vla_obj (vlax-ename->vla-object ent)) (vlax-invoke-method vla_obj "Offset" (- (/ val_offset 2.0))) (vlax-invoke-method vla_obj "Offset" (/ val_offset 2.0)) (entdel ent) (princ) ) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
Tramber Posté(e) le 28 avril 2005 Auteur Posté(e) le 28 avril 2005 Sympa de t'intéresser et tant mieux si tu en tires satisfaction. N'en reste pas moins que je suis devant certaines diffcultés. 1. Le sens de + petit (comme écrit dans mon post précédent) est intéressant mais extrêmement embarassant en prog. 2. les polylgnes qui s'inversent un peu suivant les cas font tourner mon travail au cauchemar. Lis bien ce que j'ai mis dans le précédent message, tu verras que "par le point" n'a pas de signification en prog. Ma question dérrière tout ca est :pourquoi en commande manuelle, la poly décalée est en sens inverse systématiquement ? et pourquoi en prog, elle est inversée mais pas toujours ? :casstet: Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Invité Patrick Posté(e) le 28 avril 2005 Posté(e) le 28 avril 2005 En version 2005 et avec la commande manuelle Decaler, je ne constate pas d'inversion de polyligne.
Tramber Posté(e) le 28 avril 2005 Auteur Posté(e) le 28 avril 2005 :casstet: Merci de cette précision, moi si, dans la version juste en dessous (2004).A tel point que je me demande si je ne vais pas passer par un COMMAND (plus sur que la méthode Vlisp) et retirer ma routine d'inversion en version 2005 :o En version manuelle ou en prog, je fais un sondage.Merci à tous ;) Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 28 avril 2005 Posté(e) le 28 avril 2005 Juste une questionJ'ai vu qu'on pouvait faire aussi un (vla-offset obj valeur) au lieu d'un (vlax-invoke-method obj "Offset" valeur)Quelle est la méthode la mieux appropriée entre les deux et pourquoi ? (ps : pour Tramber, il me semble t'avoir donné une réponse pour justement en prog, voir le sens de ta poly,) Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
Tramber Posté(e) le 28 avril 2005 Auteur Posté(e) le 28 avril 2005 J'ai vu qu'on pouvait faire aussi un (vla-offset obj valeur) au lieu d'un (vlax-invoke-method obj "Offset" valeur)Quelle est la méthode la mieux appropriée entre les deux et pourquoi ? Je choisis souvent la 2ème pour 2 raisons ;La lisibilité de mon codeC'est l'écriture conseillée Mais c'est 2 synthaxes aboutissent clairement à la même évaluation. (ps : pour Tramber, il me semble t'avoir donné une réponse pour justement en prog, voir le sens de ta poly,) Ton code est une piste mais il ne m'aide pas car le côté de décalage reste aléatoire (?).extrait de l'aide : If the distance is negative, it’s interpreted as specifying an offset to create a ‘smaller’ curve. If ‘smaller’ has no meaning, the object is offset in the direction of smaller X, Y, and Z WCS coordinates Donc, pour toi, la direction la + petite X, Y et Z, c'est par rapport à la tangente (l'angle) de départ ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Tramber Posté(e) le 28 avril 2005 Auteur Posté(e) le 28 avril 2005 Et smaller, ca voudrait dire plus petite BoundingBox ou plus petite longueur ? Selon vous ? Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
didier Posté(e) le 28 avril 2005 Posté(e) le 28 avril 2005 hello excuse le delai de test,mais il fallait que je mette la main sur d'autres versions.ce qui donne : version 2004 >>> pas d'inversion de sensversion 2000>>> pas d'inversion de sens ce qui est pour le moins logique. d'autres avis seront nécéssaires pour infirmer ou confirmer mes dires, à vous de jouer... à toi Tramber, Comment détectes tu le sens des polylignes ? amicalement Éternel débutant... Mon site perso : Programmer dans AutoCAD
Tramber Posté(e) le 28 avril 2005 Auteur Posté(e) le 28 avril 2005 à toi Tramber, Comment détectes tu le sens des polylignes ? par une vulgaire fonction qui me créé une flèche de l'avant-dernier point vers le dernier et qui l'efface quand je tape ENTREE Eh bien les amis. Je demande mon admission au CHU, urgences psychiatriques. Une nouvelle session de 2004 et hop, plus d'inversement (un coup OUI, un autre NON). Comme si ca dépendait juste de l'humidité ambiante ! Satanée commande. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
Patrick_35 Posté(e) le 28 avril 2005 Posté(e) le 28 avril 2005 Donc, pour toi, la direction la + petite X, Y et Z, c'est par rapport à la tangente (l'angle) de départ ?J’ai juste tracé une poly dans un sens et une autre dans le sens inverse et fait le comparatif avec un offset à +1 et un à -1. Il apparaît que l'angle détermine le coté où la poly se décale (on peut donc logiquement raisonner avec des orhto 0->90, 90->180, 180-270 et 270->0). Maintenant, ça dépend de ce que tu veux faire exactement Pour ce qui est du "smaller", on peut raisonner sur un cercle et se dire que le décalage négatif se fait sur le plus petit, donc logiquement à l’intérieur du cercle. Il est logique de raisonner de la même manière sur une poly fermée pour ce décalage (et quel que soit l’angle du premier vecteur) (vla-offset obj valeur) au lieu d'un (vlax-invoke-method obj "Offset" valeur)La lisibilité de mon codePlus c'est court et mieux c'est, enfin, c'est mon avisC'est l'écriture conseilléeJe ne l'ai jamais vu, mais je veux bien le croire, pourquoi pas ! Mais c'est 2 synthaxes aboutissent clairement à la même évaluation.Oui, mais techniquement, il doit y avoir une différence ? (plus rapide, ou autre chose encore) @+ Les Lisps de PatrickLe but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.Joseph Joubert, 1754-1824
didier Posté(e) le 28 avril 2005 Posté(e) le 28 avril 2005 Bobsoir par une vulgaire fonction qui me créé une flèche de l'avant-dernier point vers le dernier et qui l'efface quand je tape ENTREE c'est quoi cette fonction?car je viens encore de faire des testset je n'arrive toujours pas à obtenirla fameuse inversion de sens suite à un décalage. à suivre ... Éternel débutant... Mon site perso : Programmer dans AutoCAD
Tramber Posté(e) le 29 avril 2005 Auteur Posté(e) le 29 avril 2005 (vla-offset obj valeur) au lieu d'un (vlax-invoke-method obj "Offset" valeur)....Plus c'est court et mieux c'est, enfin, c'est mon avis...C'est l'écriture conseillée....Je ne l'ai jamais vu, mais je veux bien le croire, pourquoi pas ! Pour répondre à PATRICK_35, je l'ai lu dans Visual Lisp developper Guide en téléchargement sur CADxp. (vlax-invoke-method objLine “Move” point1 point2) (vla-Move objLine point1 point2) (vlax-invoke objLine “Move” point1 point2) All of these of these examples do the same thing. This is generally true for most AutoCAD objects, but not for objects created from imported TypeLib interfaces or external applications or ActiveX components. You should use the first form for working with external application objects, however you can use the second form for internal objects. The third form is a leftover from R14 for compatibility only. J'avais retenu que c'était une habitude à prendre, même si je ne fais jamais d'objets externes. Ceci dit je suis d'accord avec toi maintenant que j'ai relu et compris que c'était à peu près inutile. DIDIER Je t'assure que c'est une fonction déroutante et, sur la base de tout ce qui a été discuté dans ce fil de discussion (sic), je vais regarder tout ca plus posemment ce week-end car j'ai besoin de maitriser cet aspect en COMMAND comme en Vlisp. Au fait, pour voir le sens de la ligne, il suffit de faire varier les points d'édition dans la boite de propriétés, on voit tout de suite le numéro des points et la croix correspondante affichée à l'écran sur la poly. Ce qui est vraiment très troublant, c'est de constater parfois une inversion parfois non sur des cas très semblable en commande manuelle. Je vous remercie tous et continue sur le sujet. Bureau d'études dessin. Spécialiste Escaliers Développement - Formation ./__\. (.°=°.)
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