Aller au contenu

Olivier Eckmann

Membres
  • Compteur de contenus

    2 354
  • Inscription

  • Dernière visite

  • Jours gagnés

    120

Tout ce qui a été posté par Olivier Eckmann

  1. Bonjour, mettre les blocs en PositionZ = 0 au lieu de 1.0E+99 et les poignées réapparaissent Olivier
  2. Alors il faut remplacer (ssname points(1-(sslength points))) par (ssname points 0)
  3. Pourquoi ne pas utiliser un PRL dans lequel les courbes fossé on une couleur 255,255,255 Olivier
  4. Olivier Eckmann

    Qui utilise civil 3D

    Bonjour, Ne connaissant pas Mensura, je ne m'avancerais pas trop, et ayant arrêté d'utiliser Civil depuis 2 ans, mes impressions datent de Civil 2012, mais pour moi le produit Civil3D n'est pas concurrent frontal d'un Covadis/Autopiste ou d'un Mensura. Même s'ils permettent de faire la même chose, le recouvrement de leur champ d'application respectif (domaines dans lesquels ils sont performants) est assez restreint. Civil est un très bon produit de "démo", ce n'est pas péjoratif, mais il est très "visuel" : changement de style en 1 clic, regard d'assainissement 3D, détection de clash visuel. Il est très rapide pour des études de variantes, des analyses rapides. Mais lorsque l'on rentre dans le détail, ça se corse rapidement. Comme rappelé précédemment, c'est un produit américain qui a été adapté au marché français, donc certaines normes, règles, méthodes ne sont pas applicables. Par ex les calculs de cubatures sur un projet de route se calcule en France par "surface au droit du profil" multiplié par 1/2 longueur d'application avant et arrière. Dans Civil, c'est "surface au droit du profil" multiplié par la longueur depuis le profil précédent. Donc le 1er profil a toujours un volume de cubature égal à 0. Ça ne change rien sur le calcul total, mais si tu présentes ça à un CG "qui tient la route techniquement" tu te fais jeter. En assainissement, le blindage, le CCTG de 70... ne sont pas intégrés ni gérés, par contre les regards et les tranchées se dessinent en 3D. Le module terrassement, n'est pas une plate-forme au sens "français" du terme, c'est du simple talutage : pas de structure... Impossible dans un même DWG d'avoir 2 profils en long ayant des échelles horizontales différentes. Si un profil en long est coté dans les bandeaux avec 2 décimales et qu'il faut passer à 3 décimales, soit le style a été créé dans le gabarit et ça se fait en 1 clic, soit il faut créer le style et ça prendra 10 minutes si tu sais faire, ou 1 jour (voir plus) si tu ne l'as jamais fait. Une fois dessiné ton profil TN, lorsque tu crées ta courbe projet, c'est à toi à renseigner les bandeaux à la main et à choisir dans une liste déroulante la bonne courbe pour la cotation. Les métrés (QTO) c'est franchement pas terrible. Imprimer un cahier de profil en travers, c'est pas simple non plus. ... Et comme indiqué par Lovecraft, trouver quelqu'un de compétent sur Civil pour avoir du support, ça ne court pas les rues. Tous ces points "négatifs" sont par contre les points forts des produits Covadis/autopiste ou Mensura. Dans les points positifs de Civil, l'interaction avec 3DSMax à travers Civil View est vraiment un plus pour la visu 3D, mais là encore on est dans de la maquette qui en jette visuellement, mais pas forcément très rigoureuse. On se fout de la longueur ou du paramètre de la clothoïde. On regardera que les jolies voitures qui roulent sur la route. Pour moi, Civil est aussi complexe à appréhender qu'un MX, mais moins puissant. Cela nécessite un ingé ou un très bon projeteur, rigoureux, appliqué, curieux et persévérant. Il faut appliquer des méthodes qui ne sont pas forcément dans la logique "française" et contrôler, contrôler et re-contrôler son paramétrage, et si on veut l'exploiter correctement, il faudra forcément mettre les mains dans le cambouis à un moment ou un autre. A la question initiale "Qui utilise Civil 3D", très peu de personnes pour faire de l'exe à ma connaissance, un peu plus pour des fonctions d'analyse de MNT, Cubature, APS simple. Olivier
  5. Merci Gilles, Effectivement ça m'a travaillé une partie de la nuit et ce matin je me suis aperçu que j'avais appliqué la rotation à mes vecteurs temporaires au lieu de l'appliquer à mon point de décalage. J'avais fait plus compliqué (cos et sin) que le passage par la fonction trans. Je vais regarder plus en détail cette fonction. En tout cas ça fonctionne. Merci Olivier
  6. Bonjour, j'essaie de mettre en oeuvre le lisp suivant trouvé sur ce site ;; Grread+osnap+GRVECS ;; Rewritten by Fools @ TheSwamp.org ;; ;; Use (grread) to get original point ;; Use (osnap) to calculate accurate point ;; Use (GRVECS) to show AutoSnapMarker ;; No return , just show the method (DEFUN c:tmp (/ AUTOSNAPMARKERCOLOR AUTOSNAPMARKERSIZE DRAG GHOSTPT LST_OSMODE STR_OSMODE TIME DistPerPixel Bold Draftobj VecsLst get_osmode sparser YPY_VecsList YPY_GetGrvecs YPY_DrawVecs ) ;; CAB 10/5/2006 ;; Fools change a little about "," (3/3/2007) ;; ;; Function to return the current osmode setting in the form of a string ;; If (getvar "osmode") = 175 ;; (get_osmode) returns "_end,_mid,_cen,_nod,_int,_per" (DEFUN get_osmode (/ cur_mode mode$) (SETQ mode$ "") (IF (< 0 (SETQ cur_mode (GETVAR "osmode")) 16383) (MAPCAR (FUNCTION (LAMBDA (x) (IF (NOT (ZEROP (LOGAND cur_mode (CAR x)))) (IF (ZEROP (STRLEN mode$)) (SETQ mode$ (CADR x)) (SETQ mode$ (STRCAT mode$ "," (CADR x))) ) ) ) ) '((1 "_end") (2 "_mid") (4 "_cen") (8 "_nod") (16 "_qua") (32 "_int") (64 "_ins") (128 "_per") (256 "_tan") (512 "_nea") (1024 "_qui") (2048 "_app") (4096 "_ext") (8192 "_par") ) ) ) mode$ ) ;; This one uses pointers ;; written by CAB @ TheSwamp.org (DEFUN sparser (str delim / ptr lst stp) (SETQ stp 1) (WHILE (SETQ ptr (VL-STRING-SEARCH delim str (1- stp))) (SETQ lst (CONS (SUBSTR str stp (- (1+ ptr) stp)) lst)) (SETQ stp (+ ptr 2)) ) (REVERSE (CONS (SUBSTR str stp) lst)) ) ;;My functions ;;Initial Grvecs List (DEFUN YPY_VecsList (/ CIRCLE CROSS SQUARE LINE) (SETQ square '(((-1 1) (-1 -1) (1 -1) (1 1) (-1 1)))) (SETQ cross '(((-1 1) (1 -1)) ((-1 -1) (1 1)) ((1 0.859) (-0.859 -1)) ((-1 0.859) (0.859 -1)) ((0.859 1) (-1 -0.859)) ((-0.859 1) (1 -0.859)) ) ) (SETQ circle '(((0 1) (-0.707 0.707) (-1 0) (-0.707 -0.707) (0 -1) (0.707 -0.707) (1 0) (0.707 0.707) (0 1) ) ) ) (SETQ line '(((1 1) (-1 1)))) (LIST (CONS "_end" square) ;square '("_mid" ((0 1.414) (-1.225 -0.707) (1.225 -0.707) (0 1.414)) ) ;triangle (CONS "_cen" circle) ;circle (APPEND '("_nod") square cross) ;circle+cross '("_qua" ((0 1.414) (-1.414 0) (0 -1.414) (1.414 0) (0 1.414)) ) ;square rotate 45 (CONS "_int" cross) ;cross '("_ins" ((-1 1) (-1 -0.1) (0 -0.1) (0 -1.0) (1 -1) (1 0.1) (0 0.1) (0 1.0) (-1 1) ) ) ;two squares '("_per" ((-1 1) (-1 -1) (1 -1)) ((0 -1) (0 0)) ((0 0) (-1 0)) ) ;two half square (APPEND '("_tan") circle line) ;circle+line (APPEND '("_nea") '(((1 -1) (-1 -1))) line cross) ;two line+cross '("_qui") ; ??? (APPEND '("_app") square cross) ;square+cross '("_ext" ((0.1 0) (0.13 0)) ((0.2 0) (0.23 0)) ((0.3 0) (0.33 0)) ) ;three points '("_par" ((0 1) (-1 -1)) ((1 1) (0 -1))) ;two lines rotate 45 ) ) ;;Get Grvecs List (DEFUN YPY_GetGrvecs (pt dragpt lst vecs / KEY) (SETQ key T) (WHILE (AND key lst) (IF (EQUAL (OSNAP dragpt (CAR lst)) pt 1E-6) (SETQ key nil) (SETQ lst (CDR lst)) ) ) (CDR (ASSOC (CAR lst) vecs)) ) ;;Use GRVECS (DEFUN YPY_DrawVecs (Pt Vecs Size Color / lst matrix) ;;no Z axis (SETQ matrix (LIST (LIST Size 0.0 0.0 (CAR pt)) (LIST 0.0 Size 0.0 (CADR pt)) (LIST 0.0 0.0 1.0 0.0) (LIST 0.0 0.0 0.0 1.0) ) ) (GRVECS (APPLY (FUNCTION APPEND) (APPLY (FUNCTION APPEND) (MAPCAR (FUNCTION (LAMBDA (x) (IF (> (LENGTH x) 2) (MAPCAR (FUNCTION LIST) (MAPCAR (FUNCTION (LAMBDA (x) Color)) x) x (CDR x) ) (LIST (CONS Color x)) ) ) ) Vecs ) ) ) matrix ) ) ;;**************************** ;; Main Routine starts here ;;**************************** (VL-LOAD-COM) (SETQ time T) (SETQ VecsLst (YPY_VecsList)) (SETQ str_osmode (get_osmode)) (SETQ lst_osmode (sparser str_osmode ",")) (SETQ Draftobj (VLA-GET-DRAFTING (VLA-GET-PREFERENCES (VLAX-GET-ACAD-OBJECT)) ) ) (SETQ AutoSnapMarkerSize (VLA-GET-AUTOSNAPMARKERSIZE Draftobj)) (SETQ AutoSnapMarkerColor (VLA-GET-AUTOSNAPMARKERCOLOR Draftobj)) (WHILE time (GRREAD (SETQ drag (GRREAD T 1 1))) ;Can change like (grread T 15 2) (COND ((= (CAR drag) 5) (REDRAW) (SETQ drag (CADR drag)) (IF (OR (ZEROP (STRLEN str_osmode)) (NULL (SETQ ghostpt (OSNAP drag str_osmode))) ) (SETQ ghostpt drag) ;;Beacuse of mouse middle button scroll , calculate "DistPerPixel" every time (PROGN (SETQ DistPerPixel (/ (GETVAR "VIEWSIZE") (CADR (GETVAR "SCREENSIZE")))) ;;Bold (SETQ Bold (MAPCAR '* (LIST DistPerPixel DistPerPixel DistPerPixel) (LIST (+ AutoSnapMarkerSize 0.5) AutoSnapMarkerSize (- AutoSnapMarkerSize 0.5) ) ) ) (FOREACH item Bold (YPY_DrawVecs ghostpt (YPY_GetGrvecs ghostpt drag lst_osmode VecsLst) item AutoSnapMarkerColor ) ) ) ) ) ((= (CAR drag) 3) (IF (NULL (SETQ ghostpt (OSNAP (CADR drag) (get_osmode)))) (SETQ ghostpt (CADR drag)) ) (REDRAW) (SETQ time nil) ) ) ) (PRINC) ;can return ghostpt if u want ) Lorsque mon écran est plein nord (VIEWTWIST à 0) quelque soit le SCU ça fonctionne, par contre lorsque mon Nord est tourné, ça ne fonctionne plus Dans la fonction de dessin GRVECS, j'ai essayé d'introduire la rotation dans la matrice de transformation, mais ça ne fonctionne pas ;;Use GRVECS (DEFUN YPY_DrawVecs (Pt Vecs Size Color / lst matrix) ;;no Z axis ;; AJOUTER (setq dViewTwist (- (getvar "VIEWTWIST"))) (setq dR00 (* Size (cos dViewTwist) )) (setq dR01 (* Size (sin dViewTwist) )) (setq dR10 (* Size (- (sin dViewTwist)))) (setq dR11 (* Size (cos dViewTwist) )) ;; FIN DE L'AJOUT (SETQ matrix (LIST (LIST dR00 dR01 0.0 (CAR pt)) (LIST dR10 dR11 0.0 (CADR pt)) (LIST 0.0 0.0 1.0 0.0) (LIST 0.0 0.0 0.0 1.0) ) ) (GRVECS (APPLY (FUNCTION APPEND) Que mon VIEWTWIST Soit =0 ou pas les accrochages se dessinent toujours au même (mauvais) endroit => bonne position mais pas tourné. Par contre si je fait varier la variable SIZE c'est bien pris en compte. Comment introduire la rotation du viewtwist dans la matrice pour que les vecteurs temporaires se dessinent au bon endroit? Merci Olivier
  7. Bonjour, impossible sans Autopiste. Olivier
  8. Olivier Eckmann

    EXPRESS sur MAP 2013

    Bonjour, Pour MAP 2014, ça devrait fonctionner mais il faut utiliser le fichier .REG joint au lieu de celui de le ZIP d'origine. Pour Civil, désolé je n'en ai pas sous la main, mais si tu cherches les entrées en base de registre et que tu substitues les chemins dans le fichier .REG tu devrais pouvoir l'adapter. Olivier MAP2014-EXPRESS.zip
  9. Bonjour, j'ai plus "compliqué" ou plus performant, mais il me semble que copier/coller X lignes dans un fichier texte et remplacer 1 et 0.09 par les associations couleur/épaisseur me semble beaucoup plus rapide que de se reconfigurer une table CTB? C'est sûr que ça ne se fait pas avec des boutons et des listes déroulantes avec des valeurs à choisir dans des tableaux, mais bon, en terme d'efficacité ça ne me paraît pas si compliqué que ça. L'important c'est qu'il y ait plusieurs propositions de réponse et que chacun choisisse ce qui lui plaît le mieux et lui semble le plus logique et approprié à sa compréhension du problème. Olivier
  10. Bonjour CHPROP (ssget "x" (list (cons 62 1))) EP 0.09 le chiffre 1 dans (cons 62 1) c'est la couleur. Il suffit de dupliquer la ligne autant de fois que de couleur à traiter et d'épaisseurs à mettre en place et d'enregistrer ça dans un fichier script (.SCR) Le seul problème c'est que s'il n'y a pas d'objet en couleur rouge ça ne fonctionne pas. Olivier
  11. Olivier Eckmann

    EXPRESS sur MAP 2013

    Salut Didier, A tester, mais je pense que je n'ai rien oublié (je suis sous Win 7 64bit, si tu as du 32 bit ça pourrait ne pas fonctionner) Dans le fichier .ZIP : 1. tu as un dossier Express que tu mets en place dans le dossier d'install d'AutoCAD. 2. Un dossier Support à partir duquel tu copies les 3 fichiers dans ton dossier Support (C:\Users\XXXXXXXXX\AppData\Roaming\Autodesk\AutoCAD Map 3D 2013\R19.0\fra\Support) 3. Tu lances AutoCAD et tu rajoutes le chemin Express à la liste des cheminq de recherche des fichiers de support 4. tu charges le menu ACETMAIN.CUIX via _MENULOAD 5. Tu quittes AutoCAD 6. Tu exécutes le fichier .REG pour mettre en place les 4 clés en base de registre pour le chargement automatique de l'arx de base 7. tu relances AutoCAD et avec un peu de chance ça devrait fonctionner. Olivier Express.zip
  12. Bonjour, mettre PICKFIRST à 1 Olivier
  13. Je me doutais bien qu'il fallait passer par la programmation. J'ai déjà vérifié via DXF en remplaçant dans mon bloc *U le handle de la référence actuelle par le handle d'une autre référence d'image et ça fonctionne. Par contre j'ai trouvé un truc vraiment bizarre. Si je repars de ton DWG modifié (je pense que c'est la même chose avec le mien), que je l'enregistre en DXF et que je le ré-ouvre, tout déplacement du grip dyn avec la souris dans le "1/8" d'angle "Est-Nord Est " donne n'importe quoi. Je m'en fiche un peu car je n'avais pas l'intention d'enregistrer en DXF, mais ça surprend quand même. Olivier
  14. Salut Vincent, merci beaucoup ça fonctionne parfaitement. J'ai aussi vérifié qu'effectivement la commande "étirer" ne fonctionne pas sur une image, même si tu prends les 4 coins. Par contre ça fonctionne sur un wipeout qui est pourtant dérivé de l'image. Maintenant je voudrais aller plus loin, je souhaiterais changer l'image selon une information sur le bloc (par ex le chemin/nom de l'image dans un attribut). Est-ce que ce serait possible? A priori, les actions concernent la géométrie des objets, mais je n'ai rien trouvé pour changer d'autres propriétés. Olivier
  15. Bonjour, Le décalage peut aussi générer plus d'un objet (par ex décalage d'un papillon vers l'intérieur => 2 polylignes). Donc en règle générale, je récupère la dernière entité de la base de données avec (entlast), puis je lance la fonction de création de nouvelles entités, puis je balaie depuis l'ancienne dernière entité jusqu'à la fin avec (entnext ) ce qui me donne toutes les nouvelles entités crées. C'est un peu barbare, mais ça marche assez bien. Olivier
  16. Bonjour, J'utilise régulièrement les blocs dynamiques et le paramètre d'étirement pour créer toute sorte d'étiquette. Ça fonctionne bien pour tout type d'objet, polyligne, attribut, wipeout. Par contre aujourd'hui en voulant faire cela sur une image, ça ne fonctionne plus. Le coin Haut Gauche de l'image reste fixe au lieu de se délacer. J'ai testé sur les version MAP 2008, 2010 et 2014 sans succès. Je joins le DWG contenant le bloc. Il suffit de mettre l'image dans le même dossier que le DWG avant de l'ouvrir. J'ai ajouté un polyligne rouge pour voir le déplacement. Elle se déplace bien mais mon image reste scotchée en haut à gauche. L'étiquette se déplace avec le grip bleu-clair. Est-ce que vous pouvez reproduire le souci et si oui quelle solution est envisageable (hormis "encapsuler" l'image dans un bloc et l'utiliser dans le bloc dynamique)? Merci Olivier Bloc-photo.zip
  17. Bonjour, pour charger le type de ligne Axes défini dans le fichier ACADISO.LIN : FILEDIA;0;-TYPELIGNE;CH;AXES;ACADISO.LIN;;FILEDIA;1 pour créer un calque TOTO avec le type de ligne spécifique AXES : -CALQUE;N;TOTO;TL;AXES;TOTO; Olivier
  18. Olivier Eckmann

    [Résolu] gdb

    Bonjour, Si c'est de l'ArcGis version 10 (au minimum), avec QGIS 2.0.x tu peux charger ton GDB dans le projet, sélectionner les couches à importer, puis exporter chacune des couches au format SHP. Comme c'est dispo via l'API ESRI Geodatabase dans OGR, on peut supposer qu'il soit possible de l'avoir nativement via FDO si on ajoute le connecteur FDO pour OGR , mais je n'ai pas testé. Olivier
  19. Bonsoir, Personnellement, j'utilise MAP pour produire du DWF Géoréférencé, que j'ouvre sur un tablette PC sous WIndows avec DesignReview 2012. On active le mode GPS sous ADR et ça fonctionne quelque soit le système de coordonnées de ton DWG au départ (testé en CC49, Lambert Z1, et LatLong. ADR peut afficher les coordonnées de ton système de départ ou bien des latitudes/longitudes en degré décimaux ou en degré minutes secondes. Pour li'mage satellite, si tu peux l'avoir dans AutoCAD et l'imprimer dans le DWF ça fonctionne sinon je n'ai pas regardé plus avant cette possibilité. Olivier
  20. Ci-joint une réalisée à partir de mon MAP 2014 Olivier
  21. Bonjour, en fait ça dépend de ton système de projection associé. Si j'attribue RGF93.CC49 (je suis sur le 91) en bas (à côté de l'engrenage permettant de changer l'espace de travail) tu as l'épingle rouge et le système CC49 associé => le commande GEOMAP fonctionne. Si j'attribue LL-IGN en bas à côté de l'épingle rouge c'est indiqué "Non reconnu" et la commande GEOMAP ne fonctionne pas Olivier
  22. Bonjour, A partir d'AutoCAD MAP, je produis des DWF géoréférencé que j'ouvre sur une tablette PC sous DesignReview pour faire du suivi de position avec le GPS de la tablette. Ca fonctionne bien, par contre je ne parviens à produire du DWF géoréférencé uniquement à partir de l'espace objet. Impossible à partir d'une présentation. Est-ce que quelqu'un a déjà réussi à faire ça? Je comprends que la présentation est en coordonnées papier et pas géoref, mais il pourrait y avoir une transformation des coordonnées papier->model pour traiter les coordonnées géoref dans la fenêtre de présentation. C'est quand même dommage de se priver des possibilités de mise en page des présentations pour produire le DWF. Merci Olivier
  23. Bonsoir, C'est exact, il faut faire une boucle sur le jeu de sélection pour traiter les objets 1 par 1. Olivier
  24. Bonjour, Pour les versions d'AutoCAD récente, i y a une appli gratuite téléchargeable sur la plate-forme AppsExchange: Ici Olivier
  25. Bonsoir, Il n'y a pas le choix, il faut décomposer et commenter un code pour essayer de comprendre ce qu'il fait; de plus il faudra de toute manière apprendre la syntaxe minium du langage (affectation, boucle, condition...) Dans le programme de Gilles la demande d'une valeur pour l'attribut se trouve dans ces 3 lignes ;; 01 attribut "nom de la pièce" (if (not (setq nom (getname "Nom de la pièce"))) (setq nom "") ) Il faut les décomposer et commenter (getname "Nom de la pièce") => appel la fonction GetName avec le message d'invite "Nom de la pièce" qui apparaitra dans le dialogue DCL (setq nom (getname "Nom de la pièce")) => stockage du résultat dans la variable nom (if (not (setq nom (getname "Nom de la pièce"))) => si la variable nom n'a pas de valeur ALORS faire la suite (setq nom "") => stocker un texte vide dans la variable nom Je te conseille donc de le ré-écrire comme cela ;; Appel le dialogue GetName avec le message "Nom de la pièce" ;; et stocke le résultat saisi dans la variable nom (setq nom (getname "Nom de la pièce")) ;; Si la variable nom n'existe pas (if (not nom) ;; ALORS stocke un texte vide dans la variable nom (setq nom "") ;; fin de la boucle de test sur la valeur de nom ) ensuite pour demander les 2 autres attributs, il suffit de dupliquer ces lignes et de créer 2 autres variables pour recevoir les valeurs ;; Appel le dialogue GetName avec le message "Numéro pièce" ;; et stocke le résultat saisi dans la variable numero (setq numero (getname "Numéro de la pièce")) ;; Si la variable numero n'existe pas (if (not numero) ;; ALORS stocke un texte vide dans la variable numero (setq numero "") ;; fin de la boucle de test sur la valeur de numero ) ;; Appel le dialogue GetName avec le message "Hauteur sous plafond" ;; et stocke le résultat saisi dans la variable hsp (setq hsp (getname "Hauteur sous plafond")) ;; Si la variable hsp n'existe pas (if (not hsp) ;; ALORS stocke un texte vide dans la variable nom (setq hsp "") ;; fin de la boucle de test sur la valeur de hsp ) Dans quelques semaines lorsque tu seras plus à l'aise avec le langage tu simplifieras tes commentaires et tu pourras complexifier la syntaxe. Tu pourrais aussi te créer ton propre dialogue DCL qui demande la saisie de 3 valeurs dans le même écran... Olivier
×
×
  • 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é