macro "Line to Zoombox" { SLICE_THICK = 800; RECON_PX = 20; XY_VIEW = 2500; getLine(lineX1, lineY1, lineX2, lineY2, lineWidth); midX = ((lineX2 - lineX1) / 2 + lineX1); midY = ((lineY2 - lineY1) / 2 + lineY1); SMALL_LINEIN = newArray(lineX1, lineY1, lineX2, lineY2); SMALL_LINEOUT = generateBox(SLICE_THICK/RECON_PX, 0); getSelectionBounds(boxX, boxY, boxW, boxH); cenX = boxX - midX; cenY = boxY - midY; CENTER_BOX = newArray(cenX, cenY, boxW, boxH); WIDTH_RECON = XY_VIEW / RECON_PX; if (boxW < WIDTH_RECON && boxH < WIDTH_RECON) { roiX = (midX - WIDTH_RECON/2); roiY = (midY - WIDTH_RECON/2); roiW = WIDTH_RECON; roiH = WIDTH_RECON; } else { roiX = boxX; roiY = boxY; roiW = boxW; roiH = boxH; } makeRectangle(roiX, roiY, roiW, roiH); } function generateBox(width, param) { getLine(ax1, ay1, ax2, ay2, lineWidth); /* bl = width; al = sqrt(((ax2 - ax1) * (ax2 - ax1)) + ((ay2 - ay1) * (ay2 - ay1))); bx1 = ax1 - (bl * (ay2 - ay1) / al); by1 = ay1 + (bl * (ax2 - ax1) / al); bx2 = bx1 + (ax2 - ax1); by2 = by1 + (ay2 - ay1); */ gb = width/2; ga = sqrt(((ax2 - ax1) * (ax2 - ax1)) + ((ay2 - ay1) * (ay2 - ay1))); sx = gb * (ay2 - ay1) / ga; sy = gb * (ax2 - ax1) / ga; bx1 = ax1 - sx; by1 = ay1 + sy; bx2 = bx1 + (ax2 - ax1); by2 = by1 + (ay2 - ay1); cx1 = ax1 + sx; cy1 = ay1 - sy; cx2 = cx1 + (ax2 - ax1); cy2 = cy1 + (ay2 - ay1); arrayX = newArray(bx1, cx1, cx2, bx2); arrayY = newArray(by1, cy1, cy2, by2); makeSelection("polygon", arrayX, arrayY); if (param == 1 || param == 2) run("Add Selection..."); run("To Bounding Box"); if (param == 2) run("Add Selection..."); LINE_COOR = newArray(bx2, by2, bx1, by1); return LINE_COOR; }