Continue to Site

Eng-Tips is the largest engineering community on the Internet

Intelligent Work Forums for Engineering Professionals

  • Congratulations KootK on being selected by the Eng-Tips community for having the most helpful posts in the forums last week. Way to Go!

trouble with checking status of events or commands...

Status
Not open for further replies.

Thunderbird336

Mechanical
May 16, 2013
30
I was following along with John Joyce's PLM World 05 PowerPoint for the probing example... this is what my current procedure looks like:

Code:
proc PB_CMD_probeXpos {} {

global mom_probex_status
global mom_probex_pos

#if { $mom_probex_status != "ACTIVE" } { return}

set probex_pos [ format %3.4f $mom_probex_pos(0) ]
set probey_pos [ format %3.4f $mom_probex_pos(1) ]
set probez_pos [ format %3.4f $mom_probex_pos(2) ]

MOM_output_literal "G65 P9811 X$probex_pos Y$probey_pos Z$probez_pos"
}


... without the additional proc command as in the example, which I list next...


Code:
proc PB_CMD_probeXpos {} {

proc MOM_probex {} {

global mom_probex_status
global mom_probex_pos

#if { $mom_probex_status != "ACTIVE" } { return}

set probex_pos [ format %3.4f $mom_probex_pos(0) ]
set probey_pos [ format %3.4f $mom_probex_pos(1) ]
set probez_pos [ format %3.4f $mom_probex_pos(2) ]

MOM_output_literal "G65 P9811 X$probex_pos Y$probey_pos Z$probez_pos"

}

}

I tried the above code (with the additional procedure) but it does not run it that way, it appears that the nested proc is never called; it doesn't bomb out, it just doesn't seem to do anything.

So that is one question: is that second "proc" necessary? If so, why and what am I doing wrong that it never runs...

The next question is about checking status: if I un-comment the "if" statement that is checking the status of mom_probex_status the procedure will fail with an error saying that there is no such variable as $mom_probex_status

Where would that variable come from? I assumed that it was created from the UDE since we gave it a "POST_EVENT" name of probex

I do see this in the post's tcl file:

Code:
#=============================================================
proc MOM_probex { } {
#=============================================================
   global mom_probex_pos
}

So it would seem since MOM is in caps that a command is created called MOM_probex from the UDE.

I've been reading everything that I can find on Tcl but not all of it applies since there is no MOM_ anything in Tcl it simply uses puts, etc. instead of MOM_output_literal for example. When I click on any of the Help menus I get an error that the postbuilder.chm has not been installed properly... I was getting that in NX8 and just installed NX8.5 on Friday and still get the same error message.

Thanks in advance,
Gary
 
Replies continue below

Recommended for you

Are you using the review tool?
When you do does the event from the UDE match the name of the proc with MOM_

The UDE triggers the proc if they do not match exactly the proc will not run.



John Joyce
N.C. Programming Supervisor
Barnes Aerospace, Windsor CT
NX6 & NX7.5
 
John,

I attached a link to a shared jpg that shows the debug output. I can see in the debug output that MOM_probex is being called but what puzzles me is the status (Active, Inactive, User Defined) is being reported by mom_command_status despite my creating a variable for it called mom_probex_status

Here is an excerpt from the cdl file that shows it:

Code:
#-----------------------------------------------------------------


EVENT ProbeXpos
{
   POST_EVENT "probex"
   UI_LABEL "Probe X Event"
   CATEGORY MILL
   PARAM probex_status
   {
      TYPE o
      DEFVAL "Active"
      OPTIONS "Active","Inactive","User Defined"
      UI_LABEL "Probing Status"
   }
   PARAM probex_pos
   {
      TYPE p
      TOGGLE On
      UI_LABEL "Probe X Position"
   }
}

and this is from the post's tcl file

Code:
#=============================================================
proc MOM_probex { } {
#=============================================================
   global mom_probex_status
   global mom_probex_pos
}


I have learned that unless I explicitly call the MOM_probex proc I will get that 'Error: can't read "mom_probex_status": no such variable'


Code:
proc PB_CMD_probeXpos {} {


proc MOM_probex {} {

global mom_probex_pos
global mom_probex_status


if { $mom_probex_status != "ACTIVE" } {return}

set probex_pos [ format %3.4f $mom_probex_pos(0) ]
set probey_pos [ format %3.4f $mom_probex_pos(1) ]
set probez_pos [ format %3.4f $mom_probex_pos(2) ]


MOM_output_literal "G65 P9811 X$probex_pos Y$probey_pos Z$probez_pos"

}

}

I'm not getting any output from the proc for the probe because it can't check the status... but at least it's no longer blowing up. I just can't figure out why it's not using the variable that I defined for the status of the command.

-Gary
 
 https://docs.google.com/file/d/0B56mpM16sEmoR0lPUXdxdE5OZDg/edit?usp=sharing
You may need to have the custom command attached to an event like start of path for example



John Joyce
N.C. Programming Supervisor
Barnes Aerospace, Windsor CT
NX6 & NX7.5
 
Status
Not open for further replies.

Part and Inventory Search

Sponsor