프로젝트 레이아웃 스크립팅5개의 창을 생성하는 스크립트가 있고 스크립트를 사용하여 출력을 프로젝트 형식으로 구성하고 레이아웃을 정렬하려고 합니다.
오른쪽에 있는 창 목록을 원합니다. 왼쪽에는 두 개의 행이 있습니다.
맨 윗줄에 두 개의 그래프를 나란히 놓고 싶습니다.
맨 아래 행에 세 개의 테이블이 탭으로 표시되기를 원합니다.
아래 스크립트를 생각해 냈지만 원하는대로 작동하지 않습니다.현재 5개 모두 5개의 서로 다른 탭에 단일 행으로 표시되며 오른쪽에 창 목록이 있습니다.
누군가 올바른 방향으로 나를 가리킬 수 있습니까?
Project = new project();
Move to Project( destination( Project ), windows( {"Table1" ,"Table2" , "Table3", "Graph1", "Graph2"} ));
Project << Set Layout(
H Splitter Box(
<<SET sizes=""></SET>Re: 프로젝트 레이아웃 스크립팅프로젝트 생성, 데이터 테이블 생성 및 해당 테이블을 프로젝트 내용에 저장하는 가장 간단한 예:
new Project(
Run Script(
dt = New Table( "My Table",
Add Rows( 3 ),
New Column( "Column 1",
Set Values( [1, 2, 3] )
)
);
dt << Save As("$PROJECT/my table.jmp");
);
);
경로 변수 $PROJECT는 현재 프로젝트의 프로젝트 콘텐츠에 매핑됩니다(따라서 프로젝트 내에서만 사용할 수 있음). 프로젝트 외부에서 테이블을 생성한 다음 내부로 이동하는 것은 완벽할 것입니다. 하지만 외부적인 이유로 필요하지 않은 경우 일반적으로 처음에 모든 것을 프로젝트에서 직접 생성하는 것이 더 효율적입니다.
Re: 프로젝트 레이아웃 스크립팅스크립트의 본문은 3개의 데이터 파일을 생성하고 서로 연결합니다.지금 쓰는 방식은 파일을 C드라이브 Temp 폴더에 저장한 뒤 프로젝트로 옮기는 방식입니다.콘텐츠 섹션을 추가하고 스크립트를 사용하여 이 세 파일을 여기에 추가하고 싶습니다.그러면 프로젝트에서 파일을 열고 공정 능력 그래프를 만들기 위해 수행된 분석을 업데이트할 것이라고 생각합니다.
Re: 프로젝트 레이아웃 스크립팅프로젝트 레이아웃 코드는 이전과 (다소) 동일해야 합니다. JMP 16의 차이점은 콘텐츠를 저장하려고 할 때 원하는 경우 프로젝트 파일 내부에 저장할 수 있다는 것입니다. 원하는 경우 스크립트에서 이 작업을 자동으로 수행하지만 특정 방법을 권장하려면 프로젝트에 대해 조금 더 알아야 합니다.
Re: 프로젝트 레이아웃 스크립팅JMP 16은 저장 및 전송을 위해 파일을 프로젝트 파일에 통합하여 프로젝트 플랫폼을 개선합니다. 이것은 좋은 개선입니다. 보고서에서 프로젝트 파일로 파일을 이동하는 JMP 15 스크립트는 16에서도 여전히 작동하지만 JMP16의 새로운 기능을 사용하도록 업데이트하고 싶습니다. 이 경우 새 스크립트 구조가 어떻게 생겼는지 잘 모르겠습니다. 어떤 제안? 첨부된 내 스크립트는 현재 내 스크립트의 모습입니다(모든 파일이 내 PC를 기반으로 하고 데이터 랭글링이 스크립트의 이전 부분에서 수행되었기 때문에 실행할 수 없습니다.
Re: 프로젝트 레이아웃 스크립팅일반 TabBox API를 사용하여 특정 현재 탭을 갖도록 특정 TabBox를 설정할 수 있습니다. (대화형 JMP 스크립팅 인덱스는 이러한 내용을 배울 수 있는 좋은 리소스입니다.) 다음은 우리가 작업한 예제를 사용하여 수행하는 한 가지 방법입니다.
Project = new project();
Move to Project( destination( Project ), windows( {table1, table2, table3} ));
Project << Set Layout(
H Splitter Box(
<<SET sizes=""></SET>
탭 상자를 만들 때 변수에 탭 상자를 저장한 다음 나중에 해당 변수를 사용하여 현재 탭을 설정합니다.
Re: 프로젝트 레이아웃 스크립팅안녕 아론,
드디어 실행에 옮겼습니다. 정말 감사합니다!
테이블과 그래프를 생성할 때 윈도우 ID를 설정하려고 했는데 잘 안 되는 것 같아요. 이제 레이아웃을 올바르게 수행하고 있습니다.
또 다른 관련 질문: 특정 탭을 표시하려면 어떻게 해야 합니까? 주문할 수 있는 방법이 있나요? 기본적으로 항상 동일한 테이블을 표시하지만 표시하려는 테이블이 아닙니다.
Re: 프로젝트 레이아웃 스크립팅죄송합니다. 아직 작동하지 않습니다.다음은 (대부분) 스크립트와 일부 샘플 데이터 테이블을 사용하는 첫 번째 방법의 예입니다.
table1 = Open("$SAMPLE_DATA/Big Class.jmp");
table1 << Set Window ID("Table1");
graph1 = table1 << Run Script("Bivariate");
graph1 << Set Window ID("graph1");
table2 = Open("$SAMPLE_DATA/Iris.jmp");
table2 << Set Window ID("Table2");
graph2 = table2 << Run Script("Graph Builder Contour Plot");
graph2 << Set Window ID("graph2");
table3 = Open("$SAMPLE_DATA/Baseball.jmp");
table3 << Set Window ID("Table3");
Project = new project();
Move to Project( destination( Project ), windows( {table1, table2, table3} ));
Project << Set Layout(
H Splitter Box(
<<SET sizes=""></SET>
다음은 ID를 설정하지 않고 이를 수행하는 한 가지 방법입니다.
table1 = Open("$SAMPLE_DATA/Big Class.jmp");
graph1 = table1 << Run Script("Bivariate");
table2 = Open("$SAMPLE_DATA/Iris.jmp");
graph2 = table2 << Run Script("Graph Builder Contour Plot");
table3 = Open("$SAMPLE_DATA/Baseball.jmp");
Project = new project();
Move to Project( destination( Project ), windows( {table1, table2, table3} ));
Project << Set Layout(
H Splitter Box(
<<SET sizes=""></SET>
마지막으로, 처음부터 프로젝트의 창을 열어 Move to Project()를 피하는 버전이 있습니다.
Project = new project();
Project << Run Script(
table1 = Open("$SAMPLE_DATA/Big Class.jmp");
table1 << Set Window ID("Table1");
graph1 = table1 << Run Script("Bivariate");
graph1 << Set Window ID("graph1");
table2 = Open("$SAMPLE_DATA/Iris.jmp");
table2 << Set Window ID("Table2");
graph2 = table2 << Run Script("Graph Builder Contour Plot");
graph2 << Set Window ID("graph2");
table3 = Open("$SAMPLE_DATA/Baseball.jmp");
table3 << Set Window ID("Table3");
);
Project << Set Layout(
H Splitter Box(
<<SET sizes=""></SET>
스크립트와 함께 작동하도록 그 중 하나를 수정할 수 있기를 바랍니다.
Re: 프로젝트 레이아웃 스크립팅안녕 아론,
나는 당신이 제안한 것을 시도했지만 여전히 운이 없으며 동일한 오류 메시지가 나타납니다.
내가 이해하지 못하는 것은 : 새 창을 만든 다음 Set Window ID를 사용하여 ID를 부여했지만 해당 ID는 Tab Box()에서 인식되지 않는 것 같습니다.
Re: 프로젝트 레이아웃 스크립팅내 잘못이라고 생각합니다. Get Window()는 어디를 볼지 알아야 합니다(프로젝트의 창은 외부의 창과 동일한 제목을 가질 수 있기 때문입니다). 그래서 대신
Get Window("Table1")
(프로젝트가 아닌 "Table1"이라는 창을 찾고 있음)
Get Window(Project(Project), "Table1")
내부 "프로젝트"는 스크립트 상단에서 프로젝트 변수에 대해 선택한 이름입니다.
Project = new project();
모두 함께 다음과 같이 작동해야 합니다.
Tab Page Box(
Window ID( Get Window(Project(project), "Table1") << Get Window ID())
)
그리고 네, 이것은 확실히 우리가 향후 JMP 릴리스에서 더 쉽게 만들 수 있기를 바라는 것입니다. 
Re: 프로젝트 레이아웃 스크립팅당신의 도움을 주셔서 감사합니다. 여전히 어려움이 있습니다. 죄송합니다. JSL 초보자입니다 ...
두 번째 옵션을 사용하면 스크립트 가능한 개체에 대한 오류 메시지가 표시됩니다.
Send는 'Send', Get Window( "Table1" ) << /*###*/의 액세스 또는 평가에서 스크립터블 개체를 예상합니다.
창 ID 가져오기() /*###*/
이 개체를 스크립팅 가능하게 만들어야 한다고 가정하지만 어떻게 해야 할지 잘 모르겠습니다.
나는 또한 효과가 있다고 생각한 첫 번째 옵션을 시도했습니다. 각 보고서에 대해 새 창을 만들고 창 ID 설정 명령을 사용하여 ID를 부여했지만 여전히 작동하지 않습니다.
Re: 프로젝트 레이아웃 스크립팅당신 말이 맞습니다. 그 GUID는 매번 다를 것입니다. 창 제목을 사용하지 않은 이유에 대해 자세히 설명하지는 않겠지만 ID에 대한 (복잡하긴 하지만) 합당한 이유가 있습니다. 이와 같이 프로젝트를 수동으로 스크립팅할 때 가장 좋은 방법은 다음을 사용하여 스크립트 초기에 창 ID를 설정하는 것입니다.
mywindow << Set Window ID("window1");
또는 레이아웃에서 직접 Get Window ID()를 사용하십시오.
Tab Page Box(
Title( "Table1" ),
Window ID( Get Window("Table1") << Get Window ID())
)
Title()은 주어진 ID를 가진 창을 찾을 수 없는 경우 친근한 메시지를 인쇄하고 좀 더 사람이 읽을 수 있도록 만드는 데만 사용됩니다. 기능적으로 아무 것도 하지 않으므로 삶을 더 쉽게 만드는 경우 계속 진행하고 그대로 둘 수 있습니다.
Re: 프로젝트 레이아웃 스크립팅안녕 아론,
감사합니다. 스크립트 레이아웃을 구하는 방법을 몰랐기 때문에 훌륭합니다!
그래서 이 작업을 수행했으며 문제는 로그에서 각 탭이 다음과 같이 보인다는 것입니다.
Tab Page Box(
Title( "Table1" ),
Window ID( "e516a5e8-d5c2-954e-90a6-ba6b719dae98" )
모든 창 ID 비트를 제거했지만 여전히 작동하지 않으므로 창 ID 비트가 필요하다고 가정합니다. 그러나 이러한 창 ID 번호는 스크립트가 실행될 때마다 달라지는 임의의 문자와 숫자의 조합처럼 보이므로 미리 지정할 수 없습니다. 열려 있는 창의 창 ID를 찾는 방법이 있습니까? 이 작업을 수행하는 방법을 찾았지만 수행하는 방법을 볼 수 없습니다.
Re: 프로젝트 레이아웃 스크립팅JSL에서 프로젝트 레이아웃을 작성하는 가장 좋은 방법 중 하나는 프로젝트를 열고 드래그 앤 드롭 인터페이스를 사용하여 원하는 배열을 설정한 다음 JSL을 사용하여 레이아웃을 저장하는 것입니다. 이렇게 하려면 새 JSL 스크립트(프로젝트 외부)를 만든 다음 다음을 실행합니다.
Get Project("Untitled") << Get Layout();
또는
Get Project(1) << Get Layout();
레이아웃을 가져오려는 프로젝트의 제목 또는 색인을 사용합니다. 이렇게 하면 참조된 프로젝트의 레이아웃이 로그에 덤프되어 프로젝트 생성 스크립트 작업에 맞게 조정할 수 있습니다.
(프로젝트 내부에서 동일한 작업을 수행할 수 있으며 [이 프로젝트()] 바로 가기를 사용하여 명령을 실행할 수도 있지만 결과 레이아웃에는 작업을 위해 연 스크립트 창이 포함되므로 더 쉬운 경우가 많습니다. 외부에서 할 수 있습니다).