Graph Builder로 채워진 BorderBox가 있는데, 그림으로 저장하고 싶습니다.
FrameBox에 "그래픽 스크립트 추가"가 있습니다. 이 스크립트는 변수를 사용합니다.
dt << Graph Builder(
Size( 600, 400 ),
Show Control Panel( 0 ),
Show Legend( 0 ),
Title Alignment( "Right" ),
Variables( X( :X ), Y( :Y ), Overlay( :Overlay ) ),
Elements(
Contour( X, Y, Legend( 5 ), Number of Levels( 18 ), Smoothness( -0.8899 ) ),
Points( X, Y, Legend( 4 ) )
),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Marker Size( 1 ), Add Graphics Script(
Transparency( 0.5 );
Fill Color( "Green" );
Pen Color( "Dark Green" );
Line(
{marginXmin, marginYmin},
{marginXmin, marginYmax},
{marginXmax, marginYmax},
{marginXmax, marginYmin}
{marginXmin, marginYmin}
);
)}
)
),"imageForReport"라는 BorderBox가 있는 새 창을 열고 이 GraphBuilder를 포함하는 경우:
window = New Window( "My Report", imageForReport );
그런 다음 보고서를 이미지로 저장합니다.
imageForReport << save picture( imgPath, "png" );
모든 것이 괜찮고 모든 것이 제대로 작동하고 있습니다.
하지만 그 창은 즉흥적으로 디버깅을 하는 데만 필요하고, 최종 결과물은 PNG 이미지 파일입니다.
그래서 수천 개의 보고서를 실행하는 운영 버전에서는 리소스를 절약하고 해당 창을 열지 않습니다.
하지만 이 경우 그래픽 스크립트는 작동하지 않습니다. 첫 번째 변수(그리고 나머지 변수도)가 해결되지 않았기 때문입니다. 다음과 같은 메시지가 나타납니다.
Name Unresolved: marginXmin in access or evaluation of 'marginXmin' , marginXmin/*###*/
로그 창에서. 수천 개의 창을 불필요하게 열고 닫지 않고 어떻게 고칠 수 있을까요?
업데이트:
이 동작을 테스트하기 위한 샘플 스크립트는 다음과 같습니다.
Clear Log();
Clear Symbols();
Clear Globals();
Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/Big Class.jmp" );
cutOutX = 20;
cutOutY = 3;
marginXmin = 70;
marginXmax = 160;
marginYmin = 55;
marginYmax = 65;
imageForReport = Border Box(
VLBox = V List Box(
//Zero row
headerTB = Text Box( "Test savingimage" ),
gb = Graph Builder(
Size( 528, 456 ),
Show Control Panel( 0 ),
Variables( X( :weight ), Y( :height ) ),
Elements( Points( X, Y, Legend( 6 ) ) ),
SendToReport(
Dispatch(
{},
"Graph Builder",
FrameBox,
{Marker Size( 1 ), Add Graphics Script(
Transparency( 0.5 );
Fill Color( "Green" );
Pen Color( "Dark Green" );
Line(
{marginXmin, marginYmin},
{marginXmin, (marginYmax - cutOutY)},
{(marginXmin + cutOutX), (marginYmax - cutOutY)},
{(marginXmin + cutOutX), marginYmax},
{(marginXmax - cutOutX), marginYmax},
{(marginXmax - cutOutX), (marginYmax - cutOutY)},
{marginXmax, (marginYmax - cutOutY)},
{marginXmax, marginYmin},
{marginXmin, marginYmin}
);
)}
)
)
)
)
);
window = New Window( "My Report", imageForReport );
imageForReport << save picture( "C:\temp\testImage.png", "png" );그대로 실행하면 플롯과 모양이 있는 창이 열리고 플롯과 모양이 포함된 PNG 이미지가 저장됩니다.
새 창 줄에 주석을 달면 새 창을 열지 않고도 플롯을 PNG 이미지로 저장하지만, 모양이 누락됩니다.
누구든지 이것을 설명하고 해결할 수 있나요? 플롯으로 새 창을 열거나 닫지 않고도 저장된 이미지에서 모양을 얻는 방법은 무엇인가요?