그림으로 저장하려는 Graph Builder로 채워진 BorderBox가 있습니다.
FrameBox에 "Add Graphics Script"가 있습니다. 이 스크립트는 변수를 사용합니다.
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}
);
)}
)
),이 GraphBuilder가있는 "imageForReport"라는 BorderBox가있는 새 창을 열면
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 이미지로 저장하지만 모양이 누락됩니다.
아무도 그것을 설명하고 어떻게 해결할 수 있습니까? 플롯으로 새 창을 열거 나 닫을 필요없이 저장된 이미지에서 모양을 얻는 방법은 무엇입니까?