#1 Tue 01 February 2005 22:05
- Claire Combeau
- Invité
Zoom a la meme echelle entre deux blocs de donnees
De: Claire Combeau
Bonjour,
J'ai dans ma mise en page deux cartes issues de deux blocs de donnees representants deux entites identiques avec des analyses thematiques differentes.
Lorsque je zoom sur l'une des cartes, je souhaite que la deuxieme se cale automatiquement au meme niveau de zoom. J'ai utilise les geosignets dans le mode donnees ce qui fonctionne bien mais y a -til un autre outil ou une manip pour recaler de facon similaire en mode mise en page ?
Merci
Claire COMBEAU
Conservatoire regional des rives de la Loire
#2 Tue 01 February 2005 22:05
- TOUYAA Franck
- Invité
Re: Zoom a la meme echelle entre deux blocs de donnees
Bonjour,
Voici un script que j'ai trouve en surfant sur le support ESRI USA et qui peut repondre a votre demande.
Ce script permet de zoomer et de se mettre a la meme echelle.
En esperant avoir repondu a votre question
Cordialement,
Franck TOUYAA
Cartographe- Geomaticien
Direction de l'Urbanisme Operationnel
www.nanterre.fr
Code:
'Select Tools / Customize
'Select the Commands Tab
'From the categories list (left) select UIControls
'Click on button New UIControl...
'Select UIButtonControl and click on button Create and Edit
'Paste the code below between lines Private Sub UIButtonControl1_Click() and End Sub
'Close the VBA Editor
'Select Tools / Customize
'Select the Commands Tab
'From the categories list (left) select UIControls
'From the commands list (right) select Normal.UIButtonControl1
'Drag the buttoncontrol to a toolbar (such as the Tools toolbar where the zoom and pan tools are)
'Right click on the buttoncontrol that was dragged to the toolbar and change the description and button image to something understandable
'Close the customize window
'In case that you have only 1 dataframe you will receive a message that you dont have enough dataframes
'In case you have only 2 dataframes the none active dataframe will receive the extent from the active dataframe (note that if the size and perhaps orientation of the dataframes differ, the extent will not be the same)
'In case you have more than 2 dataframes a list dialog is shown where you can select the dataframe that should be addapted. Select in case you want to change th extent of all the dataframe to the active dataframe
Dim pMxDoc As IMxDocument
Set pMxDoc = ThisDocument
Dim pMaps As IMaps
Set pMaps = pMxDoc.Maps
'check if tool should work:
Dim intMapsCount As Integer
If pMaps.Count = 1 Then
MsgBox There is only 1 dataframe available, tool will not have any effect...
Exit Sub
Else
intMapsCount = pMaps.Count
End If
'read the extent of focusmap
Dim pFocusMap As IMap
Set pFocusMap = pMxDoc.FocusMap
Dim pActiveView As IActiveView
Set pActiveView = pFocusMap
Dim pEnvFocusMap As IEnvelope
Set pEnvFocusMap = pActiveView.Extent
Dim pMap As IMap
Dim i As Integer
If intMapsCount = 2 Then
If pMaps.Item(0) Is pFocusMap Then
Set pMap = pMaps.Item(1)
Else
Set pMap = pMaps.Item(0)
End If
Set pActiveView = pMap
pActiveView.Extent = pEnvFocusMap
Else
'offer a list where the user can select the dataframe that should be addapted
Dim pListDlg As IListDialog
Dim boolOK As Boolean
Dim strChoice As String
Dim pCurrentMap As IMap
Set pListDlg = New ListDialog
For i = 0 To intMapsCount - 1
Set pCurrentMap = pMaps.Item(i)
If pCurrentMap Is pFocusMap Then
strChoice = i & - & pCurrentMap.Name & (Active mapframe)
Else
strChoice = i & - & pCurrentMap.Name
End If
pListDlg.AddString strChoice
Next i
pListDlg.AddString
boolOK = pListDlg.DoModal( Select Dataframe to be adapted , 0, Application.hWnd)
If boolOK Then
If pListDlg.Choice = intMapsCount Then
'all dataframe
For i = 0 To intMapsCount - 1
Set pMap = pMaps.Item(i)
Set pActiveView = pMap
pActiveView.Extent = pEnvFocusMap
Next i
Else
Set pMap = pMaps.Item(pListDlg.Choice)
Set pActiveView = pMap
pActiveView.Extent = pEnvFocusMap
End If
Else
MsgBox No selection was made...
Exit Sub
End If
End If
'refresh
pMxDoc.ActiveView.Refresh

