Hello,
Any way to access/output current cursor location on board editor at run
time, for example with a function key press? Interested in generating
motion control commands to an external device for inspection of boards.
Thanks,
Bill
Hello,
Any way to access/output current cursor location on board editor at run
time, for example with a function key press? Interested in generating
motion control commands to an external device for inspection of boards.
Thanks,
Bill
Bill Martin wrote:
Hello,
Any way to access/output current cursor location on board editor at
run time, for example with a function key press? Interested in
generating motion control commands to an external device for
inspection of boards.
Thanks,
Bill
Not easily, but possible.
I used the following technique.
I wrote a ULP which was run using a function key that was assigned to that
ULP. The process was, position the cursor and hit the Function key and I
attained the cursor position.
The secret lies in (@) which is the current mouse position See HELP /
Editor Commands / Command Syntax
But you cannot simply read the cursor position within a ULP. You have to use
it. I drew a line from the cursor position to a far distant point on a
custom layer that had an obscure name.
The ULP exited and immediatly re-ran itself with a specific argument this
time to indicate re-entry. Satisfied it was a re-entry it looked for the
custom layer name and for a line with one end at the known location. The
other end of the line was recovered as this was the cursor co-ords. You have
to write code to clean up the line on the custom layer each time you
initially enter the ULP
I hope a future subversion of V6 has cursor position obtainable from within
the ULP.
HTH
Warren
--
Viewed / responded via the newsgroup at
news.cadsoft.de
On 04/27/2012 12:37 AM, Warren Brayshaw wrote:
Bill Martin wrote:
>> Hello,
>>
>> Any way to access/output current cursor location on board editor at
>> run time, for example with a function key press? Interested in
>> generating motion control commands to an external device for
>> inspection of boards.
>>
>> Thanks,
>> Bill
Not easily, but possible.
I used the following technique.
I wrote a ULP which was run using a function key that was assigned to that
ULP. The process was, position the cursor and hit the Function key and I
attained the cursor position.
The secret lies in (@) which is the current mouse position See HELP /
Editor Commands / Command Syntax
But you cannot simply read the cursor position within a ULP. You have to use
it. I drew a line from the cursor position to a far distant point on a
custom layer that had an obscure name.
The ULP exited and immediatly re-ran itself with a specific argument this
time to indicate re-entry. Satisfied it was a re-entry it looked for the
custom layer name and for a line with one end at the known location. The
other end of the line was recovered as this was the cursor co-ords. You have
to write code to clean up the line on the custom layer each time you
initially enter the ULP
I hope a future subversion of V6 has cursor position obtainable from within
the ULP.
HTH
Warren
>
Thanks for that pointer. I tried what seemed the obvious way to
circumvent the "not available in ULP" issue, with the following:
ASSIGN F12 'RUN chk_args.ulp (@)'
however, the (@) is not expanded and passed as an argv[] parameter as
would be desired. So it looks like your method may be the only way to do
this. Actually, until/if Eagle can pass coordinates to a ulp, I might do
better to look at using gerbv to emit coordinates, there I can alter the
source code if needed...
Regards,
Bill
Thanks for that pointer. I tried what seemed the obvious way to
circumvent the "not available in ULP" issue, with the following:
ASSIGN F12 'RUN chk_args.ulp (@)'
however, the (@) is not expanded and passed as an argv[] parameter as
would be desired. So it looks like your method may be the only way to do
this. Actually, until/if Eagle can pass coordinates to a ulp, I might do
better to look at using gerbv to emit coordinates, there I can alter the
source code if needed...
Regards,
Bill
Hi Bill
you don't get away to re-write gerbv that easily.
Have a play with the attached ULP. It may have value for you.
Place it on your ULP paths and read the description/guidance from Eagle
Control Panel
Regards
Warren
--
Web access to CadSoft support forums at www.eaglecentral.ca. Where the CadSoft EAGLE community meets.
On 04/28/2012 05:03 PM, Warren Brayshaw wrote:
Thanks for that pointer. I tried what seemed the obvious way to
circumvent the "not available in ULP" issue, with the following:
ASSIGN F12 'RUN chk_args.ulp (@)'
however, the (@) is not expanded and passed as an argv[] parameter as
would be desired. So it looks like your method may be the only way to do
this. Actually, until/if Eagle can pass coordinates to a ulp, I might do
better to look at using gerbv to emit coordinates, there I can alter the
source code if needed...
Regards,
Bill
Hi Bill
you don't get away to re-write gerbv that easily.
Have a play with the attached ULP. It may have value for you.
Place it on your ULP paths and read the description/guidance from Eagle
Control Panel
Regards
Warren
Hi Warren,
Thank you for this, I will try it out. Had a cursory (no pun intended!)
look at your code...my gut tells me that this is the hard way, but has
the advantage that it is contained in the "Eagle universe", which is not
a bad thing. Having done embedded code for a LOT longer than I have been
attempting simple board designs, I may not be convinced that changing
Gerbv is so difficult...but there is another possibility: Eagle uses
dynamically linked libraries, so it may be possible to insert an access
hook that can be called from a .ulp program to get the current cursor
position from the X library code that actually moves the cursor upon
command from the Eagle program. That sounds like fun to look into...
Best Regards,
Bill
The ULP I attached a couple of days ago was a little hurried and had a bug.
It could not resolve a cursor point of (0 0).
The attached ULP has fixed that problem.
Bill, when you get a moment would you please describe the inspection device
you will be driving.
Regards
Warren
--
Web access to CadSoft support forums at www.eaglecentral.ca. Where the CadSoft EAGLE community meets.
On 04/30/2012 11:40 PM, Warren Brayshaw wrote:
The ULP I attached a couple of days ago was a little hurried and had a bug.
It could not resolve a cursor point of (0 0).
The attached ULP has fixed that problem.
Bill, when you get a moment would you please describe the inspection device
you will be driving.
Regards
Warren
Thank you for the update...I had not stepped on the bug yet!
My idea is basically to construct an X-Y gantry with a USB microscope
mounted on the moving stage, coordinates obtained from the Eagle cursor
location would be sent to a controller, such that the microscope goes to
that location above the physical pcb. It's all in "thinking about it"
stage at the moment, I'm toying with the idea of also mounting an IR
laser on the gantry stage to see if I can do some no-touch soldering of
smt parts. I'm finding that my biggest problem with hand assembly of
prototypes is stopping the flea-like behavior of the tiny parts. touch
them & they jump somewhere else! Of course, it all could be moved
manually, no doubt for less money spent. Feedback on practicality of
this is welcome, I'm not hung up thinking it's the best idea ever.
Regards,
Bill
On 04/30/2012 11:40 PM, Warren Brayshaw wrote:
The ULP I attached a couple of days ago was a little hurried and had a bug.
It could not resolve a cursor point of (0 0).
The attached ULP has fixed that problem.
Bill, when you get a moment would you please describe the inspection device
you will be driving.
Regards
Warren
Thank you for the update...I had not stepped on the bug yet!
My idea is basically to construct an X-Y gantry with a USB microscope
mounted on the moving stage, coordinates obtained from the Eagle cursor
location would be sent to a controller, such that the microscope goes to
that location above the physical pcb. It's all in "thinking about it"
stage at the moment, I'm toying with the idea of also mounting an IR
laser on the gantry stage to see if I can do some no-touch soldering of
smt parts. I'm finding that my biggest problem with hand assembly of
prototypes is stopping the flea-like behavior of the tiny parts. touch
them & they jump somewhere else! Of course, it all could be moved
manually, no doubt for less money spent. Feedback on practicality of
this is welcome, I'm not hung up thinking it's the best idea ever.
Regards,
Bill
On 05/01/2012 06:43 PM, Bill Martin wrote:
My idea is basically to construct an X-Y gantry with a USB microscope
mounted on the moving stage,
...
I'm toying with the idea of also mounting an IR
laser on the gantry stage to see if I can do some no-touch soldering of
smt parts.
This is interesting... You'd have ramp the current up such that you
don't induce a thermal shock on the part. Do you have an IR laser in
mind powerful enough to reach the melting point of solder?
- Chuck
On 05/02/2012 04:59 AM, Chuck Huber wrote:
On 05/01/2012 06:43 PM, Bill Martin wrote:
>> My idea is basically to construct an X-Y gantry with a USB microscope
>> mounted on the moving stage,
...
>> I'm toying with the idea of also mounting an IR
>> laser on the gantry stage to see if I can do some no-touch soldering of
>> smt parts.
This is interesting... You'd have ramp the current up such that you
don't induce a thermal shock on the part. Do you have an IR laser in
mind powerful enough to reach the melting point of solder?
- Chuck
Not sure how much power is needed for such a small area. The IR rework
stations I have seen use hundreds of watts over a large area. I have
seen a 1W blue laser burn holes in plastic panels, but that is likely
different from a shiny metal surface. Reflection of energy could make
the whole idea go "flop". It's really not something I know anything much
about, perhaps that's why it is interesting. There are other obvious
limitations as well, for example it is not going to solder down too many
BGA parts...and inner layers of multi-layer pcbs can't really be seen
with the scope either. So, it only fits the case of assembling the kind
of pcbs that one might try in a non-commercial setting.
-bill