Aller au contenu

fonction trans et sco


mlon

Messages recommandés

Bonjour j'essaie de récupérer les coordonnées exactes de lwpolyline.

Je suis bien tombé sur un message de Patric_35 relantant ses déboires avec trans .

d'ailleurs dans ce post , il est dit que pour récupérer les coordonnées SCU d'un point il faut faire

 

(trans (cdr (assoc -10 ent)) (cdr (assoc -1 ent)) 1)

 

celà ne fonctionne pas (du moins je n'y arrive pas)

 

par contre

 

(trans (cdr (assoc 10 ent)) (cdr (assoc -1 ent)) 1)

 

si le scu courant n'est pas le général ça fonctionne.

 

Par contre si le scu courant est le général

(trans (cdr (assoc 10 ent)) (cdr (assoc -1 ent)) 1)

me renvoie le meme point que

(trans (cdr (assoc 10 ent)) (cdr (assoc -1 ent)) 0) ; jusque là tout est normal...

qui est aussi le meme point que

(cdr (assoc 10 ent))

 

autrement dit pas de transformation...

 

je sais ce que je sais mais comment connaître mon ignorance

Lien vers le commentaire
Partager sur d’autres sites

Salut,

 

Si çà peut t'aider, j'avais mis au point une façon de créer une LWPOLYLINE avec entmake. J'ai aussi été confronté au problème de SCU, voilà comment j'ai résolu le problème (il y a sûrement moyen de faire plus élégant) :

 

(entmake
     (list '(0 . "LWPOLYLINE")
    '(100 . "AcDbEntity")
    '(100 . "AcDbPolyline")
    '(90 . 4)					    ; nombre de sommets
    '(70 . 1)					    ; ouverte (0) ou fermée (1)
    (cons 38 (- (caddr pt1) (caddr (trans '(0 0) 0 1)))) ; élévation
    (cons 10 (trans pt1 1 (EXTR_DIR)))
    (cons 10 (trans pt4 1 (EXTR_DIR)))
    (cons 10 (trans pt2 1 (EXTR_DIR)))
    (cons 10 (trans pt3 1 (EXTR_DIR)))
    (cons 210 (EXTR_DIR))			    ; direction d'extrusion
     )
   ) 

avec :

 

;;; EXTR_DIR Retourne la direction d'extrusion du SCU courant

(defun EXTR_DIR	()
 (mapcar '- (trans '(0 0 1) 1 0) (trans '(0 0 0) 1 0))
)

 

C'est, si j'ai bien compris, l'inverse de ce que tu veux faire, mais avec la direction d'extrusion et l'élévation tu dois arriver à traduire les coordonnées des sommets.

 

À plus.

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Re,

 

Je pense que ceci doit répondre à ta question :

(mapcar	'+
(trans (cdr (assoc 10 ent)) (cdr (assoc 210 ent)) 1)
(list 0 0 (cdr (assoc 38 ent)))
) 

 

Attention ! Çà ne marche que si le SCU courant est parallèle au SCO.

 

[Edité le 21/10/2005 par (gile)]

Gilles Chanteau - gileCAD - GitHub
Développements sur mesure pour AutoCAD

Lien vers le commentaire
Partager sur d’autres sites

Merci du soutien mais entre temps je me suis rendu compte qu'il y avait une différence entre la réponse affichée et la véritable valeur (en effet l'affichage est apparemment arrondi mais si on se sert de la variable associée, la vraie valeur est prise en compte...)

Donc en fait ça roule impec depuis le départ...

 

vu que j'y ai passé la moitié de l'aprem je suis en plein "grand moment de solitude" là!!!

 

(suis quand meme un gros nanard sur ce coup là)

je sais ce que je sais mais comment connaître mon ignorance

Lien vers le commentaire
Partager sur d’autres sites

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é