banniere

Le portail francophone de la géomatique


Toujours pas inscrit ? Mot de passe oublié ?
Nom d'utilisateur    Mot de passe              Toujours pas inscrit ?   Mot de passe oublié ?

Annonce

Printemps des cartes 2024

#1 Thu 05 July 2012 12:57

hugolh
Juste Inscrit !
Date d'inscription: 5 Jul 2012
Messages: 3

[AutoCAD MAP] Import/Export DWG <-> SHP et Requetes sur le Groupe

Bonjour,

Je suis confronté à un problème que je n'arrive pas à résoudre.

Travaillant avec AutoCad Map 2012, je dois exporter des objets autocad vers le format SHP afin qu'ils soient lisibles dans ArcMAP.
Avec la configuration d'un profil afin de paramétrer l'opération, l'export se fait sans problème particulier.

Par contre, l'import depuis le format SHP vers le format DWG est un peu décevant.
Certaines données propres aux objets autocad sont bien importées dans les données attributaires mais ne sont pas interprétées sur le plan.
Ainsi, pour ce qui est des blocs autocad, certains paramètres dont la rotation, la déformation des blocs XSCALE, YSCALE et la couleur ne sont pas appliquées sur ces objets.
Pour les linéaires, les couleurs ainsi que les styles de lignes différents de "DuCalque" ainsi que les épaisseurs sont également ignorées lors de la génération du dessin.
Pour les points topographiques (et plus largement les blocs avec attributs d'autocad), le piqué du point se place bien dans le bon calque
mais les attributs se placent dans le calque courant, refusant de reprendre la définition initiale du bloc.
Aurais-je raté une étape dans l'opération d'export?

Pouvez-vous m'aider à résoudre ces problèmes ?

Par avance, merci.

Hors ligne

 

#2 Thu 05 July 2012 13:22

Patrice
JeSuisCharlie
Date d'inscription: 16 Sep 2005
Messages: 4745

Re: [AutoCAD MAP] Import/Export DWG <-> SHP et Requetes sur le Groupe

Hello

1) Si tu as exporte (MAPEXPORT) en SHP (ou SDF v3 ou autre format SIG) toutes les proprietes AutoCAD necessaires et que bien sur, tu ne les a pas "bousillees" dans ArcMap alors lors de l'Import (MAPIMPORT), il faudra recuperer tous les attributs dont les fameuses proprietes AutoCAD !

2) Ensuite il faudra (dans un DWG vierge par l'utilisation du Groupe de dessins de MAP) par une requete subtile en Mode Dessiner et et en mode Modification des Proprietes, forcer les proprietes AutoCAD en fonction des champs de donnees d'objet : couleur, type de ligne, rotation, echelle, etc

Vois tu ce que je veux dire ?

GeoBye, Pat

PS: peux tu nous fournir ton DWG (suite au MAPIMPORT) ou un extrait de ton DWG avec qq objets
et surtout TOUTES les donnees d'objet necessaires ?


(Autodesk Expert Elite Team)

Hors ligne

 

#3 Fri 06 July 2012 17:34

hugolh
Juste Inscrit !
Date d'inscription: 5 Jul 2012
Messages: 3

Re: [AutoCAD MAP] Import/Export DWG <-> SHP et Requetes sur le Groupe

Bonjour Patrice et merci pour ta réponse qui m'a beaucoup aidé.

Pour la plupart des paramètres, et en suivant la technique que tu exposes (et avec l'aide des tutos!), cela fonctionne très bien.

Cependant, je me trouve confronté à quelques insuffisances de l'outil permettant la modification des propriétés.
En effet, pour le paramétrage de la géométrie des blocs autocad "Echelle X" et "Echelle Y", cette boîte de dialogue ne propose que la modification de l'"échelle". Après quelques tests, je m'aperçois en fait que l'outil ne permet que l'agrandissement ou la réduction uniforme du bloc et non sa déformation car une seule valeur uniquement ne peut être entrée pour la valeur de l'échelle. Or, j'aurais voulu pouvoir paramétrer l'échelle X, l'échelle Y indépendamment l'une de l'autre.

Qu'en penses-tu? Y aurait-il une autre technique pour déformer les blocs ?

Dans tous les cas, encore merci!!

Cordialement,

Hors ligne

 

#4 Fri 06 July 2012 19:37

Patrice
JeSuisCharlie
Date d'inscription: 16 Sep 2005
Messages: 4745

Re: [AutoCAD MAP] Import/Export DWG <-> SHP et Requetes sur le Groupe

Hello

C bien tu es donc maintenant au Niveau II de l'utilisation des Requetes sur le groupe de dessins avec AutoCAD MAP (ou CIVIL) !

Tu as realise une Requete qui modifie N proprietes sur les objets (par exemple les Blocs)
en fonction de champs attributaires contenus dans les ODs (Object Data) de MAP

<<<<< Exemple de ce genre de Requete enregistree en externe sur le disque dur (Fichier Texte .QRY en fait)
<<<<< C une Requete Perso qui justement modifie les Proprietes des Blocs ...
<<<<< Debut >>>>>
(setq ade_cmddia_before_qry (getvar "cmddia"))
(setvar "cmddia" 0)
(mapcar 'ade_dwgdeactivate (ade_dslist))
(setq ade_tmpprefval (ade_prefgetval "ActivateDwgsOnAttach"))
(ade_prefsetval "ActivateDwgsOnAttach" T)
(setq dwg_id(ade_dsattach "C:\\USERS\\SUPERUSER\\DOCUMENTS\\M2013_BLOC_avec_OD.dwg"))
(ade_prefsetval "ActivateDwgsOnAttach" ade_tmpprefval)
(ade_qryclear)
(ade_qrysettype "draw")
(ade_qrydefine '("" "" "" "Property" ("layer" "=" "ARBRE")""))
(ade_qrysetaltprop T)
(ade_altpclear)
(ade_altpdefine "Color" ":COULEUR@ACAD_PROPR")
(ade_altpdefine "Scale" ":ECHELLE@ACAD_PROPR")
(ade_altpdefine "Rotation" ":ROT@ACAD_PROPR")
(ade_altpdefine "Elevation" ":ELEV@ACAD_PROPR")
(ade_qryexecute)
(setvar "cmddia" ade_cmddia_before_qry)
<<<<< Fin >>>>>

Dans cet exemple, on dessine TOUS les Blocs du Calque "ARBRE" en modifiant/forcant a la volee leur couleur, echelle, rotation
et elevation (Altitude en Z) ... en provenance du/des dessin(s) du groupe ... (UN SEUL dessin attache au groupe ici) 

Je ne modifie pas le Calque d'Origine des Blocs sinon j'aurais force la propriete "Calque"
(ade_altpdefine "Layer" "ARBRE_PATRICE")

NOTE : malheureusement en effet, c le MEME facteur d'Echelle pour X et Y et Z = DOMMAGE !
Mais bon, je n'ai jamais eu besoin de modifier l'Echelle XYZ des Blocs de facon NON Uniforme !
SVP peux tu nous expliquer, pourquoi tu desires faire cela ?

En fait il faudrait un Progr Lisp/VLisp qui pour TOUS les blocs selectionnes, si il trouve 2/3 champs en OD (Object Data)
sur la table ACAD_PROPR (pour MON exemple) nommes par exemple : ECH_X , ECH_Y , ECH_Z (optionnel pour Z)
modifie en consequence les facteurs d'echelle X Y Z AutoCAD du Bloc !?

Rappel : tu peux "Enregistrer" en externe sous forme de fichier .QRY n'importe quelle Requete !
et pour rejouer ulterieurement une requete externe .QRY, c la commande :  ADERUNXQUERY

En "tripatouillant / preparant" de multiples fichiers .QRY subtilement (+ Fusion de N fichiers .QRY)
tu passeras au niveau III et tu en sauras autant que moi dans ce domaine !

Ainsi on peut arriver a faire (automatiser plutot) des choses assez delirantes au niveau des DWGs ...
De plus qq trucs sont possibles dans les .QRY qui ne sont pas prevus dans la "grosse" case de dialogue des requetes ...
Par exemples des tests de type > , < , <= , >= , etc sur les valeurs numeriques des ODs (Object Data) !

TRES IMPORTANT : toujours remettre a UN (si necessaire) la variable system CMDDIA apres avoir joue avec les Requetes
et surtout apres joue avec ADERUNXQUERY !!!  CMDDIA = 1

Rappel pour les objets Lineaires ou Surfaciques en Polyligne, souvent on change la Largeur des Polylignes (Forcer la Propriete "Largeur") :
(ade_altpdefine "Width" "2")   ---> Largeur des Polylignes = 2  (2 Metres sans doute)

Rappel pour les Codes de Couleur AutoCAD :
Color = 0     ---> DuBloc
Color = 256  ---> DuCalque


****** Generation de "Textes" avec Expression Lisp dans les Requetes "Dessiner" avec "Modification des proprietes" ******

Dans "Textes" / "Expression" : qq exemples de Generation des Aires/Surfaces et Longueurs/Perimetres ...

(RTOS .AREA   2 0)      ou     (RTOS .AREA 2 1)       0 / 1 decimale
(RTOS .LENGTH 2 0)    ou    (RTOS .LENGTH 2 1)     0 / 1 decimale

(STRCAT (RTOS .AREA    2 0)    " m²"  )
(STRCAT (RTOS .LENGTH  2 0)  " m"    )

Ces exemples sont des grands classiques ...

Bien sur ces Textes sont "Statiques" et si vous modifiez les objets graphiques, les Aires/Surfaces et Longueurs/Perimetres
ne sont pas remis a jour, en fait il faut les effacer et refaire passer la requete prealablement sauvegardee !


*** 2eme exemple avec Expression Lisp sur la Rotation (par exemple des Blocs/Symboles) ***

Toujours dans "Textes" / "Expression" :

( / ( * 180.0 :ROT@TEST ) 3.14159 )

Ici nous avons des Blocs/Symboles ayant un champ (de Type Reel) "ROT" dans une table OD (Object Data) "TEST"
qui contient en fait la Rotation du Bloc/Symbole en Radians et non pas en Degres !

En appliquant cette "subtile" transformation, on obtient la bonne Rotation en Degres !
Car notre dessin courant est parametre en Degres Decimaux   ( Commande: UI )


GeoBye, Pat


(Autodesk Expert Elite Team)

Hors ligne

 

#5 Mon 09 July 2012 16:04

hugolh
Juste Inscrit !
Date d'inscription: 5 Jul 2012
Messages: 3

Re: [AutoCAD MAP] Import/Export DWG <-> SHP et Requetes sur le Groupe

Merci Patrice pour toutes ces explications.

Pour répondre à ta question, j'utilise la déformation des blocs afin de dimensionner correctement tout objet rencontré sur le terrain.
En effet, dans ma bibliothèque de blocs, je possède des blocs définis avec une dimension standard d'1mx1m. A ces derniers, j'applique des facteurs d'échelles X et Y correspondant finalement à la longueur et à la largeur en mètres, afin qu'ils soient aux bonnes dimensions.

Ne connaissant pas trop le language Lisp, difficile pour moi de trouver une routine capable de faire une requête dans les données d'objets afin de paramétrer correctement les facteurs d'échelle !

Par ailleurs, je suis confronté à un autre problème : celui des rotations avec les fameuses unités de mesure!
J'imagine que dans les données d'objets, l'angle est exprimé en radians alors que dans le DWG il est en grades.
Lors de mes tests, j'ai remarqué que la valeur de l'angle contenue dans les données d'objets n'est pas convertie quand je passe en DWG.
Comment forcer la conversion?

Au plaisir,

Bien cordialement,

Hors ligne

 

#6 Thu 19 July 2012 05:01

Patrice
JeSuisCharlie
Date d'inscription: 16 Sep 2005
Messages: 4745

Re: [AutoCAD MAP] Import/Export DWG <-> SHP et Requetes sur le Groupe

Hello

En effet AutoCAD travaille en Interne en RADIANS et donc il exporte les Infos de Rotation ainsi ...

Au fait pour le probleme de la Rotation en Radians, c simple a resoudre !

Il y a 2 solutions :

- Soit tu restes en Degres Decimaux et tu appliques la bonne expression Lisp du genre :
( / ( * 180.0 :ROT@TEST ) 3.14159 )
Confere la fin de mon message precedent que j'ai enrichi ...

- Soit tu fais une commande clavier UI et tu choisis "Radians"
et ce juste le temps de faire la Requete de Modification des Blocs/Symboles
Immediatement apres SVP tu reviens en "Degres decimaux"

GeoBye, Pat


(Autodesk Expert Elite Team)

Hors ligne

 

Pied de page des forums

Powered by FluxBB