use win+p or another method to toggle to single monitor mode and then launch it, that should tell you if its a multi monitor issue or something else pretty quickly
also set your dpi scaling to 100%, another possible culprit
Compass - Measure angles and scale distances with your mouse
Re: Compass - Measure angles and scale distances with your mouse
EitherMouse - Multiple mice, individual settings . . . . www.EitherMouse.com . . . . forum . . . .
Re: Compass - Measure angles and scale distances with your mouse
Thank you. Went through all those steps and it started to work until I loaded the program meant for. So it seems to work fine on some applications. Maybe some form of block if a program uses graphics Dll as this script ? At least the data is available for me to work around the cosmetics. The lines do help with accuracy and for making clip images. Maybe it has to do with the dll being used? I’ve used other scripts with line or circles that’s used gdip?
Re: Compass - Measure angles and scale distances with your mouse
try running the script as administrator
EitherMouse - Multiple mice, individual settings . . . . www.EitherMouse.com . . . . forum . . . .
Re: Compass - Measure angles and scale distances with your mouse
Thanks for that idea. I gave it a try. Although it didn’t work, I did discover something. It seems like the lines show up after making the monitor your main monitor in windows setting. When you switch another monitor to be main it then works. Also keeps the previous monitor made previously into main. After going through 4 monitors they all work! Wonder if this means the script can be adjusted since likely not the native application?
Re: Compass - Measure angles and scale distances with your mouse
Thanks for pointing that out. Actually, I saw that behavior once during my brief testing but I didn't see it again so I forgot about it.
It should be fixed now (I edited my previous post). I added a check for snap before the lines are stored.
I also made some other small tweaks and fixes.
I think the limit will be 20 because that's the max number of tooltips allowed.for me some trivial changes, i removed the msgbox and let it add up to 10 lines to the screen before deleting, or deleting on Esc::,
I'm not sure what would be causing that. Maybe the program in question is causing it through some sort or unique behavior? If there are no other programs with this problem then we could guess that the program is doing something to cause it. For example, forcing its window to be always on top.iilabs wrote: ↑05 Aug 2020, 21:31It seems like the lines show up after making the monitor your main monitor in windows setting. When you switch another monitor to be main it then works. Also keeps the previous monitor made previously into main. After going through 4 monitors they all work! Wonder if this means the script can be adjusted since likely not the native application?
Re: Compass - Measure angles and scale distances with your mouse
Bizzare. At least I’m getting the data which is key. Thank you all for you input and contributions!
Re: Compass - Measure angles and scale distances with your mouse
Thanks.
Oh yeah true, well the screen seemed too cluttered after 10 anyway... I might mess around with drawing the dimension inline with the actual line via gdip and ditch the tooltip altogether. Also I added crosshairs and separate X and Y dimensions, just because its useful for machined part drawings.
There might be a memory or GDI object leak, it crashes for me after running for a little while.
Overall very cool and I'm looking forward to finding ways to use it.
iilabs: Does it work perfectly in that program when the computer is set to single monitor mode? If not and its not running as admin, it could be the AlwaysOnTop conflict awel mentioned, try adding F1::Gui, Compass: +AlwaysOnTop to the end of the script and see if pressing F1 makes the lines appear or flash.
Oh yeah true, well the screen seemed too cluttered after 10 anyway... I might mess around with drawing the dimension inline with the actual line via gdip and ditch the tooltip altogether. Also I added crosshairs and separate X and Y dimensions, just because its useful for machined part drawings.
There might be a memory or GDI object leak, it crashes for me after running for a little while.
Overall very cool and I'm looking forward to finding ways to use it.
iilabs: Does it work perfectly in that program when the computer is set to single monitor mode? If not and its not running as admin, it could be the AlwaysOnTop conflict awel mentioned, try adding F1::Gui, Compass: +AlwaysOnTop to the end of the script and see if pressing F1 makes the lines appear or flash.
EitherMouse - Multiple mice, individual settings . . . . www.EitherMouse.com . . . . forum . . . .
Re: Compass - Measure angles and scale distances with your mouse
Yes works no problem with single monitor. Will try your suggestions. Do you have the updated code with cross hairs? That would be a nice addition.
Re: Compass - Measure angles and scale distances with your mouse
Replace the static variables with this (mainly add a Cross variable, I set some defaults how I'd want):
and replace this function:
Code: Select all
static Color1 := 0x55000000, Color2 := 0x990066ff, Lineweight1 := 1
, ScaleFactor := 1., Units := "pixels", Snap := true, Cross := 20
Code: Select all
GDIP_DrawLine(StartX, CurrentX, StartY, CurrentY) {
DllCall("gdiplus.dll\GdipDrawLine", "Ptr", this.Graphics, "Ptr", this.pPen, "Float", StartX, "Float", StartY, "Float", CurrentX, "Float", CurrentY)
, DllCall("gdiplus.dll\GdipDrawLine", "Ptr", this.Graphics, "Ptr", this.pPen, "Float", StartX+this.Cross, "Float", StartY, "Float", StartX-this.Cross, "Float", StartY)
, DllCall("gdiplus.dll\GdipDrawLine", "Ptr", this.Graphics, "Ptr", this.pPen, "Float", CurrentX, "Float", CurrentY+this.Cross, "Float", CurrentX, "Float", CurrentY-this.Cross)
, DllCall("gdiplus.dll\GdipDrawLine", "Ptr", this.Graphics, "Ptr", this.pPen, "Float", StartX, "Float", StartY+this.Cross, "Float", StartX, "Float", StartY-this.Cross)
, DllCall("gdiplus.dll\GdipDrawLine", "Ptr", this.Graphics, "Ptr", this.pPen, "Float", CurrentX+this.Cross, "Float", CurrentY, "Float", CurrentX-this.Cross, "Float", CurrentY)
, DllCall("gdiplus.dll\GdipFillEllipse", "Ptr", this.Graphics, "Ptr", this.pBrush, "Float", StartX - 4, "Float", StartY - 4, "Float", 8, "Float", 8) ;fixed uncentered circles...
, DllCall("gdiplus.dll\GdipFillEllipse", "Ptr", this.Graphics, "Ptr", this.pBrush, "Float", CurrentX - 4, "Float", CurrentY - 4, "Float", 8, "Float", 8)
}
Last edited by gwarble on 06 Aug 2020, 18:32, edited 1 time in total.
EitherMouse - Multiple mice, individual settings . . . . www.EitherMouse.com . . . . forum . . . .
Re: Compass - Measure angles and scale distances with your mouse
I was also playing around with the crosshair before you click once ctrl+alt is held:
add to script:
add to class:
add to script:
Code: Select all
^Alt::
Compass.Crosshair()
Return
Code: Select all
Crosshair() {
if (this.Lines.MaxIndex() < 1) { ; If there are no existing lines, start GDIP
this.GetWinArea()
this.GDIP_Start()
this.GDIP_Setup()
}
CoordMode, Mouse, Screen
MouseGetPos, StartX, StartY
while (GetKeyState("Ctrl", "P")) { ; *Loop until Ctrl or L/RButton is released.
MouseGetPos, CurrentX, CurrentY
this.GDIP_DrawCrosshair(CurrentX, CurrentY)
this.UpdateLines()
}
this.UpdateLines()
return ;this.pxDist(CurrentX, StartX, CurrentY, StartY)
}
Code: Select all
GDIP_DrawCrosshair(X, Y) {
DllCall("gdiplus.dll\GdipDrawLine", "Ptr", this.Graphics, "Ptr", this.pPen, "Float", X+this.Cross, "Float", Y, "Float", X-this.Cross, "Float", Y)
, DllCall("gdiplus.dll\GdipDrawLine", "Ptr", this.Graphics, "Ptr", this.pPen, "Float", X, "Float", Y+this.Cross, "Float", X, "Float", Y-this.Cross)
, DllCall("gdiplus.dll\GdipFillEllipse", "Ptr", this.Graphics, "Ptr", this.pBrush, "Float", X - 4, "Float", Y - 4, "Float", 8, "Float", 8)
}
EitherMouse - Multiple mice, individual settings . . . . www.EitherMouse.com . . . . forum . . . .
Re: Compass - Measure angles and scale distances with your mouse
I think you are right but I don't see the cause.
That sounds cool. Definitely keep posting the tweaks you do, or even a full version; I'd be interested to see more.
The crosshairs are great; a massive improvement IMO.
I'm not sure, but I think the following code might cause problems. If this.Lines.MaxIndex() is 0, then the script will start GDIP. But, if you then don't add any lines to this.lines then the next time you press the hotkey GDIP will be started again. (Now that I think about it, a similar problem may be the cause of the memory leak you mentioned.)
Maybe, instead of checking this.Lines.MaxIndex(), the script could set a flag when GDIP is started. That way it would be easier to check if it's running already.Code: Select all
Crosshair() { if (this.Lines.MaxIndex() < 1) { ; If there are no existing lines, start GDIP this.GetWinArea() this.GDIP_Start() this.GDIP_Setup() } ;...
Something like this could work:
Code: Select all
GDIP_Close() {
DllCall("gdiplus.dll\GdiplusShutdown", "UPtr", this.pToken)
, DllCall("kernel32.dll\FreeLibrary", "Ptr", this.hGDIPLUS)
this.pToken := "", this.hGDIPLUS := "" ; Clear these values to indicate that GDIP is not started
}
... and then:
Code: Select all
if (this.pToken = "") {
this.GetWinArea()
this.GDIP_Start()
this.GDIP_Setup()
}
Regarding @iilabs problem, it seems like it could be related to the multi-monitor setup.
I wonder what the bounding coordinates of @iilabs' monitors are. Maybe the script is not getting them somehow. Could try hard coding them.
Re: Compass - Measure angles and scale distances with your mouse
yeah I agree its probably managing startup and shutdown of GDI+ a little more carefully, I havent had a chance to dig into it yet.
I will keep adding to this functionality and share what I like, its already proved useful on two machined parts today!
I will keep adding to this functionality and share what I like, its already proved useful on two machined parts today!
EitherMouse - Multiple mice, individual settings . . . . www.EitherMouse.com . . . . forum . . . .
Re: Compass - Measure angles and scale distances with your mouse
This is awesome! Thank you!
-
- Posts: 112
- Joined: 06 Jun 2016, 21:32
Re: Compass - Measure angles and scale distances with your mouse
Superb concept!!, its intresting..!!
Re: Compass - Measure angles and scale distances with your mouse
Yes!! Double high fives to all the contributors!
Thank you all for the updates as well. Please keep this going. An interesting ruler indeed. You all are saving me years of life.
Where would one go if we want to make this a more a more customizable ruler with a hotkey triggered GUI interface? GUI Creator come to mind?
For example, take this ruler to another level by allowing a menu GUI to:
toggle on/off cross hairs change to circle ends, triangles, etc
A 3,4,5 triangle pointer based on the scale taken for quick eyeball size measurements*
A 2mm, 3mm, etcs for snapping,
change the line color (invert to whats on background?) this would help with contrast
A number of measurements to sustain or send a sentence to the clipboard like "This measures 3mm" versus "This measures 2 x 3 mm, etc"*.
* will give me a multitasking headache pain relief as well. Happy to donate to any cause!
Thank you all for the updates as well. Please keep this going. An interesting ruler indeed. You all are saving me years of life.
Where would one go if we want to make this a more a more customizable ruler with a hotkey triggered GUI interface? GUI Creator come to mind?
For example, take this ruler to another level by allowing a menu GUI to:
toggle on/off cross hairs change to circle ends, triangles, etc
A 3,4,5 triangle pointer based on the scale taken for quick eyeball size measurements*
A 2mm, 3mm, etcs for snapping,
change the line color (invert to whats on background?) this would help with contrast
A number of measurements to sustain or send a sentence to the clipboard like "This measures 3mm" versus "This measures 2 x 3 mm, etc"*.
* will give me a multitasking headache pain relief as well. Happy to donate to any cause!
Re: Compass - Measure angles and scale distances with your mouse
my advice would be to learn to use AutoHotkey, all of that should be possible but its very niche/unique end user base so you’re never going to get the customizability you would if you understand a few basic things the code is doing it and tweak away from there
as for your ideas, all seem useful for measuring off a visual medical picture (i’m envisioning the ultrasound software where they snap a freeze frame and take some rough measurements by clicking points)
for reading pdfs of mechanical drawings, drawn to scale but missing important dimensions, is my end use case, so a fine line, crosshairs for pixel precision, and drawing bounding shapes (like what size round bar can i make this part out of) are useful
specifically, i was also thinking an inverted color would be nice but don’t know how to do that with gdi+ yet
as for your ideas, all seem useful for measuring off a visual medical picture (i’m envisioning the ultrasound software where they snap a freeze frame and take some rough measurements by clicking points)
for reading pdfs of mechanical drawings, drawn to scale but missing important dimensions, is my end use case, so a fine line, crosshairs for pixel precision, and drawing bounding shapes (like what size round bar can i make this part out of) are useful
specifically, i was also thinking an inverted color would be nice but don’t know how to do that with gdi+ yet
EitherMouse - Multiple mice, individual settings . . . . www.EitherMouse.com . . . . forum . . . .
Re: Compass - Measure angles and scale distances with your mouse
Yes very good points. I've bought some udemy lectures and Jack Dunning's books. So the gradual and steep learning process for me. However, this forum, your contributions and others, and the challenges as well as time saving rewards that lay ahead will get me there! By any chance are you or anyone that you know for hire for tutoring or programming?
Re: Compass - Measure angles and scale distances with your mouse
Everyone is different, but I learn by trying to accomplish tasks and then improving piece by piece. This isn't a very basic task, so start with something basic that you waste time doing (like maybe writing the same email every week or filling out a form every visit). The Ask for Help forum will be useful for specifics, but the general usage, flow, and overall capabilities will come with use.
Its hard to make the time to be able to sign up for that kind of assistance, but I can answer questions as they come up. You might want to start a thread in the Ask for Help section to divert discussion away from kon's thread and draw in more helpers (and better ones)
Its hard to make the time to be able to sign up for that kind of assistance, but I can answer questions as they come up. You might want to start a thread in the Ask for Help section to divert discussion away from kon's thread and draw in more helpers (and better ones)
EitherMouse - Multiple mice, individual settings . . . . www.EitherMouse.com . . . . forum . . . .
Re: Compass - Measure angles and scale distances with your mouse
I tried to hide the cursor during Crosshair mode.
It works, but only when the mouse is still, as soon as it moves it becomes visible again, is there a way to completely hide it when pressed ^! ?
Code: Select all
^Alt::
!Ctrl::
DllCall("ShowCursor", "int", false)
Compass.Crosshair()
return
Return to “Scripts and Functions (v1)”
Who is online
Users browsing this forum: No registered users and 136 guests