Imposta ruolo MAp tramite scriptCiao,
Sto realizzando uno script per aiutare i principianti a impostare alcuni parametri in una tabella di dati, come variabili di tabella e ruoli della mappa.
Il problema è quando imposto il ruolo della mappa, il percorso del file non viene registrato nelle proprietà della colonna
path = pick file ();
dt0:my_column << set property ("Map Role", Map Role ("Shape Name Use" (path), "My_column") ) ) ;Qualche idea che cosa causa questo?
Ri: Imposta ruolo MAp tramite scriptOk, dopo aver armeggiato per un po ', vedo dove si trova il problema:
i percorsi dei file in Windows sono simili al seguente C: \ user \ file.txt
Quando si estrae un percorso in jmp usando pick file (), lo converte in "C: /user/file.txt". Immagino che questo sia perché JMP considera '\' un carattere speciale. La cosa strana è che, in altre istruzioni JSL, puoi semplicemente usare la sintassi JMP per i percorsi dei file, ma per qualche ragione, Map Role utilizza la normale sintassi di Windows.
Ora la mia domanda è: esiste un modo semplice per convertire un percorso di file JMP in un percorso di file Windows? Qualcosa che eviterebbe la necessità di scriverlo in questo modo:
"C: \ \ user \ \ file.txt!"
In alternativa, sarebbe utile anche uno script che potesse accedere direttamente alle proprietà della colonna e aprire il prompt per scegliere un file nel riquadro del ruolo della mappa.
Grazie
Ri: Imposta ruolo MAp tramite scriptOk, sembra che ho trovato una soluzione a questo:
dt= open (pick file (), invisible ) ;
path = dt<< get path;
dt<<CLOSE></CLOSE>
Questo sembra risolverlo
Ri: Imposta ruolo MAp tramite scriptInoltre, penso che l'argomento con il percorso sia un argomento denominato, non una stringa, quindi è simile al seguente:
dt0:my_column << Set Property ( "Map Role", Map Role( Shape Name Use( path ), "My_column" ) ) ) ;
A proposito, JMP utilizza il formato di percorso POSIX per impostazione predefinita, non il formato di Windows. Ma di solito si converte automaticamente o puoi chiamare esplicitamente la funzione integrata per convertire tra i due formati.
Ri: Imposta ruolo MAp tramite scriptTale percorso è un po 'circolare e non necessario. Guarda questo funzione .
Ri: Imposta ruolo MAp tramite scriptGrazie @markbailey ,
Ho imparato qualcosa qui. Non sapevo cosa fosse Posix:)
Cercando POSIX nell'indice di scripting, ho trovato la funzione di conversione:
path = pick file () ;
converted_path= Convert File Path (path, windows) ;
Rispetto all'utilizzo del messaggio << get path, questo salva l'apertura della tabella.
Ri: Imposta ruolo MAp tramite scriptQuindi riesco a impostare questa proprietà da una stringa di testo?
Hai detto che questo è "un argomento chiamato, non una stringa". Cosa significa questo ? Immagino che questo sia un aspetto negativo di JSL, il sistema è così semplice e flessibile, gli utenti non conoscono la natura esatta di ciò che stanno manipolando
Ho provato le seguenti sintassi senza risultati:
dt0:my_column << Set Property ( "Map Role", Map Role( Shape Name Use(Eval( path) ), "My_column" ) );
dt0:my_column << Set Property ( "Map Role", Map Role( Shape Name Use(Expr( path) ), "My_column" ) );
Eval Expr (dt0:my_column << Set Property ( "Map Role", Map Role( Shape Name Use(Expr( path) ), "My_column" ) ) );
Ri: Imposta ruolo MAp tramite scriptÈ semplice. Ecco alcuni esempi di argomenti diversi.
Argomento letterale, stringa numerica o di caratteri:
x = Sqrt( 5 );
x = Num( "5" );
Argomento variabile:
x = 5;
y = Sqrt( x );
Argomento denominato:
dt << Bivariate( Y( :weight ), X( :height ), Fit Line );
L'ultimo esempio include argomenti denominati (Y, X e Fit Line) e argomenti letterali (: peso e: altezza). Il codice originale includeva l'argomento Shape Name Use () nei delimitatori della stringa di caratteri, che lo rendeva un argomento di stringa di caratteri.
Ri: Imposta ruolo MAp tramite scriptOk, finalmente il mio script funziona:)
Per qualche ragione, quando ho scritto:
dt0:my_column << set property ("Map Role", Map Role (Shape Name Use (path, "my_column" ) ) ;Non trasferirà la stringa contenuta nel percorso della variabile nella proprietà della colonna. Ancora non funzionava quando ho provato a utilizzare Eval (percorso) e altre soluzioni alternative. Immagino che JSL non supporti la valutazione delle variabili all'interno di questo messaggio.
Quindi ecco la soluzione che ho trovato:
My_expression = Eval Expr ( dt0:my_column << set property ("Map Role", Map Role (Shape Name Use (Expr(path), "my_column" ) ) );
Eval (My_expression); E questo finalmente fa il trucco!
Il passaggio per convertire il percorso da posix a Windows non è stato necessario alla fine, poiché la proprietà della colonna accetta entrambi i formati.