Aller au contenu

WiPEOUT code DXF pas cohérent le 14!!!


Maximilien

Messages recommandés

Je cherche à comprendre ce satané WIPEOUT en code DXF Or je tombe sur un OS

exemple pour entourer un rectangle de 45cmx6,4cm dont le pt 0,0,0 est au centre gravité :

 

 (entmake 
(list
'(0 . "WIPEOUT")
'(100 . "AcDbEntity")
'(67 . 0)
'(8 . "0")
'(62 . 0)
'(6 . "ByBlock")
'(48 . 0.5)
'(100 . "AcDbWipeout")
'(90 . 0)
(cons 10 (list -0.23 -0.037 0.0))
(cons 11 (list 0.46 0.0 0.0))
(cons 12 (list 0.0 0.46 0.0))
(cons 13 (list 1.0 1.0 0.0))
'(70 . 7)
'(280 . 1)
'(281 . 50)
'(282 . 50)
'(283 . 0)
'(71 . 2)
'(91 . 5)
(cons 14 (list -0.5 0.5 0.0))
(cons 14 (list 0.5 0.5 0.0))
(cons 14 (list 0.5 0.33913 0.0))
(cons 14 (list -0.5 0.33913 0.0))
(cons 14 (list -0.5 0.5 0.0))
))

mais pour un rectangle de 195cmx16,6cm

 ....
(cons 14 (list -0.5 -0.410204 0.0))
(cons 14 (list 0.5 -0.410204 0.0))
(cons 14 (list 0.5 -0.5 0.0))
(cons 14 (list -0.5 -0.5 0.0))
(cons 14 (list -0.5 -0.410204 0.0))

j'y perd mon latin....... j'arrive pas à trouver à quoi correspond les données du code DXF 14 l'aide d'AutoCAD sur ce sujet est extrêment obsure :

Sommet de contour de délimitation (dans le SCO)

DXF : valeur X ; APP point 2D (entrées multiples)

REMARQUE

1) Pour le type de contour de délimitation rectangulaire, deux coins opposés doivent être spécifiés. La valeur par défaut est (–0.5,–0.5), (size.x–0.5, size.y–0.5).

2) Pour le type de contour de délimitation polygonal, vous devez spécifier au moins trois sommets. Les sommets polygonaux doivent être répertoriés par ordre séquentiel

Donc si vous connaisez la formule pour calculer ce satané code 14 je suis ouvert....

 

[Edité le 12/12/2005 par Maximilien]

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

AutoCAD, Revit, GstarCAD, Fisa-CAD, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Lien vers le commentaire
Partager sur d’autres sites

Salut Maximilien,

 

Ce qu'il me semble avoir compris :

 

Les codes 11 et 13 déterminent, respectivement en X et enY, la taille du carré (pixel)

 

Le code 13 dit qu'un seul pixel en X comme en Y inclue le polygone.

 

Dans ton premier exemple le pixel fait 0.46 x 0.46 unités et son coin supérieur gauche est confondu avec le point de départ du wipeout (code 10)

 

Les codes 14 délimitent le cadre du wipeout à l'intérieur de ce carré, avec pour origine le centre du carré et pour unité le coté du carré : d'où (-0.5 0.5 0.0) le coin supérieur gauche, (0.5 0.5 0.0) coin superieur droit, (0.5 0.33913 0.0) coin inférieur droit ...

 

Illustration : en blanc, le wipeout coté en unité de dessin, en rouge le pixel coté en pixel.

 

http://img17.imageshack.us/img17/9770/sanstitre3ci.jpg

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

Lien vers le commentaire
Partager sur d’autres sites

merci cher (gile) d'avoir solutionner mon problème, je pourrais enfin mettre des Wipe out dans mes blocs radiateurs :) ;)

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

AutoCAD, Revit, GstarCAD, Fisa-CAD, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Lien vers le commentaire
Partager sur d’autres sites

Récapitulons :

pour encadrer avec un WipeOUT un rectangle de longueur = L et de largeur = EP

avec un déport de Dp

 

Nous avons :

 

 .....
(cons 10 (list (- (/ L 2) - Dp) (- (/ Ep 2) L Dp) 0.0))
(cons 11 (list (+ (* 2 Dp) L) 0.0 0.0))
(cons 12 (list 0.0 (+ (* 2 Dp) L) 0.0))
(cons 13 (list 1.0 1.0 0.0))
.....
(cons 14 (list 0.5 -0.5 0.0))
(cons 14 (list 0.5 (- (/ (+ (* 2 Dp) Ep) (+ (* 2 Dp) L)) 0.5) 0.0))
(cons 14 (list -0.5 (- (/ (+ (* 2 Dp) Ep) (+ (* 2 Dp) L)) 0.5) 0.0))
(cons 14 (list -0.5 -0.5 0.0))
(cons 14 (list 0.5 -0.5 0.0))

Dessinateur AutoCAD, Modeleur BIM, consultant informatique logiciels métier

Lenovo ThinkStation P330 i9 9900K 32Gb RAM 512 SSD + 1To

AutoCAD, Revit, GstarCAD, Fisa-CAD, Microsoft Office

 

PlaquetteDeplianteMars2024.pdf

Lien vers le commentaire
Partager sur d’autres sites

J'ai un peu dégrossi l'histoire, pour traduire une liste de points en coordonnées pour les codes dxf de WIPEOUT. Çà semble marcher, mais ce n'est qu'une ébauche.

 

Soit pt_lst une liste de points (les sommets d'un polygone) définis dans le SCU.

 

Définition de la direction d'extrusion du SCU courant

(setq ucszdir (trans '(0 0 1) 1 0 T)) 

 

Calcul du point d'insertion (code 10)

(setq ins (list	(apply 'min (mapcar 'car pt_lst))
	(apply 'min (mapcar 'cadr pt_lst))
	(caddr (car pt_lst))
  )
)

 

Calcul du côté du pixel

(setq pix (max (- (apply 'max (mapcar 'car pt_lst)) (car ins))
       (- (apply 'max (mapcar 'cadr pt_lst)) (cadr ins))
  )
)

 

Calcul du centre du pixel

(setq cen (mapcar '+ ins (list (/ pix 2) (/ pix 2) (caddr ins))))

 

Traduction des cordonnées des points de pt_lst en dxf14

(setq
 dxf14_lst (mapcar
      '(lambda (pt)
	 (mapcar '(lambda (x) (/ x pix)) (mapcar '- pt cen))
       )
      pt_lst
    )
 dxf14_lst (mapcar '(lambda (pt) (mapcar '* pt '(1 -1 1))) dxf14_lst)
)

 

Traduction du point d'insertion dans le SCG

(setq dxf10 (trans ins 1 0))

 

Définition des vecteurs en u et v du pixel

(setq	dxf11 (list pix 0.0 0.0)
dxf12 (list 0.0 pix 0.0)
 )
 (foreach v '(dxf11 dxf12)
   (set v
 (trans
   (polar '(0 0)
	  (+ (angle '(0 0) (eval v))
	     (angle '(0 0) (trans (getvar "UCSXDIR") 0 ucszdir))
	  )
	  pix
   )
   ucszdir
   0
 )
   )
 )

 

Création d'une liste de paires pointées pour les codes dxf 14

(setq dxf14_lst	(mapcar '(lambda (pt) (cons 14 pt)) dxf14_lst)
     dxf14_lst	(append dxf14_lst (list (car dxf14_lst)))
)

 

Création du wipeout

(entmake
 (append
   (list
     '(0 . "WIPEOUT")
     '(100 . "AcDbEntity")
     '(100 . "AcDbWipeout")
     (cons 10 dxf10)
     (cons 11 dxf11)
     (cons 12 dxf12)
     '(13 1.0 1.0 0.0)
     '(70 . 7)
     '(280 . 1)
     '(281 . 50)
     '(282 . 50)
     '(283 . 0)
     '(71 . 2)
     '(91 . 5)
   )
   dxf14_lst
 )
)

 

 

[Edité le 15/12/2005 par (gile)]

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

Lien vers le commentaire
Partager sur d’autres sites

J'ai modifié les lignes de code ci-dessus.

 

Çà fonctionne maintenant quelque soit le SCU (en 3D) et quelque soit l'élévation par rapport au plan de ce SCU

 

La méthode n'est pas trés élégante, et ne renvoie pas forcément les mêmes coordonnées qu'un wipeout crée à partir d'une polyligne avec les mêmes points.

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

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é