Login  Register

Re: how to stop the freehand lines tool at a set distance (20 um)

Posted by Wayne Rasband on Dec 07, 2009; 1:38am
URL: http://imagej.273.s1.nabble.com/how-to-stop-the-freehand-lines-tool-at-a-set-distance-20-um-tp3690197p3690198.html

On Dec 6, 2009, at 7:02 AM, Matiar Jafari wrote:

 > Dear ImageJ Listserv,
 >
 > I'm looking for a way to draw lines of a set length on
 > ImageJ.  I need to measure spines on dendrites every 20 um
 > from the soma on dissociated neurons grown in tissue
 > culture.  I've tried using a modified Sholl analysis, but
 > without the laminar constraints the dendrites grow with
 > various curves.  I would like to use the freehand lines tool
 > to stop at 20 um as I trace along the dendrite.

Here is a tool that you can use to draw freehand lines of a specified  
length. The default length of 20 can be changed by assigning a another  
value to the 'maxLength' variable. The default length is 20um if the  
image is scaled to micrometers. The online manual explains how to  
install macro tools:

     http://rsb.info.nih.gov/ij/developer/macro/macros.html#tools

-wayne

   macro "Set Length Line Tool - C00bL1de0L1ee1" {
         maxLength = 20;
         leftClick=16
         i = 0;
         xpoints = newArray(2000);
         ypoints = newArray(2000);
         getCursorLoc(x2, y2, z, flags);
         xpoints[i]=x2; ypoints[i++]=y2;
         while (true) {
             getCursorLoc(x, y, z, flags);
             if (flags&leftClick==0) exit();
             if (x!=x2 || y!=y2) {
                xpoints[i] = x;
                ypoints[i] = y;
                i++;
                x2=x; y2=y;
                xpoints2 = Array.trim(xpoints, i);
                ypoints2 = Array.trim(ypoints, i);
                makeSelection("freeline", xpoints2, ypoints2);
                List.setMeasurements;
                length = List.getValue("Length");
                showStatus("length="+d2s(length,2));
                if (length>=maxLength) exit;
             }
          }
    }