Come aggiornare un modello di visualizzazione con i simboli importati

Se sono stati utilizzati simboli personalizzati nei modelli di visualizzazione e si desidera aggiornarli con i simboli modificati, è possibile aprire il modello di visualizzazione, generare gli elementi grafici e utilizzare MAPSYMBOLIMPORTEXPORT per importare i simboli modificati. Per ulteriori informazioni, vedere Come importare i simboli.

    Come importare i simboli in batch, senza un'interfaccia utente

  1. In Opzioni modello di settore globale Genera grafica, selezionare Riutilizza Carte correnti.
  2. Aprire il progetto a cui si applica il modello di visualizzazione e iniziare con un disegno vuoto.
  3. Impostare entrambi le variabili di sistema CMDDIA e FILEDIA su 0 (zero).
  4. Nella riga di comando, digitare TBDMOPEN.
  5. In base alla procedura, immettere il percorso per il modello di visualizzazione che si desidera modificare.
  6. Immettere il comando TBGENERATEGRAPHIC.
  7. Immettere il comando MAPSYMBOLIMPORTEXPORT.
  8. In base alla procedura, scegliere Importa.
  9. Immettere il percorso del file di simbolo contenente i simboli che si desidera importare.
  10. Scegliere un'opzione di importazione per specificare come si desidera selezionare i simboli nell'interfaccia utente.
  11. Terminare l'importazione, quindi immettere il comando TBDMSAVE.

In alternativa, è possibile completare automaticamente la procedura descritta sopra in base allo script. Nella riga di comando, caricare il file di script con il comando SCRIPT e attendere il termine. Quando si eseguono più script per diversi modelli di visualizzazione, accertarsi che inizino sempre con un disegno vuoto, prima di aprire il modello di visualizzazione. In caso contrario, verranno salvati vecchi layer dal disegno precedente nel nuovo modello di visualizzazione.

Di seguito è riportato uno script di esempio. È possibile salvarlo come file con un'estensione .scr.

CMDDIA 0
FILEDIA 0
_TBDMOPEN [path to your TBDM file]
_TBGENERATEGRAPHIC
_MAPSYMBOLIMPORTEXPORT _IMPORT [choose options that fit your needs]
_TBDMSAVE
Dopo aver completato lo script, impostare le variabili CMDDIA e FILEDIA ai valori originali, che corrispondono solitamente a "1".

Opzione script VBA

Per risparmiare tempo, è possibile importare i simboli in molti modelli di visualizzazione in un'unica operazione mediante uno script Microsoft Visual Basic for Applications (VBA). Lo script riportato di seguito è un esempio. Può essere utilizzato come modello, apportare le necessarie modifiche e salvarlo come file .bas.

Attribute VB_Name = "ImportSymbolInto_IM_DM"
Sub ImportSymbolIntoDisplayModel()
    Dim prototypeDWG, templateDWT As String
    Dim FileDia, CmdDia As Integer
    Dim displayModelArray(0 To 2) As String     'TODO: Adapt to the number of Display Models to update
    
	' TODO - Adapt to your settings
	' Define the path to the Display Models for updating the symbol(s)
	' When adding or removing Display Models, please adapt also the size of displayModelArray
	'  and the loop over all Display Models
    displayModelArray(0) = "C:\TEST\DM1\DM1.tbdm"
    displayModelArray(1) = " C:\TEST\DM2\DM2.tbdm"
    displayModelArray(2) = " C:\TEST\DM3\DM3.tbdm"
    
    ' Attention !!!
    ' Only use the "Generic Graphic" - Application option: Reuse current drawings
    ' We need the same drawing for all operations !
        
    ' TODO - Adapt to your settings
    ' Define where the symbol(s) should be imported from
    prototypeDWG = "C:\temp\symbol_modified.dwg "
    
    ' TODO - Adapt to your settings
    ' Define the template file to be used when open a new DWG
    templateDWT = "c:\temp\Template\map2d.dwt"
    
    Dim currentSDI As Integer
    currentSDI = ThisDrawing.GetVariable("SDI")
    
    If (currentSDI = 1) Then
        MsgBox "The functions works only with multiple drawings [SDI=0]"
        Exit Sub
    End If
    
    FileDia = ThisDrawing.GetVariable("FILEDIA")
    CmdDia = ThisDrawing.GetVariable("CMDDIA")
    
    ThisDrawing.SetVariable "FILEDIA", 0
    ThisDrawing.SetVariable "CMDDIA", 0
    
    ' Loop all Display Models
    For inti = 0 To 2
        ' Open an empty drawing
        Application.Documents.Open (templateDWT)
        ' Open the Display Model
        ThisDrawing.SendCommand "_TBDMOPEN" & vbCr & displayModelArray(inti) & vbCr
        ThisDrawing.SendCommand "_TBGENERATEGRAPHIC" & vbCr
        ' Import the symbol and apply changes to the layers
        ThisDrawing.SendCommand "_MAPSYMBOLIMPORTEXPORT" & vbCr & "_IMPORT" & vbCr & prototypeDWG & vbCr & "_YES" & vbCr
        ' Save the changes of the layers to the Display Model
        ThisDrawing.SendCommand "_TBDMSAVE" & vbCr
        ' Do not save the drawing
        ThisDrawing.Close (False)
    Next
    
    ' Reset the system variables
    ThisDrawing.SetVariable "FILEDIA", FileDia
    ThisDrawing.SetVariable "CMDDIA", CmdDia
    
End Sub

Nello script di esempio, esiste un modulo "ImportSymbolInto_IM_DM" con un modulo secondario "ImportSymbolIntoDisplayModel ()". È necessario adattare il numero di modelli di visualizzazione e i percorsi per i file DWT e .tbdm.

Come importare i simboli di più modelli di visualizzazione, utilizzando uno script VBA

  1. Nella riga di comando di Map 3D, immettere VBAIDE per aprire la finestra di Microsoft VBA.

    Verrà visualizzato un messaggio che indica di scaricare Autodesk AutoCAD VBA Enabler se non è stato installato.

  2. Nella finestra Microsoft VBA, effettuare le seguenti operazioni:
    1. Fare clic su File e scegliere Importa file.
    2. Nella finestra di dialogo Importa file, individuare e selezionare il file .bas che contiene lo script.
    3. Fare clic su Apri.
    4. Nella finestra Microsoft VBA, fare clic su Salva.
    5. Nella finestra di dialogo Salva con nome, specificare il nome del file e il percorso, quindi fare clic su Salva.
  3. Chiudere la finestra Microsoft VBA.
  4. Nella riga di comando, digitare VBALOAD per caricare il file .dvb salvato in precedenza.

    Se il sistema avvisa circa le macro, fare clic su Abilita macro.

  5. Nella riga di comando, digitare VBARUN e scegliere la relativa macro da eseguire.