Aller au contenu

Mystere...


Messages recommandés

Posté(e)

Bonjour,

 

J'ai un drôle de problème et franchement je ne vois pas d’où cela peut provenir...

Je cherche (entre autre) a implanter via un lisp une flèche a un endroit bien précis de mon folio A3

Pour ce faire je recherche les coordonnées du point d'implantation de mon bloc cartouche appelé "CARTOUCHEA3" et de ce point d'implantation je détermine les coordonnées de mon point d'insertion de mon bloc "FLECHE" ce qui me donne le lisp suivant:

(defun c:FL()
(setvar "cmdecho" 0)
(setq cc (ssget "_X" '((2 . "CARTOUCHEA3"))))
(setq ena (ssname cc 0))
(setq pnt (cdr (assoc 10 (entget ena))))
(setq xo (rtos (car pnt) 2 4))
(setq x1 (atof xo))
(setq yo (rtos (cadr pnt) 2 4))
(setq y1 (atof yo))
(setq x2 (- x1 179))
(setq y2 (+ y1 85.9108))
(setq x3 (- x1 190))
(setq y3 (+ y1 87.9108))
(setq x4 (+ x1 0.5))
(setq y4 (+ y1 103.9108))
(setq x5 (- x1 255.4961))
(setq y5 (+ y1 57.9108))
(setq x6 (- x1 209.4981))
(setq y6 (+ y1 248.9108))
(setq pti2 (list x2 y2))
(setq pti3 (list x3 y3))
(setq pti4 (list x4 y4))
(setq pti5 (list x5 y5))
(setq pti6 (list x6 y6))
(command "effacer" "boite" pti3 pti4 "" "")
(command "effacer" "boite" pti5 pti6 "" "")
(command "inserer" "FLECHE" pti2 "1" "1" "0")
(setvar "cmdecho" 1)
)

 

Le problème c'est que lorsque j’exécute le lisp mon bloc FLECHE ne s’insère pas au point pti2 mais legerement en dessous...

Concrètement si je lance le lisp ma flèche est mal positionné et pourtant lorsque je tape la commande suivante:

Commande: !pti2
(215.0 90.9108)

ce qui represente bien le point d'insertion recherché!

Pire encore,lorsque je tape la commande suivante :

Commande: l
LIGNE Spécifiez le premier point: !pti2
(215.0 90.9108)

Spécifiez le point suivant ou [annUler]:

le point d'insertion du premier point ne corresponds pas au point (215,90.9108) :blink:

Alors que si j'effectue la commande suivante:

Commande: l
LIGNE Spécifiez le premier point: 215,90.9108

Spécifiez le point suivant ou [annUler]: *Annuler*

le point d'insertion du premier point corresponds bien aux coordonnées 215,90.9108!!

 

 

Si quelqu'un y comprends quelque chose je serais ravie de connaitre le pourquoi du comment de la chose

Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson

Posté(e)

As-tu correctement désactivé les ACCROBJS ?

 

Sinon, vite vu, je te prie de supprimer :

	   (setq xo (rtos (car pnt) 2 4))(setq x1 (atof xo))
   (setq yo (rtos (cadr pnt) 2 4))(setq y1 (atof yo))

au profit de

	   (setq x1 (car pnt) y1 (cadr pnt))

 

Passer par des STRING est inutile et dévaste la précision.

Bureau d'études dessin.

Spécialiste Escaliers

Développement - Formation

 

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

coucou

 

est-ce que tu n'aurais pas un "accrochage" actif ?

 

j'ai regardé ton lisp,

je ne comprends pas tout, aussi si tu nous donnes

la constante à appliquer par rapport au point d'insertion du bloc "cartouchea3"

on va te faire quelque chose de "plus propre"

c'est quelque peu "brouillon".

 

c'est normal qu'en phase d'apprentissage on fasse comme tu fais

mais c'est aussi normal, que nous,

on t'indique de meilleures façons de faire.

 

 

Amicalement

Posté(e)

Alors là j'en tombe des nues :o

J'ai effectivement désactivé le mode d'accrochage et tout marche impeccablement :D

Dire que je me suis tapé la tete contre les murs durant des heures sans avoir trouvé...mille merci pour votre aide et vos conseils!!

Tramber je prends acte de tes conseils et éviterai autant que possible les conversions et manipulation de chaine de caractère

Didier voici l'esprit de mon lisp.J'ai une page de garde A3 avec un cartouche,une liste de folio représente sous la forme d'un tableau avec des croix placé en fonction de l'indice impacté et du numéro de folio...sur ce folio je cherche a implanté un bloc flèche et a effacer certaine partie du folio.Le truc c'est que mon folio n'est implanté au même endroit suivant les dossiers que j'ouvre,je suis donc obligé pour être sur de mes boites d'effacements se trouve au bonne endroit et n'efface pas n'importe quoi,de trouver un point de repère qui se trouve sur le folio.Ce point qui me servira de 0,0,0 en quelque sorte sera le point d'insertion d'un bloc nommé "CARTOUCHEA3" qui figure sur ma page de garde.Donc de ce point je détermine les coordonnées du point d'insertion de mon bloc ainsi que de mes fenêtres d'effacement en faisant un simple calcul de translation.

 

Dans mon lisp cela donne la chose suivante:

(setvar "cmdecho" 0)
(setq cc (ssget "_X" '((2 . "CARTOUCHEA3"))))
(setq ena (ssname cc 0))
(setq pnt (cdr (assoc 10 (entget ena))))
(setq xo (rtos (car pnt) 2 4))
(setq x1 (atof xo))
(setq yo (rtos (cadr pnt) 2 4))
(setq y1 (atof yo))

Ici je selectionne mon bloc "CARTOUCHEA3" et j'extrait les coordonnées de son point d'insertion qui sont x1 et y1

 

(setq x2 (- x1 179))
(setq y2 (+ y1 85.9108))
(setq x3 (- x1 190))
(setq y3 (+ y1 87.9108))
(setq x4 (+ x1 0.5))
(setq y4 (+ y1 103.9108))
(setq x5 (- x1 255.4961))
(setq y5 (+ y1 57.9108))
(setq x6 (- x1 209.4981))
(setq y6 (+ y1 248.9108))

La commence le calcul des points fait a partir des coordonnées du point d'insertion du bloc qui me servent de référant pour les coordonnées de mes autres point

 

(setq pti2 (list x2 y2))
(setq pti3 (list x3 y3))
(setq pti4 (list x4 y4))
(setq pti5 (list x5 y5))
(setq pti6 (list x6 y6))

Ici je compose mes coordonnées de mes points

 

(command "effacer" "boite" pti3 pti4 "" "")
(command "effacer" "boite" pti5 pti6 "" "")
(command "inserer" "FLECHE" pti2 "1" "1" "0")
(setvar "cmdecho" 1)

Une fois mes points définis,j’exécute les différentes commande associés

 

Voilà Didier tu sais tout :D

 

En tout cas mille merci pour vos aides et pour le temps que vous prenez pour nous répondre

Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson

Posté(e)

coucou

 

pour ce qui est de te taper la tête contre les murs,

j'ai une bonne et une mauvaise nouvelle,

 

la bonne, c'est qu'il existe des pommades qui effacent les hématomes,

 

la mauvaise, c'est que tu n'as pas fini, si tu persistes dans le lisp,

de te cogner la tête contre les murs.

 

je viens de t'envoyer un message privé, tiens-moi au courant, s'il te plaît.

 

amicalement

Posté(e)

Bonjour,

 

la mauvaise, c'est que tu n'as pas fini, si tu persistes dans le lisp,

de te cogner la tête contre les murs.

 

Tout a fait d'accord avec toi Didier, mais si on insiste bien, une fenêtre fini par s'ouvrir et c'est le "bonheur".

 

par contre, il m'arrive d'utiliser de petits lisp pour insérer des objets dans mes cartouches qui sont bien plus simples.

 

Car mes cartouches, étant placés dans l'espace papier, sont toujours au 0,0.

Donc pas besoins de relativiser le point d'insertion.

 

le cartouche au 0,0 est de toute façon, une règle a suivre (si possible) car facilite grandement les manipulations automatiques en espace papier comme l'impression ou la création de fenêtre.

 

Bon courage

Posté(e)

Coucou

 

une fenêtre, me dis pas que c'est pour cette raison que Bill

a choisi d’appeler son OS WIndows...

 

pour ce qui est du point 0,0, c'est une très bonne habitude

toutefois, le cartouche n'est pas OBLIGATOIREMENT en bas gauche

mais il est bien souvent UNIQUE

 

d'où l'intérêt de rechercher le point d'insertion de ce dernier.

 

amicalement

Posté(e)

Merci pour vos points de vue

Je ne savais pas que je pouvais désactiver l'accroche objet avec "_none" Patrick_35.

J'avais pour ma part plutot pensé sur OSMODE mais ta methode est plus rapide ;)

J'ai aussi l'habitude de mettre mes cartouches en 0,0 Fraid mais quand tu récupères des dessins fait par d'autre personne qui bricole des trucs sur autocad comme explosé des hachures pour pouvoir les modifier tu es obligé de faire avec car tu n'as pas le budget temps pour tout reprendre.

Pour ce qui est de ma tête elle est entrain de reprendre forme humaine...tout doucement B)

Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson

Posté(e)

Coucou

 

une fenêtre, me dis pas que c'est pour cette raison que Bill

a choisi d’appeler son OS WIndows...

 

pour ce qui est du point 0,0, c'est une très bonne habitude

toutefois, le cartouche n'est pas OBLIGATOIREMENT en bas gauche

mais il est bien souvent UNIQUE

 

d'où l'intérêt de rechercher le point d'insertion de ce dernier.

 

amicalement

 

En bas à gauche ? je n'ai jamais vu de plans avec le cartouche à gauche, toujours à droite

Posté(e)

En bas à gauche ? je n'ai jamais vu de plans avec le cartouche à gauche, toujours à droite

 

Dans les entreprises de TP c'est courant

 

Mais cela n'a pas d'importance que cela soit a droite ou a gauche, du moment que l'on sait ou il est par rapport au zero.

 

Et c'est aussi la diversité des chartes graphiques qui justifie d'utiliser des lisps facile à éditer ainsi que de factoriser afin de ne pas recommencer a chaque charte.

 

Les Maitres lisp de ce site nous le montre tout le temps, l'Autolisp est un language fonctionnel.

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é