Aller au contenu

Messages recommandés

Posté(e)

(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

 

./__\.
(.°=°.)
Posté(e)

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

Posté(e)

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'heure

je n'ai pas touché la 2006 ;)

 

ami calmant

Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

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

 

./__\.
(.°=°.)
Posté(e)

(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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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

Posté(e)

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)

En version 2005 et avec la commande manuelle Decaler, je ne constate pas d'inversion de polyligne.

Posté(e)

: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

 

./__\.
(.°=°.)
Posté(e)

Juste une question

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 ?

 

(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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)
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 code

C'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

 

./__\.
(.°=°.)
Posté(e)

Et smaller, ca voudrait dire plus petite BoundingBox ou plus petite longueur ?

 

Selon vous ?

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

./__\.
(.°=°.)
Posté(e)

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 sens

version 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

 

Posté(e)
à 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

 

./__\.
(.°=°.)
Posté(e)
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 code

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 !

 

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 Patrick

Le but n'est pas toujours placé pour être atteint, mais pour servir de point de mire.

Joseph Joubert, 1754-1824

Posté(e)

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 tests

et je n'arrive toujours pas à obtenir

la fameuse inversion de sens suite à un décalage.

 

à suivre ...

Posté(e)
(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

 

./__\.
(.°=°.)

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 compte

Se connecter

Vous avez déjà un compte ? Connectez-vous ici.

Connectez-vous maintenant
×
×
  • 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é