Aller au contenu

chris_mtp

Membres
  • Compteur de contenus

    406
  • Inscription

  • Dernière visite

Tout ce qui a été posté par chris_mtp

  1. MErci pour vos réponses. J'avais essayé avec ssadd mais ca me faisait n'importe quoi car je n'avais pas commencer à partir de la dernière entité crée avant la copie. MErci Tramber mais le vlisp je ne maitrise pas encore, j'ai adopté celle de Gile. J'ai essayé quand même ta fonction elle marche nickel. Merci encore. John
  2. Bonjour à tous, J'essaie de faire une sélection d'objets copiés à partir de d'objets origines. Comment puis je faire ? COncrétement, en lisp avec le code (command "_.copy" ss1 "" ptx ptk) je copie des objets mais comment faire une sélection de ces mêmes objets copiés ? Merci par avance de votre aide. John. [Edité le 18/7/2010 par chris_mtp]
  3. Bonjour à tous, J'essaie de faire une routine pour ajuster des éléments linéaires par rapport à une polyligne fermée mais sérieux, je m'embourbe Voici le code de départ (setq polx (car (entsel "\Sélectionner le contour : "))) (setq ss (ssget '((0 . "LWPOLYLINE,POLYLINE,HATCH,CIRCLE")))) (setq i 0) (repeat (sslength ss) (setq pol (ssname ss i)) (command "_.trim" polx "" pol "") (setq i (1+ i)) ) Mais j'ai constamment le retour en ligne de commande L'objet sélectionné ne coupe pas une arrête, Pourquoi ? Auriez vous une autre méthode pour réaliser ma demande ? Merci par avance de votre aide. John
  4. chris_mtp

    xdata

    Bonjour Bred C'est moi qui déraille, je pensais que la fonction R-xdata servait à renseigner les entités alors que c'est la commande l-xdata qu'il faut utiliser. Désolé de t'avoir fait perdre ton temps sérieux..... C'est pas mal quand même ton code car les possibilités de renseigner des entités sont étendues. Merci encore de ton aide. John
  5. chris_mtp

    xdata

    Bonjour Bred, J'ai testé ton fichier et le lisp en conséquence et j'ai une erreur sur la sélection de l'objet en entrant les données. Je lance le lisp, je rentre les données et j'ai dans la barre des commandes le retour aucun objet sélectionné. De même, si je sélectionne un objet avant de lancer le lisp, je rentre les données et j'ai encore le retour aucun objet sélectionné. Il doit y avoir un problème avec le ssadd,ce qui expliquerai aussi que sur mon fichier ca ne marche pas. J'ai essayé de modifier ton code en intégrant un (car (entsel)) mais en vain. Ce qui expliquerai aussi le retour de s à nil dans mes réponses d'avant. C'est dommage car ton code a l'air pas mal et surtout facile à manipuler, il suffit de modifier la liste des informations à demander par l'utilisateur et c'est bon. J'ai du programmer un truc bien spécifique pour mon chantier car les données sont rentrées dans un textmult (voir lisp de Gile idata) et ensuite je dois les réorganiser pour faire l'export vers Excel. Si tu pouvais jeter un oeil, merci par avance. John
  6. chris_mtp

    xdata

    Bonjour Bred, Non et pourtant j'ai tout essayé, sur un dessin vierge, sur un dessin avec des entités, j'ai essayé de modifié ton code, rien à faire. Mais en ce moment, je me concentre sur l'export d'excel. Ensuite je reviendrai te dire où j'en suis concernant ton lisp. John
  7. chris_mtp

    xdata

    Bonjour, J'ai pu me faire une petite application personnalisé avec les lisp de Gile idata ddata et rdata mais je ne comprend toujours pas pourquoi le lisp de BRed ne marche pas et même avec vos explications. Mon but Bred est de renseigner des entités type Conduites téléphoniques et Electriques représenté par des polylignes 3D pour constituer un mini-SIG et faire un export vers Excel pour intégrer ensuite ces données vers ArcMap dans une table attributaire. Je vais maintenant faire un lisp pour un export formaté vers Excel à partir des données entrées sous Autocad. Avant, je dessinai toutes mes entités graphiques sous Autocad et les renseigner ensuite sous ArcMap mais maitenant je peux les tracer sous Autocad et de suite après les avoir crées les renseigner les unes après les autres, plus simple et plus sûr. De même, pour les blocs, ca va me faciliter la vie car avant j'avais un bloc avec uen quinzaine d'attributs alors que maintenant, je me suis fait une boite de dialogue où l'utilisateur entre les données et le tour est joué.... Merci encore de votre aide et de vos explications. John.
  8. chris_mtp

    xdata

    Bonjour à tous, Merci pour ces explications, je vai y jeter un oeil ce soir en rentrant mais j'ai une question dans ce cas, pourquoi j'ai le retour nil avec le lisp de Bred sur la variable s définit par (setq s (ssget "_X" (list (list -3 (list (car lst)))))) si l'application existe dans le dessin. Je travaille sur Autocad 2010 full peut être est ce ppur çà ? NOn ?? Merci par avance de votre aide. John
  9. chris_mtp

    xdata

    Bonjour Bred, Je suis en train de m'intérresser au XDATA et je suis en train d'appliquer ton lisp du 27/12/2007 sur un des projets qui va me permettre de faciliter énormément mon travail. J'ai un problème avec la ligne (setq s (ssget "_X" (list (list -3 (list (car lst))))) s-t (ssadd)) car s me retourne nil et donc le lisp s'arrête à cet endroit. J'ai modifié l'intitulé des champs à renseigner. La première partie du lisp marche nickel. C'est bien d'avoir fait un label pour chaque champ à renseigner mais je ne vois ou est l'erreur et surtout à quoi correspond le -3. Si tu peux y jeter un oeil, merci par avance. John.
  10. Bonjour à tous, Bravo Gile pour cette routine qui est fabuleuse, on peut faire avec cet outil presque un mini SIG avec Autocad, c'est énorme, lié une information à une polyligne c'est génial. Par contre, serait il possible d'exporter ces informations xdata lié à une entité vers Excel ? J'ai essayé avec entget entnext et autre mais pas possible et les xdata je ne connais pas du tout. Merci par avance de votre aide. John
  11. Bonjour Thierry, Covadis propose deux modules de transformation, un classique par système de projection et un autre dit recalage par transformation d'Helmert, et appliqué localement, sur une petite zone inférieure à 2km, les résultats sont sensiblement voire très sensiblement similaires inférieur au dmm suffisant bien sur selon la précision demandée, maintenant Covadis reste Covadis c'est sur..... John
  12. Bonjour Gile Ta matrice de transformation marche nickel. Les résidus sur les points calculés sont satisfaisants. J'ai fais plusieurs tests dans plusieurs sysèmes sur plusieurs de mes chantiers, Maintenant, il ne reste plus qu'à Lecrabe de me donner le lien de téléchargement de Circe en France, de l'adapter à mon programme et puis on publie. Lecrabe, essaye aussi de me fournir un dwg dans les deux systèmes, système de départ et système d'arrivée pour comparer les résultats obtenues avec le prgm. Je pense par exemple à une transformation entre le RGF93 et la NTF non ??? John et merci encore à Gile pour ces développements.
  13. Merci Gile. Je ne vais pas polémiquer mais pour un jeune entrepreneur, ce n'est plus mon cas et ca l'a étais, acheter une licence Covadis revient à du luxe quand même surtout si tu connais faire toi-même les calculs et les contrôles qu'il faut. Maintenant, c'est sur que le but n'est pas de concurencer Covadis mais de proposer une solution alternative. Par contre, si moi je travaille chez Geomedia ou même Mensura, vu les qualités que tu démontre en programmation dans tes messages, je dirai à mon responsable c'est lui qu'il me faut. Je veux dire ca va tu gére voir même plus que gère la programmation. Si un autre exemple, j'aurai à dévellopper une application bien particulière et complexe, je viendrai te voir. Je pense que tu vois Cadxp comme un moyen de te vendre non ?? Voila, j'espère que tu m'as compris et surtout sans mauvaise intention ni mépris... Je vais me pencher sur le lisp et je reviens te et vous voir. Merci encore. John
  14. Bonjour Gile Le crabe Lecrabe, tout le monde veut du Helmert ? Pourquoi ? La transformation d'Helmert permet de conserver les angles et les distances dans le système de départ comme dans le système d'arrivée. Du coup, 10m mesuré sur Autocad dans ton système A sera strictement égal à 10m mesuré entre les mêmes points dans ton système B et non pas 9.9995 ou 9.999999995 mais 10m. Gile, pour le jeu de sélection, quand je fais un ssget de toutes les polylignes 3D par exemple ca ne marche pas , il faut les sélectionner les unes après les autres, du coup comme la commande vla-TransformBy est en vlisp, je pense qu'il faut faire un ssget en vlisp et ca par manque de connaissance en vlisp je ne sais pas faire. En ce qui concerne le programme proprement dit, en voici les étapes 1- Choix du système de départ et d'arrivée (RGF93, Lambert2, Lambert III, ....) 2-Sélection des objets à traiter dans le dessin avec un ssget 3-Création d'un fichier appelée SEMIS_INI à l'écriture des données de chaque objet à traiter 4-Extraction des données XYZ de chaque objet (liste des sommets pour les lignes, polylignes 2D et 3D, point d'insertion pour les blocs, les mtexts, les textes, les points) En gros, création d'un fichier du type NXYZ avec comme séparateur des tabulations 5-Transformation à l'aide de CirceBatch (module de Circe fournit par l'IGN et très utiliés par les géomètres) des coordonnées des points du fichier SEMIS_INI du système A et création d'un fichier SEMIS_FIN avec les coordonnées des points dans le système B (dans le même ordre). Cette commande est lancé à l'aide d'un fichier annexe .bat qui se trouve dans un dossier spécifier dans le programme du type C:/TEMP/ avec une ligne de code du type "C:\CirceBatchDosNC\CirceBatch.exe" -init "CirceNC.ini" -mode 1 -type 2 -sys1 535 -sys2 992 -alt 2 021 -typcoor1 3 258 -typcoor2 3 303 -f1 1 "C:\TEMP\SEMIS_COR.txt" -f2 1 "C:\TEMP\SEMIS_FIN.txt" 6-Lecture du fichier SEMIS_FIN pour création de la liste des coordonnées dans le système B. 7-Lecture du fichier SEMIS_INI pour création de la liste des coordonnées dans le système A. En ce qui concerne la publication du programme, je peux le faire mais attention il va me falloir de l'aide car j'utilise en Nouvelle Calédonie des systèmes de coordonnées bien particulier et je ne connais pas du tout (ca doit être le même principe normalement ) le fonctionnement de Circe en métropole, on peut essayé de faire quelque chose il me faudrait utilisé en France, y jeter un oeil et voir. A l'heure actuelle il reste qu'a calculer les écarts entre les coordonnées des points du système B et les coordonnées transformés pour vérifier les écarts en X Y, calculer les emq de chaque facteur de transformation par un calcul matriciel et finaliser la sélection d'objet en vlisp ou autre. J'espère avoir été clair et concis, Pardon pour la longeur du message mais c'est long tout çà à expliquer. Pour la comparaison des écarts, je suis dessus en ce moment mais pour la sélection d'objet je bloque. Autre chose importante à préciser, le but au final est d'avoir un outil gratuit et fiable de transformation de coordonnées pas comme Covadis ou autre Mensura trop cher à mon goût. Amicalement. John [Edité le 4/3/2010 par chris_mtp]
  15. 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
  16. 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
  17. 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
  18. Bonjour, Si tes textes sont situés dans un même plan, ils doivent avoir tous la même orientation, Sélectionne les tous et change la valeur de l'angle de rotation. On peut faire +50 ou -25 mais ca ne va pas aider ou arranger certains utilisateurs Voila pour ta demande, à utiliser en bonne intelligence, les valeurs négatives pour l'angle sont autorisés (defun c:repl ( / pt rot jeu d long nom entit incl) (setvar "INSUNITS" 0) (setvar "CMDECHO" 0) (setvar "OSMODE" 0) (command "-UNITES" 2 4 3 3 300.000g) (setvar "CECOLOR" "2") (setq incl (getreal "Valeur de l'angle à ajouter en grades <0 si aucun>: ")) (setq jeu (ssget "X" (list (cons 0 "POINT") (cons 8 "UNKNOWN")))) (setq d 0) (setq long (sslength jeu)) (while (< d long) (setq nom (ssname jeu d)) (setq entit (entget nom)) (setq pt (cdr (assoc 10 entit))) (setq rot (+ incl (* (/ 200 pi) (cdr (assoc 50 entit))))) (command "texte" "mc" pt 1 rot (rtos (caddr pt) 2 2)) (setq d (+ d 1)) ) (prompt (strcat "\n" (itoa (sslength jeu)) " textes traités\n")) (setvar "OSMODE" 65) (setvar "CMDECHO" 1) (prin1) ) John
  19. Pierre, il faut la ligne de commande modifié dans le lisp en réponse que je 't'ai posté hier et lancer le lisp complet et non seulement la ligne de commande. Bon courage. John
  20. 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.
  21. Essaye avec (setq jeu (ssget "X" (list (cons 0 "POINT") (cons 8 "UNKNOWN")))) Et tu verras ca marche en cherchant un minimum. Il faut que tu t'y intéresse un peu sinon on ne va pas chaque fois t'aider. Demande mes débuts à Gile, puis je m'y suis intéresse et maintenant je peux programmer un lisp assez fiable moi-même en quoi 6 mois-un an. Bon courage pour la suite. John.
  22. Bonjour, Comment s'appelle le calque d'insertion de tes textes d'altitudes à changer ou le nom du calque de tes blocs points ? Voici un petit lisp qui peut t'aider (defun c:repl-txt ( / pt rot jeu d long nom entit) (setvar "INSUNITS" 0) (setvar "CMDECHO" 0) (setvar "OSMODE" 0) (setvar "CECOLOR" "2") (setq jeu (ssget "X" (list (cons 0 "INSERT") (cons 8 "POINT-TOPO")))) (setq d 0) (setq long (sslength jeu)) (while (< d long) (setq nom (ssname jeu d)) (setq entit (entget nom)) (setq pt (cdr (assoc 10 entit))) (setq rot (cdr (assoc 50 entit))) (command "texte" "mc" pt 1 rot (rtos (caddr pt) 2 2)) (setq d (+ d 1)) ) (prompt (strcat "\n" (itoa (sslength jeu)) " textes traités\n")) (setvar "ATTREQ" 0) (setvar "OSMODE" 65) (setvar "CMDECHO" 1) (prin1) ) Ya certainement plus simple encore mais bon ca marche avec des blocs points Pour le faire fonctionner avec des textes, faut modifier la ligne (setq jeu (ssget "X" (list (cons 0 "INSERT") (cons 8 "POINT-TOPO")))) par (setq jeu (ssget "X" (list (cons 0 "TEXT,MTEXT") (cons 8 "Nom du calque des textes à changer")))) . Attention, je n'ai pas testé mais ca devrait marcher normalement. John [Edité le 27/2/2010 par chris_mtp]
  23. Merci bseb67 et Gile mais j'ai pu m'en sortir avec les fonctions de gile un peu plus simple à gérer. J'ai essayé tout de même les fonctions de bseb qui marchent très bien mais plus diffcile à adapter. Merci encore. John.
  24. Bonjour bseb67 Merci tout d'abord pour ta réponse. Mais j'au du mal a comprendre ta fonction. Elel me retourne une liste composé de nil alors que mon but est d'avoir une fonction qui me retourne nil ou T. j'ai du mal a coder une telle fonction Si tu étayer un peu , merci encore. John
  25. Bonjour à tous, J'ai un dessin avec des blocs qui contiennent un attribut et de nombreuses polylignes 2D. J'ai fait un lisp qui m'extrait la liste des sommets d'une polyligne en cliquant avec la liste de tous les blocs de mon dessin. J'aimerais contrôler que sur chaque sommet de ma polyligne cliqué, il y ait un bloc. Par conséquent, je souhaiterais une fonction qui me dise si un point de coordonnées (x y z) est bien ou non présent dans la liste de tous mes blocs, liste du type ((x1 y1 z1) (x2 y2 z2) (x3 y3 z3) .... (xn yn zn) .....) J'arrive à faire un contrôle tout simple avec la fonction member mais j'ai l'impression qu'Autocad tient compte de nombreux chiffres après virgule à 0.000000000001 de la position de mes blocs alors que je voudrais faire un contrôle au décimillimètres, soit à 0.0001 pas plus. Je suis bloqué à cet endroit pour finir mon lisp. Merci par avance de votre aide. John [Edité le 12/2/2010 par chris_mtp]
×
×
  • 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é