chris_mtp Posté(e) le 12 juin 2009 Auteur Partager Posté(e) le 12 juin 2009 Bonjour, J'ai essayé les deux méthodes.Les deux marchent bien mais comme mes lignes de commandes sont prédéfinies je vais faire plusieurs bat qui se lanceront selon le choix en entrée. Par contre, après des tests, j'ai le retour application Win32 non valide alors qu'avant je n'avais cette erreur de Windows. Je suis sous Vista. Peut être çà ? et mes lignes de code sont les mêmes.Si vous avez une idée.Et bseb67, si tu peux voir mes questions sur les matrices.Merci encore de votre aide.John. Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 12 juin 2009 Partager Posté(e) le 12 juin 2009 Salut, À propos des matrices, je ne comprends pas ce que sont tes matrices, ni de quoi elles sont constituées. Tu parles de "transformation d'Helmert"," matrice des inconnues", "matrice des poids", "matrice N des équations normales", "Inverse de la matrice N", "Matrice des appoints", "Matrice des résidus" comme si tout le monde voyait très bien ce que tu veux dire.Ces termes sont certainement du langage technique lié à ton métier, mais dis toi qu'ici ce ne sont pas forcément des gens de ta branche qui pourraient te répondre. Personnellement, j'ai un peu travaillé sur les calculs avec des matrices en LISP, mais je ne comprends absolument rien à ce que tu veux faire. Je peux juste te donner des trucs d'ordre général surtout en ce qui concerne les matrice de transformation, c'est à dire des matrices carrées qui décrivent des fonctions linéaires (mises à l'échelle, rotations, translations) applicables à des vecteurs. En LISP une matrice est une liste de sous-listes où chaque sous-liste correspond à une rangée (ou ligne ou vecteur ligne). On traite donc les matrices avec les mêmes outils que pour les listes. Les fonctions qu'on peut trouver dans le LISP Vecteur&Matrices, en bas de cette page (et qui ne sont pas toutes de moi), sont des implémentations en LISP de calcul matriciel simple. Dans ce que tu as écrit : (setq MX (setq MX '((a) (b) (p) (q)))) retournera ((a) (b) (p) (q)) sans évaluer les variables a, b, p q.Si tu veux que les variables soient évaluées, il ne faut pas "quoter" la liste mais la construire avec la fonction list :(setq MX (list a b p q)) si a, b, p q sont des liste MX sera une matrice. (setq MP (Imat (sslength MK)))il faut écrire (setq MP (Imat (length MK))) pour avoir la matrice d'identité dont la dimension est égale au nombre de rangées de MK, par exemple pour 3 : ((1 0 0) (0 1 0) (0 0 1)) (setq MN '((mxm (mxm (trp MA) MP) MA)))Tu utilises les fonctions trp et mxm (qui ne sont pas de moi) trp retourne la matrice transposée exemple (trp '((1 2 3) (4 5 6) (7 8 9))) retourne ((1 4 7) (2 5 8) (3 6 9))Utilisée avec une matrice qui n'est pas carrée elle retourne une matrice dont le nombre de rangées est égale au nombre de colonnes de la matrice :(trp '((1 2 3) (4 5 6))) retourne ((1 4) (2 5) (3 6)) mxm multiple deux matrices, c'est une opération utilisée pour combiner des matrices de transformations ( matrice carrées et de même dimension).Utilisée avec des matrices non carrées ou de dimension différentes mxm risque de ne pas donner les résultats espérés. (setq MN1 '((InverseMatrix MN)))InverseMatrix retourne la matrice inverse d'une matrice carrée si elle est réversible.Cette fonction est utilisée pour trouver la matrice décrivant la transformation inverse d'une matrice de transformation.Elle ne fonctionne qu'avec des matrices carrées inversibles. (setq MV '((m+m (mxm MA MDX) (- MK))))(- MK) ne fonctionnera pas, la fonction - n'accepte comme argument que des nombres (pas des listes) (setq MQ0 (sqrt (/ MY2 (- (sslength MA) 4))))Cette expression non plus, ne pourra pas fonctionner, tu passes comme argument à la fonction / (diviser) une liste (matrice) et un nombre. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 12 juin 2009 Partager Posté(e) le 12 juin 2009 Bonjour à toutes et tous, Un site intéressant, On y trouve ça par exemple concernant la transformation d'HELMERT 7 paramètres de transformation dans l'espace => 3 Translations3 Rotations 1 facteur de distorsion dans le plan (ou d'échelle permettant le passage d'un système à l'autre) paramètres de transformation dans le plan => 2 Translations1 Rotations (autour de l'axe Z)1 facteur de distorsion dans le plan (ou d'échelle permettant le passage d'un système à l'autre) Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
chris_mtp Posté(e) le 13 juin 2009 Auteur Partager Posté(e) le 13 juin 2009 Bonjour Gile Si je ne peux pas utiliser les fonctions mxm et trp qui ne marchent que sur des matrices carrés, je vais devoir trouver une autre solution car alors mon calcul d'Helmert par les moindres carrés est inutile. Le principe du Lisp que je veux faire est le suivant .J'ai un dessin Autocad dans un système avec des blocs, des polylignes 2d et 3d, des textes et .....Je veux convertir ce dessin d'un ssytème de coordonnées A vers un autre système B.Pour cela, je fais un listing de mes points dans le système A.Je converti ensuite ce listing de points de coordonnées A en un listing de points de coordonnées B.via un utilitaire Batch sous dos. Je calcule ensuite les paramètres de la transformation d'Helmert à partir des deux listings de pointset j'applique la transfo à mon dessin. Si le calcul matriciel ne marche pas, il faut dans ce cas que je trouve une solution.Je pensais déplacer directement chaque entité du système A vers le système B qu'avec des points, des blocs, des polylignes 2D et 3D mais je bloque sur la manip. Si vous avez d'autres idées ou quoi, merci de votre aide.John. Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 13 juin 2009 Partager Posté(e) le 13 juin 2009 Salut, Je ne suis toujours pas sûr de bien comprendre, mais il existe la fonction Visual LISP vla-TransformBy qui permet justement de "transformer" des objets graphiques à l'aide d'une matrice de transformation. Si tu précises ce que sont les systèmes de coordonnées A et B ou un moyen de les acquérir (SCG, SCU enregistrés) je pourrais peut-être essayer de faire quelque chose. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
chris_mtp Posté(e) le 13 juin 2009 Auteur Partager Posté(e) le 13 juin 2009 Merci Gile En topographie, on distingue plusieurs systèmes de coordonnées et pour être simple clair et bref, un même point peut avoir plusieurs coordonnées exprimé dans différents systèmes. Exemple simple,un point M dans le système A aura pour coordonnées X=1000 e Y=2000Dans le sysème B, ce point M aura pour coordonnées X=42536.236 et Y=7586.325C'est juste un exemple.J'ai déjà fait un lisp qui extrait les coordonnées de chaque entité type point, bloc, polylignes 2D et 3D d'un dessin Autocad puis la partie qui convertit le listing de points du système A et B. Les deux listings ont le même nombre de points et sont du type N X Y Zmais à chaque point des coordonnées différentes comme décrit précédemment. Exemple : Fichier dans le système A1 1000 2000 02 1500 2300 0 Fichier dans le système B (converti en dos)1 42536.236 7586.325 02 43835.628 7851.412 0 Le premier listing dans le système est extrait directement d'AutoCAD dans le SCG et le second est issu d'une transformation d'un autre programme appelé CircéBatch qui est un utilitaire pour les géomètres. Merci par avance de ton aide.John. Lien vers le commentaire Partager sur d’autres sites More sharing options...
chris_mtp Posté(e) le 13 juin 2009 Auteur Partager Posté(e) le 13 juin 2009 A Patrick_35,Salut j'ai tout essayé pour la commande MS-DOs mais rien à faire,si je double-clique sur le bat pour executer la commande DOS sous windows, ca marche. Si fais appel au bat avec une commande lisp d'AutoCAD, ca ne marche pas.Si je fais la ligne de commande de Bonuscad, non plus. Une idée ou bien je dois me taper la commande DOS à la main en arrêtant le lisp durant le traitement DOS. Merci par avance de ton aide.John Lien vers le commentaire Partager sur d’autres sites More sharing options...
chris_mtp Posté(e) le 14 juin 2009 Auteur Partager Posté(e) le 14 juin 2009 Pour la commande MSDOS c'est bon j'ai pu lancer la commande de conversion de coordonnées à partir d'un lisp avec un bat, le problème venait en fait de mon fichier en lecture seule et d'un accès refusé sous VIsta. Reste à trouver la solution pour déplacer le dessin d'un système de coordonnées A vers un autre système B. Merci par avance de votre aide.John. Lien vers le commentaire Partager sur d’autres sites More sharing options...
chris_mtp Posté(e) le 14 juin 2009 Auteur Partager Posté(e) le 14 juin 2009 BonjourUne autre question simple, Est il possible d'intégrer les paramètres d'une transformation d'Helmert dans une matrice de transformation via la fonction vla-TransformBy puis d'appliquer cette transformation à l'ensemble d'un dessin AutoCAD en sélectionnant toutes les entités ? Je me pose la question car j'ai trouvé sur le net un code vba qui permet de calculer les paramètres d'Helmert à partir de deux fichiers textes de semis de points dans deux systèmes de coordonnées différents au format N X Y Z.Ne connaissant rien au vba, je pensais qu'en l'adaptant un peu, ca doit pouvoir le faire Non ? Le code se trouve sur le lien http://georezo.net/forum/viewtopic.php?id=45969 Je remercie par avance l'auteur de ce code qui est Christophe V Merci par avance de votre aide.John. Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 14 juin 2009 Partager Posté(e) le 14 juin 2009 Salut, Est il possible d'intégrer les paramètres d'une transformation d'Helmert dans une matrice de transformation via la fonction vla-TransformBy puis d'appliquer cette transformation à l'ensemble d'un dessin AutoCAD en sélectionnant toutes les entités ? Je ne sais pas ce que sont les paramètres de Helmert.Si ils décrivent complètement un Système de Coordonnées (SC) : origine, vecteur axe X, vecteur axe Y, vecteur Axe Z et que ce SC décris bien un repère orthonormé (axes perpendiculaires entre eux et de même norme) on peut en faire une matrice utilisable avec vla-TransformBy. Mais d'après ton exemple : Fichier dans le système A1 1000 2000 02 1500 2300 0 Fichier dans le système B (converti en dos)1 42536.236 7586.325 02 43835.628 7851.412 0 On voit que les deux système de coordonnées ne sont pas à la même échelle. vla-TransformBy ne peut être utilisé qu'avec des matrices de transformation dont l'échelle est uniforme : la norme (ou longueur) des vecteurs X Y et Z doit être égale. Donne un exemple de ce que tu obtiens comme paramètres de Helmert et on verra si c'est utilisable. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
chris_mtp Posté(e) le 14 juin 2009 Auteur Partager Posté(e) le 14 juin 2009 Bonjour Gile, L'exemple que je t'ai donné indique juste qu'un même point peut avoir deux coordonnées différentes dans deux systèmes différents. Les paramètres d'une transformation d'Helmert sont du type une translation en x de l'ordre de 202705m environ à arrondir à 5 decimalesune translation en y de l'ordre de 7321561m environ à arrondir à 5 decimalesune rotation de l'ordre de -0.393 degresun facteur d'échelle du type 0.999995 C'est une transformation en 2D en fait. Dans le code vba, ces données sont calculés respectivement par les variables P, Q B et A. Tu penses qu'on peut adapter le code vba en lisp ou bien conserver le code vba mais en lui faisant appel en lisp ? Merci de ton aide.John. Lien vers le commentaire Partager sur d’autres sites More sharing options...
chris_mtp Posté(e) le 17 juin 2009 Auteur Partager Posté(e) le 17 juin 2009 Bonjour à tous, Personne en lisant le code vba ne peut me dire comment doit être formaté mes fichiers textes pour calculer les paramètres de ma transformation d'Helmert ? Merci par avance de votre aide.John. Lien vers le commentaire Partager sur d’autres sites More sharing options...
chris_mtp Posté(e) le 28 février 2010 Auteur Partager Posté(e) le 28 février 2010 Bonjour Gile, Peux ton avec le VB NEt créer des matrices un peu plus simplement car en lisp ou vlisp c'est pratiquement impossible en VB net non ???? Merci par avance de ta réponse.John. Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 28 février 2010 Partager Posté(e) le 28 février 2010 Salut, Le problème n'est pas dû à l'utilisation d'un langage ou d'un autre (et moi c'est plutôt C# que VB.net). On peut très bien construire des matrices en LISP en faisant des listes de listes et on trouve facilement des routines de calcul matriciel (ici par exemple).La difficulté, pour moi est plutôt de comprendre la demande, puis de trouver et comprendre un algorithme à implémenter. Donc si j'ai bien compris, il s'agit d'utiliser une transformation de Helmert pour retourner la matrice de transformation entre deux systèmes de coordonnées à partir d'une liste de points dans le système de coordonnées de départ et une liste des mêmes points dans le système de coordonnées d'arrivée. J'ai essayé de faire quelque chose en LISP : la routine Helmert retourne une matrice de transformation (4X4) utilisable avec : (vla-TransformBy obj (vlax-tmatrix (Helmert pts1 pts2)))où pts1 est la listes des points dans le système de départ et pts2 celle des points dans le système d'arrivée.Les listes de points sont de la forme : ((x1 y1 z1) (x2 y2 z2) ... (xn yn zn)) et doivent contenir le même nombre de points dans le même ordre. Exemple d'utilisation :(setq lst1 '((1000 2000 0) (1500 2300 0)) lst2 '((42536.236 7586.325 0) (43835.628 7851.412 0)) ) (Helmert lst1 lst2)Retourne : ((2.14477 0.756689 0.0 38878.1) (-0.756689 2.14477 0.0 4053.47) (0.0 0.0 2.27434 0.0) (0.0 0.0 0.0 1.0)) ;; Helmert (gile) ;; Retourne la matrice de transformation entre deux systèmes de coordonnées ;; ;; Arguments ;; pts1 : la liste des points dans le système de départ ;; pts2 : la liste des points dans le système d'arrivée (defun Helmert (pts1 pts2 / mat1 mat2 mat3 mat4 mat5 lst scl) (setq mat1 (apply 'append (mapcar '(lambda (x) (list (list (car x) (cadr x) 1. 0.) (list (cadr x) (- (car x)) 0. 1.) ) ) pts1 ) ) mat2 (apply 'append (mapcar '(lambda (x) (list (list (car x)) (list (cadr x)))) pts2 ) ) mat3 (trp mat1) mat4 (mxm mat3 mat1) mat5 (mxm mat3 mat2) lst (apply 'append (GaussJordan mat4 mat5)) scl (sqrt (+ (expt (car lst) 2) (expt (cadr lst) 2))) ) (list (list (car lst) (cadr lst) 0. (caddr lst)) (list (- (cadr lst)) (car lst) 0. (cadddr lst)) (list 0. 0. scl 0.) '(0. 0. 0. 1.) ) ) ;; GaussJordan (gile) ;; Applique la méthode de Gauss-Jordan à deux matrices ;; ;; Arguments : 2 matrices (defun GaussJordan (m1 m2 / len mat todo cnt row col piv new) (setq len (length m1)) (if (= len (length m2)) (progn (setq mat (mapcar '(lambda (x1 x2) (append x1 x2)) m1 m2) todo mat cnt 0 ) (while todo (setq row (nth cnt mat) col (mapcar '(lambda (x) (abs (car x))) todo) ) (repeat (vl-position (apply 'max col) col) (setq mat (append (vl-remove row mat) (list row)) row (nth cnt mat) ) ) (if (equal (setq piv (car row)) 0.0 1e-14) (setq mat nil todo nil ) (setq piv (/ 1.0 piv) new (mapcar '(lambda (x) (* x piv)) row) mat (mapcar '(lambda (r / e) (setq e (car r)) (if (equal r row) (cdr new) (cdr (mapcar '(lambda (x n) (- x (* n e))) r new ) ) ) ) mat ) todo mat cnt (1+ cnt) ) ) (and todo (repeat cnt (setq todo (cdr todo)))) ) mat ) ) ) ;; TRP ;; transpose une matrice -Doug Wilson- ;; ;; Argument : une matrice (defun trp (m) (apply 'mapcar (cons 'list m))) ;; MXV ;; Applique une matrice de transformation à un vecteur -Vladimir Nesterovsky- ;; ;; Arguments : une matrice et un vecteur (defun mxv (m v) (mapcar (function (lambda (r) (vxv r v))) m) ) ;; MXM ;; Multiplie (combine) deux matrices -Vladimir Nesterovsky- ;; ;; Arguments : deux matrices (defun mxm (m q) (mapcar (function (lambda (r) (mxv (trp q) r))) m) ) ;; VXV ;; Retourne le produit scalaire (réel) de deux vecteurs ;; ;; Arguments : deux vecteurs (defun vxv (v1 v2) (apply '+ (mapcar '* v1 v2))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 1 mars 2010 Partager Posté(e) le 1 mars 2010 Hello Et l'etape suivante, c appliquer cette transformation de Helmert a toutes les entites (ou presque) d'un dessin !? Ce que ne sait pas faire un MAP ou un CIVIL (me semble t-il) ! On va bientot concurrencer Covadis de Geomedia (www.geo-media.com) Humour : CovaSupport (Olivier) "ne va pas etre content" Le Decapode Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 1 mars 2010 Partager Posté(e) le 1 mars 2010 Salut, Et l'etape suivante, c appliquer cette transformation de Helmerta toutes les entites (ou presque) d'un dessin !? Si j'ai bien compris, c'est la demande de chris_mtp.Reste à savoir si la matrice retournée sera toujours acceptée par AutoCAD qui est très pointilleux sur l'uniformité des échelles en X Y et Z pour ses matrices de transformation...Je n'ai pas d'exemple de semis de points dans deux systèmes de coordonnées pour faire les tests... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 1 mars 2010 Partager Posté(e) le 1 mars 2010 Bonjour à toutes et tous, Petit complément technique : Les matrices de transformation "HELMERT" font intervenir, en général, 7 paramètres => 3 Translations;3 Rotations,1 facteur d'échelle (entre un système de projection et un autre,...) EDIT : Non ! A ne pas confondre avec les transformations de données GPS, inexistante bien entendu à l'heure ou M. HELMERT (1843–1917) à poser sa théorie,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 1 mars 2010 Partager Posté(e) le 1 mars 2010 Salut, D'après ce que j'ai pu lire, ce que j'ai donné est une transformation à 4 paramètres :2 translations (X et Y)1 rotation (sur Z)1 facteur d'échelle Autrement dit, le plan de référence entre les deux système est le même, c'est une transformation 2d même si ça fonctionne avec des points 3d. Pour une transformation à 7 paramètres, je n'ai pas (encore) trouvé d'algorithme... Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
lili2006 Posté(e) le 1 mars 2010 Partager Posté(e) le 1 mars 2010 Re, Oui, c'est ok pour faire coïncider deux jeux de coordonnées planes,... Un diaporama sympa C'est exact, j'ai confondu la transformation d'HEMERT avec la transformation de données GPS,... Civil 3D 2025 - COVADIS_18.3b https://www.linkedin...3%ABt-95313341/ Lien vers le commentaire Partager sur d’autres sites More sharing options...
chris_mtp Posté(e) le 1 mars 2010 Auteur Partager Posté(e) le 1 mars 2010 Bonjour, Oui la tranformation d'helmert que je souhaite appliquer n'est qu'une transformation 2D (dans mon cas, le système altimétrique de départ est le même que celui d'arrivée, seul les systèmes planimétriques ne sont pas les mêmes) avec la détermination de 4 valeurs, 2 translations en X et en Y, 1 rotation et 1 facteur d'échelle. Ensuite le but est de pouvoir comme la dit lecrabe appliquer cette transformation par la fonction vla-TransformBy à toutes les entités d'un dessin. Merci pour ta fonction Gile, j'ai des exemples pour valider la fonction.Je fais des tests et je reviens dès que possible et merci encore. C'est balaise quand même. John Lien vers le commentaire Partager sur d’autres sites More sharing options...
chris_mtp Posté(e) le 2 mars 2010 Auteur Partager Posté(e) le 2 mars 2010 Bonjour à tous, Voici les résultats que j'obtiens avec les différents tests que j'ai pu réalisé. ;; Avec Covadis sur 3360 points, Tx=201402.2925m Ty=7324483.3321m Rotation=-0.4091gr Echelle=0.9998;; Avec Covadis sur 5692 points, Tx=201402.3007m Ty=7324483.6571m Rotation=-0.4091gr Echelle=0.9998;; Avec le programme Helmert-dxf sur 5692 points, Tx=201402.5900m Ty=7324483.1000m Rotation=-0.4091gr Echelle=0.9998;; Avec le lisp sur 5692 points, Tx=201402.28395m Ty=7324483.44945m Rotation=-0.40904gr Echelle=0.999783 On peut donc valider les résultats que donnent le lisp.Maitenant, il manquerai plus d'avoir les écarts sur les emqspour chaque facteur.De plus, on peut calculer pour chaque point la différence en x et y des écarts entre le coordonnées des points transformés et les coordonnées des points dans le système d'arrivée Par contre, j'ai un problème quand j'utilise (vla-TransformBy poly (vlax-tmatrix (Helmert polf2 polf))) ; erreur: type d'argument incorrect: VLA-OBJECT avec (setq poly (car (entsel))) ou même (setq test (ssget)) Et Merci Gile encore de ton aide.John Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 2 mars 2010 Partager Posté(e) le 2 mars 2010 Salut, (setq poly (car (entsel))) retourne un nom d'entité (type ENAME).Les fonctions vla-* requièrent des objets de type VLA-OBJECT, il faut convertir le nom d'entité avant de le passer ) la fonction (vla-TransformBy ...) (setq poly (vlax-ename->vla-object (car (entsel)))) (vla-TransformBy poly (vlax-tmatrix (Helmert polf2 polf))) Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
chris_mtp Posté(e) le 3 mars 2010 Auteur Partager Posté(e) le 3 mars 2010 Bonjour Gile, J'ai comparé, testé analyser différents résultats sur les coordonnées dans les systèmes de départ comme d'arrivée et c'est bon, les résutats sont corrects et surtout cohérent entre eux. Par contre, juste une question,comment faire pour appliquer la transformation vla-TransformBy à l'ensemble du dessin en sélectionnant tous les objets sauf Hacures et non à un objet uniquement ?En lisp pur ca va je vois à peu près mais en vlisp ????Merci par avance de ton aide. Je vais de mon côté comment on peut calculer la matrice des emq (écart moyen quadratique sur les 4 facteurs) Translation en X en Y Rotation et Echelle.Je reviens vers toi si j'ai des soucis, .... Merci encore.John Lien vers le commentaire Partager sur d’autres sites More sharing options...
lecrabe Posté(e) le 3 mars 2010 Partager Posté(e) le 3 mars 2010 Hello Je pense qu'il est plus simple d'appliquer ta transformation d'Helmert a une selection AutoCAD classique (Select Objects:) que a TOUT le dessin sauf les hachures ! Car ainsi on traite ce que l'on veut meme si le plus souvent, on ne laisse visible que les objets qui nous interessent (puis une grande fenetre de selection) ! Souvent je traite par exemple que les parcelles par la transformation de MAP (qui malheureusement n'est pas de type Helmert mais Affine me semble t-il) ! Les resultats sont tout a fait correctes (pour moi) mais bon tout le monde veut du Helmert !D'ailleurs quelqu'un peut il m'expliquer pourquoi ??? Donc si tu fais un joli programme qui en plus aura l'avantage de fonctionner sur AutoCAD / MAP / CIVIL / A D T, je pense que la communaute sera fort heureuse de l'utiliser si bien sur, tu le publies !? Merci d'avance, Le Decapode Autodesk Expert Elite Team Lien vers le commentaire Partager sur d’autres sites More sharing options...
(gile) Posté(e) le 3 mars 2010 Partager Posté(e) le 3 mars 2010 Salut, Faire une commande pour invoquer vla-TransformBy sur toutes les entités d'un jeu de sélection n'est pas difficile. Par contre, il reste un problème d'acquisition des données : comment la commande récupère-t-elle (ou calcule-t-elle) la matrice de transformation ? S'il faut lire deux fichiers de points, comment s'assurer du format des fichiers (présence de matricule, séparateur de données etc) ? Il faut aussi que les fichiers contiennent exactement les mêmes points (dans les deux systèmes) et exactement dans le même ordre. Gilles Chanteau - gileCAD - GitHub Développements sur mesure pour AutoCAD Lien vers le commentaire Partager sur d’autres sites More sharing options...
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