Ciao esperti JMP,
In qualche modo penso che il mio post sia stato appena cancellato, pubblicalo di nuovo
Ho una tabella DOE con molte formule previste, queste formule hanno una relazione sugli assi X, Y
Vorrei riorganizzare la tabella dati nel formato seguente in modo da poter disegnare il grafico della superficie (X, Y, Valore) per vedere come cambia quando cambio parametro

Due questioni:
1. Posso ottenere le formule quindi concatenarle nel formato seguente se (riga == 1, formula 1, se (riga == 2, formula 2, ...... ecc.)
Ma alla fine la formula è un carattere lungo con "", devo rimuovere manualmente "' affinché la formula funzioni
2. Utilizzo la casella di riepilogo H per ottenere valore e impostare ogni riga per modificare i parametri, in modo da poter vedere come cambia il grafico della superficie. Ma idealmente vorrei utilizzare la barra di scorrimento per modificare il parametro in modo da poter vedere le modifiche in modo più fluido
dt = data table("example DOE table");
dt2 = current data table();
colname = dt << get column names();
colnamelist = {};
formulalist = {};
loopword = char("If( Row() == ");
mid = char("");
final = char("");
//Get column names with predicted formula
for (i = 1, i <= N items(colname),i++,
pos = Contains (colname[i], "Pred F");
if(pos == 1 , insert into(colnamelist, colname[i]), continue())
);
//Get formula from columns and save into list
for each({colval}, colnamelist,
eval(evalexpr(
formula = Char(Expr(Name Expr(As Column(dt,colval))) << get formula());
));
insert into (formulalist, formula)
);
//Concat formulas to below format: If( row == 1, Formula 1, If( row ==2, Forumla 2, If( row == 3, formula 3)))......etc
for (i=1, i <= N rows() , i++,
mid = mid || loopword || char(i) || ", " || char(formulalist[i]) || ", "
);
final = mid || char("0");
for (i=1, i <= N rows() , i++,
final = final || char(")")
);
eval(evalexpr(
:height << set formula(expr(final))
));
nw = New Window( "process paramaeter setting",
H List Box( Text Box( " Input Parameter A " ), A = Number Edit Box() ),
H List Box( Text Box( " Input Parameter B " ), B = Number Edit Box() ),
H List Box( Text Box( " Input Parameter C " ), C = Number Edit Box() ),
H List Box( Text Box( " Input Parameter D " ), D = Number Edit Box() ),
Button Box( "OK",
theA = A << get;
theB = B << get;
theC = C << get;
theD = D << get;
:Parameter A << set each value(theA);
:Parameter B << set each value(theB);
:Parameter C << set each value(theC);
:Parameter D << set each value(theD);
//Somehow the column with formula cannot draw into surface plot directly, so I have to copy and paste value to anohter column to draw
newheight = :height << get values;
:newheight<< set values(newheight);
)
)
L'ho trovato, un semplice parse() può fare il trucco per la mia prima domanda
seval(evalexpr(
:height << set formula(expr(parse(final)))
));
Ma per la seconda domanda, sarebbe davvero bello se potessimo avere una barra di scorrimento per impostare ciascun valore in modo che l'utente possa facilmente verificare come cambia la mappa 3D al variare del parametro,
Sembra che tu debba utilizzare le caselle di scorrimento per l'input, anziché le caselle di modifica dei numeri
Grazie Jim, uno slider box è quello che sto cercando.
Ma ancora una cosa, creo una casella del pulsante per ottenere il valore dalla casella del dispositivo di scorrimento, quindi imposto ciascun valore per modificare le righe, è possibile far sì che la riga cambi in tempo reale come dispositivo di scorrimento, senza ulteriore pulsante di controllo?
Value = 0;
New Window( "Example",
Panel Box( "Parameter setting",
tb = Text Box( "Parameter A: " || Char( Value ) ),
sb = Slider Box( 0, 1, Value, tb << Set Text( "Value: " || Char( Value ) ) ),
Button Box( "OK",
:Parameter A << set each value(Value)
)
)
);
cerca nello Scripting Index lo Slider Box() e vedrai:
Sintassi: box = Slider Box(valore minimo, valore massimo, variabile, SCRIPT , ,
Puoi prendere il JSL dal pulsante OK e inserirlo nella definizione dello Slider Box(). Verrà eseguito ogni volta che si sposta il cursore.
Questo ha risolto perfettamente il mio problema, grazie Jim per il tuo supporto