BIM G CO Posté(e) le 12 décembre 2005 Posté(e) le 12 décembre 2005 Je cherche à comprendre ce satané WIPEOUT en code DXF Or je tombe sur un OSexemple 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équentielDonc 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 GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
(gile) Posté(e) le 12 décembre 2005 Posté(e) le 12 décembre 2005 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
BIM G CO Posté(e) le 13 décembre 2005 Auteur Posté(e) le 13 décembre 2005 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 GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
BIM G CO Posté(e) le 13 décembre 2005 Auteur Posté(e) le 13 décembre 2005 Récapitulons :pour encadrer avec un WipeOUT un rectangle de longueur = L et de largeur = EPavec 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 GstarCAD, Fisa-CAD, Revit, FisaBIM CVC, Microsoft Office PlaquetteDeplianteMars2024.pdf
bonuscad Posté(e) le 13 décembre 2005 Posté(e) le 13 décembre 2005 (cons 10 (list (- (/ L 2) - Dp) (- (/ Ep 2) L Dp) 0.0)) (- (/ L 2) - Dp) n'est pas correct et génére une erreur -> (- (/ L 2) Dp) Pour ne pas chercher l'erreur ;) Choisissez un travail que vous aimez et vous n'aurez pas à travailler un seul jour de votre vie. - Confucius
(gile) Posté(e) le 13 décembre 2005 Posté(e) le 13 décembre 2005 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
(gile) Posté(e) le 15 décembre 2005 Posté(e) le 15 décembre 2005 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
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