rem P_Ln.cdl rem Copy Right by International Technology Transfer Corp. rem revision 1.0-7/30/99 rem Point on Line clear :start getcur "Select Line", 1, 0 on (@key + 3) goto exit, start, start, vx = @xview vy = @yview getentxy vx, vy, etype if (etype!=2) goto start x1 = @fltdat[0] y1 = @fltdat[1] z1 = @fltdat[2] x2 = @fltdat[3] y2 = @fltdat[4] z2 = @fltdat[5] dist = sqrt((x1-x2) * (x1-x2) + (y1-y2) * (y1-y2) + (z1-z2) * (z1-z2)) call xfwv, x1, y1, z1, vx1, vy1, vz1 call xfwv, x2, y2, z2, vx2, vy2, vz2 len1 = sqrt((vx - vx1) * (vx - vx1) + (vy - vy1) * (vy - vy1)) len2 = sqrt((vx - vx2) * (vx - vx2) + (vy - vy2) * (vy - vy2)) if (len1>len2) goto reverse rem If end point is (x1, y1, z1), x=x1 y=y1 z=z1 dx= x2 - x1 dy= y2 - y1 dz= z2 - z1 goto next :reverse rem if (x2, y2, z2), x=x2 y=y2 z=z2 dx= x1 - x2 dy= y1 - y2 dz= z1 - z2 :next getflt "Input Distance => " ,dist, dist on (@key + 3) goto exit,start, len = sqrt(dx * dx + dy * dy + dz * dz) f = dx / len g = dy / len h = dz / len x = x + f * dist y = y + g * dist z = z + h * dist point x, y, z, redraw goto start :exit