AnsweredAssumed Answered

Modeless Command Angle, current status

Question asked by cbedard on Jan 5, 2016
Latest reply on Jan 6, 2016 by chuckt

I am interested in creating a shortcut key that will toggle the modeless command AA and AD, that is Line/Trace Angle from Any Angle to Diagonal Angle.

I've figured out how to set up a separate shortcut keys for each, but making one shortcut key that toggles between the two angle modes is different.  It requires knowing the current state of Angle Mode.

Is that information available?

 

I know there are several ways to affect the route angle:

 

Application.ExecuteCommand("Orthogonal Angle Mode")

Application.ExecuteCommand("Diagonal Angle Mode")

Application.ExecuteCommand("Any Angle Mode")

 

OR

 

Application.ExecuteCommand("Global Options")

OptionsDlg.ActiveTab = "Routing|General"

OptionsDlg.ActiveTab = "Design"

OptionsDlg.DesignDlg.LineTraceAngle = 2

OptionsDlg.DesignDlg.LineTraceAngle = 0

OptionsDlg.DesignDlg.LineTraceAngle = 1

OptionsDlg.Apply.Click()

OptionsDlg.Ok.Click()

 

OR

 

Application.ModelessCommand("a")

DlgModelessCmd.Command = "aa"

DlgModelessCmd.Command = "ad"

DlgModelessCmd.Command = "ao"

DlgModelessCmd.OnOk()

 

 

OR by typing the modeless commands

 

AA

AD

AO

 

I can also access the ROUTERFLAGS variable in the ASCII output file.

 

Accessing the ascii file is not reasonable because I'm trying to do this in real time.  Using the Options dialog box is an option but it is MUCH slower than using the modeless commands.(even in an automated way)  A macro will complete the modeless command sequence 10x faster than setting the angle mode via the Options dialog box.

 

This set of code works in a Macro to complete the Angle Diagonal Modeless command:

Application.ModelessCommand("a")

DlgModelessCmd.Command = "ad"

DlgModelessCmd.OnOk()

 

but when I try to wrap an If Then Else statement around that code it does not function.  I try to have the If statement access the information in the Options dialog box as follows:

If OptionsDlg.DesignDlg.LineTraceAngle = 2 Then

Application.ModelessCommand("a")

DlgModelessCmd.Command = "ad"

DlgModelessCmd.OnOk()

Else

Application.ModelessCommand("a")

DlgModelessCmd.Command = "aa"

DlgModelessCmd.OnOk()

End If

 

Does the Angle Mode status information exist in a place that I can access and use in the above If statement?

Or am I just not using the correct syntax to access the information in OptionsDlg.DesignDlg.LineTraceAngle?

Outcomes