스크립트는 추가 기능에 의해 호출될 때까지 작동합니다!<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />안녕하세요,
사용자 인터페이스에서 데이터를 가져오고, JMP에서 피팅을 실행하고, 원시 데이터, 일부 계산된 데이터, 다양한 플롯, JMP 출력에서 선택한 정보가 포함된 보고서를 출력하는 스크립트가 있습니다.
한 번 암호화된 경우에도 스크립트에서 실행할 때 잘 작동합니다.
그러나 암호화된 파일을 이 스크립트만 있는 간단한 추가 기능에 붙여넣으면 JMP 출력에서 추출한 적합 방정식이 더 이상 표시되지 않는 것을 제외하고는 모든 것이 작동합니다.
나는 당황했다!
추가 기능을 사용하기 전에 스크립트 창에서 스크립트를 한 번 실행한 경우 JMP는 추가 기능에서 완벽하게 작동합니다. 거의 이제 해야 할 일을 기억하는 것처럼!
스크립트는 여기에서 방정식을 얻습니다.
nlr = nlModel << 보고서;
pb = nlr[PictBox(1)];
modEq = pb << 이미지 가져오기;
그런 다음 다음을 사용하여 표시합니다.
V 목록 상자(
텍스트 상자("모델 방정식", << 글꼴 크기 설정(12)),
그림 상자(modEq),
텍스트 상자(" "),
추가 기능에 통합되면 이 비트가 작동을 멈추는 이유를 아십니까?
스크립트 창에서 실행된 출력과 추가 기능에서 실행된 출력의 화면 덤프를 첨부하고 있습니다(JMP를 연 직후).
감사해요
Re: 추가 기능에서 호출할 때까지 스크립트가 작동합니다!캡처하려는 비트맵을 실제로 생성하려면 수식을 포함하는 PictBox가 화면에 나타나야 한다고 생각합니다.보이는 동안 캡처하는 것이 가장 좋습니다.
데이터 테이블에 "비공개" 대신 "숨김"을 사용할 수 있습니다.숨겨진 테이블에는 숨겨진 창이 있습니다.프라이빗 테이블에는 창이 없습니다.개인 테이블을 가리키는 변수가 있는 동안 개인 테이블을 닫아야 합니다(또는 JMP가 닫힐 때까지 축적되어 메모리를 모두 사용함).숨겨진 테이블은 추적하기가 그리 쉽지 않습니다.
Re: 추가 기능에서 호출할 때까지 스크립트가 작동합니다!검증 테스트를 실행할 수 있으려면 보기 흉한 해결 방법을 사용해야 했습니다. 비선형 JMP 분석을 호출하기 직전에 빈 창을 열고 스크립트 끝에서 닫습니다.
효과가있다. show then hide log도 작동할 것으로 기대합니다.
그래도 왜 이러는지 이해가 안 돼요!
Re: 추가 기능에서 호출할 때까지 스크립트가 작동합니다!안녕 크레이지,
너무... 나는 newimage 기능(내가 몰랐던 좋은 기능)을 사용해 보았지만 여전히 운이 없었습니다.
보고서 플랫폼에서 추출할 때 추가하려고 했습니다.
nlr = nlModel << 보고서;
pb = nlr[PictBox(1)];
//modEq = pb << 이미지 가져오기;
//여기:modEq = pb << 이미지 가져오기;
modEq = pb << 이미지 가져오기;
modEq = NewImage(modEq);
나는 또한 내 자신의 보고서 창에서 시도했습니다.
V 목록 상자(
텍스트 상자("모델 방정식", << 글꼴 크기 설정(12)),
picturebox(newimage( modEq )),
그리고 나는 좋은 측정을 위해 두 곳에서 모두 시도했습니다!
차이점이 있습니다. 백그라운드 JMP 보고서에는 여전히 십자 표시가 표시되지만 제 보고서에는 아무 것도 표시되지 않고 빈 공간도 표시되지 않습니다.
그러나 스크립트를 다시 살펴보고 점점 더 적게 실행하면서 실제로 실패하는 위치는 다음과 같다는 것을 깨달았습니다.
// 데이터 분석
win3 = 새 창("비선형 모델 보고서",
nlModel = dt << 비선형(
Y( :이름( "hGH" ) ),
X( :Name( "모델 성장" ) ),
2차 미분법( 1 ),
뉴턴,
마치다,
신뢰 한계,
예측 표현식 표시( 1 )
)
);
win3는 스크립트에 의해 닫히고 과학자들이 요청한 모든 내용이 포함된 내 보고서 창으로 대체됩니다. 따라서 어떤 이유로 JMP에서 홈 창을 제외하고 열려 있는 창이 없으면 예측 방정식 표시 명령이 실패합니다! 이 스레드에서 제안된 모든 트릭은 NLR이 수행된 후에 수행되는 작업과 관련되므로 결과에 영향을 미치지 않습니다.
그리고 몇 달 전에 추가 기능을 작성할 때 이 버그를 식별하지 못한 이유는 내가 하루 종일 창을 켜두었기 때문입니다. 추가 기능이 작동하기에 충분했을 것입니다. 열려 있는 모든 JMP 창이 트릭을 수행하는 것 같습니다.
배경의 경우: hGH는 응답이고 값은 사용자가 더 위로 입력합니다. 모델 성장은 시간을 들여 실제 성장에 맞는 "예상 성장"을 모델링하는 공식으로 파악하기 어려운 모델 방정식을 사용하는 열입니다.
따라서 문제는 비선형 함수가 다른 jmp 창이 열리지 않을 때 내 스크립트에서 호출되는 pred 방정식을 표시하지 않는다는 것입니다.
이전에 테이블을 만듭니다.
dt = 새 테이블( "데이터",
사적인,
행 추가( 6 ),
새 열( "시간", 숫자, 값 설정( lstTimes ) ),
새 열( "hGH", 숫자, 값 설정( lsthGH ) )
);
나는 개인 교육을 제거했고 물론 이제 addin이 작동합니다.
하지만 비공개를 사용한 이유는 내 출력이 작동하는 유일한 방법이기 때문입니다. 마지막에 데이터 테이블을 닫으려고 하면 대기해도 보고서가 생성되지 않습니다.
여하튼 제대로 된 해결책은 아니지만, 보고서가 생성될 때 데이터 테이블을 열어서 오류가 없도록 한 다음 스크립트 실패 없이 데이터 테이블을 닫는 방법이 있다면 그걸로 만족하겠습니다.
JMP 13에서 작동하는지, 버그인지 아니면 제가 스크립트를 작성한 방식에 실제로 실수가 있는지 궁금합니다...
Re: 추가 기능에서 호출할 때까지 스크립트가 작동합니다!이 시도:
그림상자( 새로운 이미지 ( 모드Eq ))
빨간색 X는 그림 상자가 이미지의 원본 데이터에 연결되어 있음을 의미한다고 생각합니다. 그 데이터는 더 이상 존재하지 않습니다 .(newImage로) 이미지를 복제하면 pict 상자가 자체 개인 사본을 갖게 될 것이라고 생각합니다.
picturebox 기능을 생략할 수도 있습니다.
V 목록 상자(
텍스트 상자("모델 방정식", << 글꼴 크기 설정(12)),
modEq, // PictureBox 함수 없이 이미지가 작동할 것이라고 생각하지만 여전히 newImage가 필요할 수 있습니다.
텍스트 상자(" "),
Re: 추가 기능에서 호출할 때까지 스크립트가 작동합니다!안녕하세요,
이제 몇 가지 다른 시나리오를 시도했습니다.
노트
- addin과 스크립트는 모두 here 절에 대한 기본 이름을 사용합니다(대부분 사람들이 동시에 다른 용도로 JMP를 사용하는 경우).
- JMP 보고서에서 내 것으로 가져오려는 방정식은 채울 수식을 사용하는 테이블의 열에서 가져온 사용자 지정 방정식입니다. 예측 표현식 표시 ( 1 )
- JMP의 방정식은 텍스트가 아니라 그림이기 때문에 트리 구조에서 이것은 Craige가 말한 것처럼 pictbox로 나타납니다. 그래서 새 스크립트에서 Eric의 제안을 사용했고 이제
nlr = nl모델 << 보고서 ;
피비 = nlr [ 픽트박스 ( 1 )] ;
모드Eq = 피비 << 이미지 가져오기 ;
결핵 = nlr [ 테이블박스 ( 5 )] ;
tbl값 = 결핵 << 데이터 테이블로 만들기 ;
- 또한 그림 상자에 모인 여러 비트로 구성된 그래프를 얻습니다.
bb = nlr [ 그림상자 ( 1 )] ;
구성 = bb << 사진 가져오기 ;
내 보고서에 문제가 없는 항목을 표시합니다.
시나리오:
- 매번 스크립트에서 작업
- 실행되지 않았더라도 스크립트가 열리면 addin에서 작동합니다.
- 추가 기능이 두 번째로 호출되고 보고서가 닫히지 않은 경우 작동합니다(수식이 표시되지 않은 보고서).
- 애드인에서 처음 호출하거나 보고서 창이 닫힌 경우 언제든지 작동하지 않습니다.
- 로그가 열리면 작동
- 로그 및 보고서 창을 모두 미리 닫아도 로그가 열리면 작동합니다.
- JMP 창(JMP 추가 편집 창/데이터 테이블/스크립트 창)이 열려 있는 한 작동하지만 일단 닫히면 더 이상 작동하지 않습니다.
내 애드인이 작동하려면 친구가 필요한 것 같습니다.
그림에서 볼 수 있듯이 십자가를 표시하고 있습니다. 또한 스크립트가 실행 중일 때 JMP는 자체 보고서 창과 비선형 적합을 실행하기 위해 스크립팅한 테이블을 엽니다. 그것들을 완전히 보이지 않게 만드는 방법을 알아낼 수 없었기 때문에 백그라운드에서 열리고 닫힙니다. 그런 일이 발생하면 JMP 분석 보고서에서 예측 방정식 대신 십자가가 있는 것도 엿볼 수 있습니다.
이것이 나를 위한 것이라면 괜찮겠지만 cGMP에서 사용하기 위해 이것을 검증해야 하고 올바른 형식을 얻기 위해 매번 두 번 실행하라고 사람들에게 잘 말할 수 없습니다!
나는 여기서 헤매고있다 ...
더 이상 생각이 없습니까?
Re: 추가 기능에서 호출할 때까지 스크립트가 작동합니다!PictBox와 PictureBox는 별개의 두 상자입니다.내부적으로 JMP는 PictureBox를 표시 상자 트리의 마커로 사용합니다.이 마커는 하위 상자를 단일 덩어리로 그룹화해야 하는 시기를 결정하는 데 도움이 되는 여러 가지 방법으로 사용됩니다.플랫폼은 일반적으로 그래프와 해당 축 주위에 PictureBox를 배치합니다.그것은 트리에서 종종 "사진을 찍고" 싶은 지점입니다.
PictBox는 비트맵 그림이 들어 있는 상자입니다.
아쉽게도 PictureBox() 기능 PictBox를 생성합니다.PictureBox를 생성하는 JSL 함수는 없지만 플랫폼에서 생성합니다.
보고서에 이미지를 추가하지 않는 한 PictBox를 찾지 못할 것입니다.그래프가 있으면 PictureBox를 찾을 수 있을 것입니다.
Re: 추가 기능에서 호출할 때까지 스크립트가 작동합니다!귀하의 의견에 감사드립니다.
문제 해결 팁도 감사합니다. 내가 이 글을 처음 썼을 때, 몇 달 전, th의 숫자는 트리 구조가 일치하지 않아 결국 추측해야 했습니다. 나는 이것을 잊고 있었다. 정말 이상했습니다. 트리 구조는 숫자 상자 18이라고 말하지만, 보고서 창에 표시하려면 예를 들어 숫자 상자 7을 호출해야 합니다!!!
addin은 항상 동일한 분석을 수행하므로 해당 측면에 문제가 없습니다.
Re: 추가 기능에서 호출할 때까지 스크립트가 작동합니다!안녕하세요 Eric. 이 답변에 감사드립니다.
떠나서 생각해보니 범위 문제도 생각나고 그게 문제임에 틀림없다는 것을 깨달았습니다.
귀하의 솔루션을 모두 시도했지만 작동하지 않았습니다 ... 처음으로.
그러나 이제 추가 기능을 연속으로 두 번 실행하면 예측 방정식이 두 번째 보고서 출력에 표시됩니다. 두 회의 사이가 아닐 때 다시 시도하겠습니다!
이 특정 그림 상자가 어떻게 나에게 문제를 주었고 jmp 보고서에서 가져온 다른 비트가 제대로 표시되었는지는 우스꽝스럽습니다.
여기에서 좋은 학습!
다시 한 번 감사드립니다 
Re: 추가 기능에서 호출할 때까지 스크립트가 작동합니다!이것이 범위 지정처럼 보인다는 데 동의합니다.
그러나 관련이 없을 수도 있지만 이것이 귀하에게 효과가 있다는 사실에 놀랐습니다. pb = nlr[PictBox(1)];
[PictureBox(1)] 철자를 쓰지 않으면 오류가 발생합니다.그것이 JMP 버전인지 궁금합니다.
나는 또한 당신이 추가 할 수 있다고 제안하려고했습니다
nlr<
이 즉각적인 문제와 관련이 없을 수도 있지만 추가 기능이 매번 다른 데이터를 가져올 경우(또는 다른 기본 설정을 가진 다른 사용자가 사용하는 경우) 해당 상자가 항상 있고 항상 PictureBox가 있는지 확인하고 싶습니다. (1). 당신은 그것을 더 찾고 싶을 수도 있습니다 구체적으로 아래에 있는 개요 상자 이름을 기반으로 하거나 그것을 찾기 위해 테스트합니다.스크립트가 실패하지 않고 계속해서 보고서를 작성하기 때문에 이미 후자를 수행하고 있을 수 있습니다.PictBox에서 본 실패는 전체 스크립트를 중단하고 대신 공백을 사용하지 않습니다.
Re: 추가 기능에서 호출할 때까지 스크립트가 작동합니다!이봐, 그웨니캣,
JMP 로그에 메시지가 있습니까?
이 유형의 대부분의 문제는 변수 범위 지정으로 귀결되는 경향이 있습니다.추가 기능이 다음과 함께 실행될 가능성이 높습니다. 여기에 기본 이름(1) , 그러나 추가 기능의 컨텍스트 외부에서 실행할 때 스크립트는 아마 그것 없이 실행될 것입니다.따라서 추가 기능 컨텍스트 외부에서는 변수가 모두 전역적이지만 추가 기능 컨텍스트에서는 여기 대신 네임스페이스.그래서 나는 생각한다 모드Eq V List Box 내부는 애드인 버전에서는 찾을 수 없습니다.추가 기능 외부에서 스크립트를 처음 한 번 실행할 때 작동한다는 사실은 이 이론을 뒷받침합니다. 모드Eq 추가 기능 스크립트가 찾을 수 있도록 전역 네임스페이스에 추가합니다.
다음 두 줄을 변경해 보십시오.
modEq = pb << 이미지 가져오기;
그림 상자(modEq),
에게
::modEq = pb << 이미지 가져오기;
그림 상자( ::modEq ),
그것이 더 잘 작동하지 않는지 확인하십시오.그것은 확신합니다 모드Eq 전역 이름 공간에 넣습니다.또는 보관하고 싶다면 여기 네임스페이스(더 나은 방법일 수 있음) 대신 다음을 수행하십시오.
여기:modEq = pb << 이미지 가져오기;
그림 상자( 여기:modEq ),
문제가 해결되면 알려주세요.
감사해요,
에릭