几何尺寸与公差论坛

 找回密码
 注册
查看: 101|回复: 6

PR 261263 261263 - WEBASTO - T-Value is calculated wrong, if dimension is ins

[复制链接]
发表于 2009-4-22 20:42:17 | 显示全部楼层 |阅读模式
261263 - WEBASTO - T-Value is calculated wrong, if dimension is insert under another alignment like point was measured
<< Daniel Schroepfer  --  04/21/09  13:14:10>>
Hi Tim,
Please put this on Stop Release for V44 and V432. The T Value is calculated wrong in 4.3 MR2 RC from 14.04.2009 and PCDMIS 2009 RC from 17.04.2009, if the dimension of the point is insert in another alignment else the point was measured. Customer send me a dual arm pp, where you can see the error. This PP comes original from 3.7 MR3 and was running well.
In Line 2466 you can find the element K1_01 and Loc1 with a T - Value 0.60mm. The point was measured under the alignment CNC, which presents the RPS Alignment.
The dimension under alignment CNC looks like this:
DIM LOC_1= LOCATION OF POINT K1_01  SD=0.00  UNITS=MM ,$
GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
X      1394.88       0.05      -0.05    1394.89       0.01       0.00 ----------#-------
Y       572.54       0.05      -0.05     573.22       0.68       0.63 ----------------->
Z      1056.99       0.05      -0.05    1057.51       0.52       0.47 ----------------->
T         0.00       0.05      -0.05       0.60       0.60       0.55 ----------------->
END OF DIMENSION LOC_1
This point is again reported in dimension K3/01_ under alignment K1/01. In this alignment the point K1_01 is set to 0 in Y Axis. Now the dimension has again a T-Value of:
DIM K3/01_= LOCATION OF POINT K1_01  SD=0.00  UNITS=MM ,$
GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
X      1394.88       0.05      -0.05    1394.89       0.01       0.00 ----------#-------
Y         0.00       0.25      -0.25       0.00       0.00       0.00 --------#---------
Z      1056.99       0.05      -0.05    1057.51       0.52       0.47 ----------------->
T         0.00       0.25      -0.25       0.60       0.60       0.35 ----------------->
            END OF DIMENSION K3/01_
This is incorret, because the dimension shows the T - VALUE which is calculated by the deviations of the pint under alignment CNC.
If  I generate a castpoint from K1_01 under alignment K1/01, I get the correct value for T:
DIM LOC_2= LOCATION OF POINT F2/07  SD=0.00  UNITS=MM ,$
GRAPH=OFF  TEXT=OFF  MULT=10.00  OUTPUT=BOTH  HALF ANGLE=NO
AX    NOMINAL       +TOL       -TOL       MEAS        DEV     OUTTOL
X      1394.88       0.05      -0.05    1394.89       0.01       0.00 ----------#-------
Y         0.00       0.05      -0.05       0.00       0.00       0.00 --------#---------
Z      1056.99       0.05      -0.05    1057.51       0.52       0.47 ----------------->
T         0.00       0.05      -0.05      -0.07      -0.07       0.02 <-----------------
END OF DIMENSION LOC_2.
For more investigation, I have saved the pp to a 4.2 pp. When I open the pp in 4.2 MR3 and refresh the dimension K3/01_ the value for T is calculated correctly.
The problem exists for all dimensions, which reports a point, who was measured under alignment CNC.
I have attached the pp from 44 "wrong_t_value_44" and the same pp saved under V42 "wrong_t_value_42" also the probe files.
Expected results:
The value for T must calculate correctly under the alignment, where the dimension is inserting. The pp must have the same results in 4.3 MR2 RC and PCDMIS 2009 RC like in 4.2 MR3 and 3.7 MR3.
Please fix this for the actual 4.3MR2 RC and PCDMIS 2009.
Thanks and Regards
Daniel
<<END>>
 楼主| 发表于 2009-4-28 15:57:40 | 显示全部楼层

回复: PR 261263 261263 - WEBASTO - T-Value is calculated wrong, if dimension

<< Changes made by Yanhua Huang (Field Changes) -- 04/28/09  11:34:59>>
Action:  Yanhua Huang to Don Turcotte, Status:  OPEN to REVIEW
<<END>>

<< Changes made by Yanhua Huang (Resolution Data) -- 04/28/09  11:34:06>>
** Bug Fix - Likely Exists in Previous Versions -  -  -  **
<<END>>

<< Yanhua Huang (Development Notes)  --  04/28/09  11:33:11>>
2. Fixed into V44B, SetupGlobalAlignment and RestoreGlobalAlignment were abandoned on 4-28-2009
// ********************************************************************************
//   SetupGlobalAlignment
//   SetupGlobalAlignment is abandoned on 4-28-2009
//  Modifications:
//  04-28-2009  yanhua   use the alignment preceding this dimension to calculate T-Value.
//                  PR#261263(V44B) - disable fix for PR239137               
// PR#260786 - If this feature was measured manually and is used in an alignment preceding this dimension,
//            then use that alignment - abandoned the rule.
// PR#239137 - Get alignment in effect when feature was measured - abandoned the rule.
// ********************************************************************************
******************************
Tue Apr 28 11:32:07 2009
******************************

Files inserted to server
------------------------
V44B\DIMENS\LOCATION.CPP
V44B\DIMENS\RS_LOCAT.CPP
V44B\DIMENS\RT_LOCAT.CPP
V44B\DIMENS\S_LOCAT.CPP
V44B\DIMENS\T_LOCATI.CPP

<<END>>

<< Changes made by Don Turcotte (Field Changes) -- 04/27/09  11:37:16>>
Action:  David Petrizze to Yanhua Huang, Status:  REVIEW to OPEN
<<END>>

<< Changes made by Don Turcotte (Field Changes) -- 04/27/09  11:36:44>>
Action:  Don Turcotte to David Petrizze
<<END>>

<< Don Turcotte (Review Notes)  --  04/27/09  11:36:44>>
Reviewed.
Yanhua, your change is correct but I think it would be simpler to completely remove both SetupGlobalAlignment(...) and RestoreGlobalAlignment(...) and the calls to these routines.  The fix for #260786 was an "adjustement" to #239137 which is not needed if we completely remove SetupGlobalAlignment(...) .  This would make the code easier to understand and restore it to its original V3.7 state.
<<END>>

<< Changes made by Yanhua Huang (Field Changes) -- 04/27/09  23:12:09>>
Action:  Yanhua Huang to Don Turcotte, Status:  OPEN to REVIEW
<<END>>

<< Changes made by Yanhua Huang (Resolution Data) -- 04/27/09  23:11:33>>
** Bug Fix - Likely Exists in Previous Versions -  - 239137 -  **
<<END>>

<< Yanhua Huang (Development Notes)  --  04/27/09  23:10:43>>
Fixed into V432 and V44B. Verified #260786, working.
// PR261263 - use alignment preceding dimension to calculate T-Value. disable fix for PR239137
******************************
Mon Apr 27 23:07:10 2009
******************************

Files inserted to server
------------------------
V44B\DIMENS\LOCATION.CPP
V432\DIMENS\LOCATION.CPP
<<END>>

<< Yanhua Huang (Development Notes)  --  04/27/09  21:41:10>>
used the alignment preceding this dimension to calculate T-Value.
<<END>>

<< Don Turcotte (Development Notes)  --  04/24/09  12:59:30>>
Any changed here should also be verified against #260786.
<<END>>

<< Daniel Schroepfer (Customer Notes)  --  04/24/09  18:45:29>>
Sometimes, I should update my databese before write something.
Don you are right.

Regards
Daniel
<<END>>

<< Daniel Schroepfer (Customer Notes)  --  04/24/09  18:27:37>>
Hi Don!

The T- Value must be dependent on the alignment. e.g.: Customers measure points in the RPS alignment and reports the T - Deviation. Then it can happens that customers wants to see how the deviation is after a bestfit alignment over some other points (for analizing). Then they reports again this points under the bestfit alignment. For this they only create a new dimension from the points, which was measured under the RPS alignment. This was always working fine. Now, customers has only 2 complicate possibilitys: Remeasure the points under the new alignment or construate again the points. This is crazy and not explainable. I also don't understand the problem from PR#239137, because if I want to have the T-Deviation und an explicit alignment, I only have to recall this alignment.
Regards
Daniel
<<END>>

<< Don Turcotte (Development Notes)  --  04/24/09  11:08:44>>
Sent the following e-mail to Dave, cc Bret, Yanhua:

"Dave,
In the program attached to this PR and also the program attached to #239137, alignments are done using the point being dimensioned.  In one case a bestfit 3D alignment is done including the point which is later dimensioned.  In the other case a translation alignment is done to the point which is then dimensioned.  It seems reasonable that if you bestfit align to the point, then this should reduce the T-value deviation.  Also if you translate X,Y,Z to the point in an alignment, then the T-value deviation should now be 0.  Because of the fix for #239137, the T-value is always the same.  It is calculated using the alignment that the point was measured in.  I believe the fix for #239137 is incorrect and should be undone (or at least disabled).  Undoing this fix would correct the issue report in #261263 where the user correctly expects the T-value to change.

The T-value calculation is the same as a profile dimension on an individual point.  If you do a bestfit alignment to the point followed by a legacy profile dimension (formandlocation), you would expect the deviation to have been reduced by the bestfit alignment.
"
<<END>>

<< Don Turcotte (Development Notes)  --  04/23/09  16:48:29>>
In conference call with Bret and Dave, it is not clear why the T-value calculation should be dependent on the alignment.  Hence, don't know the the fix for #239137 was required.  I will re-investigate #239137 to determine if T-value is indeed dependent on alignment (if the fix for #239137 is disabled) and why.
<<END>>

<< Bret Naylor (Management Notes)  --  04/22/09  16:35:55>>
We need to have a discussion on this one.  Dave and Don, let's talk about this tomorrow.
<<END>>

<< Don Turcotte (Development Notes)  --  04/22/09  13:43:28>>
This seems to be at odds with #239137.  In that PR the customer complained that the T-value changed based on the alignment the dimension was reported in.  This was "fixed" in #239137 so that the T-value is calculated based on the alignment that the feature is measured in and not based on the alignment that the dimension is reported in.
<<END>>

<< Changes made by Tim Wernicke (Field Changes) -- 04/21/09  19:29:24>>
Priority:  Critical to Stop Rel.
<<END>>

<< Changes made by Tim Wernicke (Field Changes) -- 04/21/09  08:11:59>>
Action:  Tim Wernicke to Yanhua Huang, Assigned:   to Yanhua Huang, Priority:  to Critical
<<END>>
 楼主| 发表于 2009-4-28 15:58:12 | 显示全部楼层

回复: PR 261263 261263 - WEBASTO - T-Value is calculated wrong, if dimension

t:\V44B\DIMENS\RS_LOCAT.CPP
BOOL CPCDrs_location::do_math(int theo_or_meas, int search)
{
  if(editor && editor->ReportLoading && sequence != 0 && !bit(RECALC_NOMS))
    return FALSE;
  CPoint3 measpoint;
  max = min = measured = 0.0;
  CTransform mat;
  CPCDcommand * start_ptr = get_start_ptr();
  if (! start_ptr)
    return FALSE;

  if (start_ptr && ((CPCDstart_location *) start_ptr)->featureid)
  {
    // PR#261263(V44B) - disable fix for PR239137  
    //SetupGlobalAlignment(((CPCDstart_location *) start_ptr)->featureid); // PR239137 - Get alignment in effect when feature was measured.

    CPoint3 dev, tmpPnt;
    int axs=0;

    if (bit(RECALC_NOMS))
      nominal = 0.0;

    ((CPCDstart_location *) start_ptr)->featureid->gp(CENTROID, THEO, PART, global_align, m_deviation_position);
    ((CPCDstart_location *) start_ptr)->featureid->gp(REPORT_SURF_VECTOR, THEO, PART, global_align, m_deviation_vector);
    ((CPCDstart_location *) start_ptr)->featureid->gp(CENTROID, MEAS, PART, global_align, measpoint);
    // note that the s_location uses the SURFACEVECTOR, while the
    // rs_location uses the REPORT_SURF_VECTOR.
    dev = measpoint - m_deviation_position;
    m_deviation_vector.maxabs(&axs);

    mat.newmat(m_deviation_vector, m_deviation_position);
    mat.aaforw(ROTANDTRANS, measpoint, measpoint);
    max = min = measured = measpoint[2];

    //#223785, whb 8/4/2004
    tmpPnt[axs] = dev[axs];
    m_deviation_vector = tmpPnt;

    //RestoreGlobalAlignment(); // PR239137 &R#261263(V44B) - disable fix for PR239137  
  }
  return TRUE;
}
 楼主| 发表于 2009-4-28 15:59:00 | 显示全部楼层

回复: PR 261263 261263 - WEBASTO - T-Value is calculated wrong, if dimension

t:\V44B\DIMENS\RT_LOCAT.CPP
BOOL CPCDrt_location::do_math(int theo_or_meas, int search)
{
  if(editor && editor->ReportLoading && sequence != 0 && !bit(RECALC_NOMS))
    return FALSE;
  CPoint3 measpoint;
  max = min = measured = 0.0;
  CTransform mat;
  CPCDcommand * start_ptr = get_start_ptr();
  if (! start_ptr)
    return FALSE;

  if (start_ptr && ((CPCDstart_location *) start_ptr)->featureid)
  {
    // PR#261263(V44B) - disable fix for PR239137  
    //SetupGlobalAlignment(((CPCDstart_location *) start_ptr)->featureid); // PR239137 - Get alignment in effect when feature was measured.

    CPoint3 dev, tmpPnt;
    int axs=0;

    if (bit(RECALC_NOMS))
      nominal = 0.0;

    ((CPCDstart_location *) start_ptr)->featureid->gp(CENTROID, THEO, PART, global_align, m_deviation_position);
    ((CPCDstart_location *) start_ptr)->featureid->gp(REPORT_VECTOR, THEO, PART, global_align, m_deviation_vector);
    ((CPCDstart_location *) start_ptr)->featureid->gp(CENTROID, MEAS, PART, global_align, measpoint);
    // note that the rt_location uses the REPORT_VECTOR, while the
    // t_location uses the VECTOR.
    dev = measpoint - m_deviation_position;
    m_deviation_vector.maxabs(&axs);

    mat.newmat(m_deviation_vector, m_deviation_position);
    mat.aaforw(ROTANDTRANS, measpoint, measpoint);
    max = min = measured = measpoint[2];

    //#223785, whb 8/4/2004
    tmpPnt[axs] = dev[axs];
    m_deviation_vector = tmpPnt;

    //RestoreGlobalAlignment(); // PR239137&R#261263(V44B) - disable fix for PR239137  
  }
  return TRUE;
}
 楼主| 发表于 2009-4-28 15:59:34 | 显示全部楼层

回复: PR 261263 261263 - WEBASTO - T-Value is calculated wrong, if dimension

t:\V44B\DIMENS\S_LOCAT.CPP
BOOL CPCDs_location::do_math(int theo_or_meas, int search)
{
  if(editor && editor->ReportLoading && sequence != 0 && !bit(RECALC_NOMS))
    return FALSE;
  CPoint3 measpoint;
  max = min = measured = 0.0;
  CTransform mat;
  CPCDcommand * start_ptr = get_start_ptr();
  if (! start_ptr)
    return FALSE;

  if (start_ptr && ((CPCDstart_location *) start_ptr)->featureid)
  {
    // PR#261263(V44B) - disable fix for PR239137  
    //SetupGlobalAlignment(((CPCDstart_location *) start_ptr)->featureid); // PR239137 - Get alignment in effect when feature was measured.

    CPoint3 dev, tmpPnt;
    int axs=0;

    if (bit(RECALC_NOMS))
      nominal = 0.0;

    ((CPCDstart_location *) start_ptr)->featureid->gp(CENTROID, THEO, PART, global_align, m_deviation_position);
    ((CPCDstart_location *) start_ptr)->featureid->gp(SURFACEVECTOR, THEO, PART, global_align, m_deviation_vector);
    ((CPCDstart_location *) start_ptr)->featureid->gp(CENTROID, MEAS, PART, global_align, measpoint);
    // note that the s_location uses the SURFACEVECTOR, while the
    // rs_location uses the REPORT_SURF_VECTOR.
    dev = measpoint - m_deviation_position;
    m_deviation_vector.maxabs(&axs);

    mat.newmat(m_deviation_vector, m_deviation_position);
    mat.aaforw(ROTANDTRANS, measpoint, measpoint);
    max = min = measured = measpoint[2];

    //#223785, whb 8/4/2004
    tmpPnt[axs] = dev[axs];
    m_deviation_vector = tmpPnt;

    //RestoreGlobalAlignment(); // PR239137&R#261263(V44B) - disable fix for PR239137  
  }
  return TRUE;
}
 楼主| 发表于 2009-4-28 16:00:14 | 显示全部楼层

回复: PR 261263 261263 - WEBASTO - T-Value is calculated wrong, if dimension

t:\V44B\DIMENS\T_LOCATI.CPP
BOOL CPCDt_location::do_math(int theo_or_meas, int search)
{
  if(editor && editor->ReportLoading && sequence != 0 && !bit(RECALC_NOMS))
    return FALSE;
  CPoint3 measpoint;
  max = min = measured = 0.0;
  CTransform mat;
  CPCDcommand * start_ptr = get_start_ptr();
  if (! start_ptr)
    return FALSE;

  if (start_ptr && ((CPCDstart_location *) start_ptr)->featureid)
  {
    // PR#261263(V44B) - disable fix for PR239137  
    //SetupGlobalAlignment(((CPCDstart_location *) start_ptr)->featureid); // PR239137 - Get alignment in effect when feature was measured.

    CPoint3 dev, tmpPnt;
    int axs=0;

    if (bit(RECALC_NOMS))
      nominal = 0.0;

    ((CPCDstart_location *) start_ptr)->featureid->gp(CENTROID, THEO, PART, global_align, m_deviation_position);
    ((CPCDstart_location *) start_ptr)->featureid->gp(VECTOR, THEO, PART, global_align, m_deviation_vector);

    //KB 23/07/2007: PR249197 :T-Deviation is incorrect for features with ACTL thickness
    //Use new "TDeviationIsForcedToCADReference" key instead of "global_dmis_volkswagonconvension" flag...
    int tdev_forced = PCDGetProfileInt(_T("Option"), _T("TDeviationIsForcedToCADReference"), 0);
    if (tdev_forced && ((CPCDstart_location *) start_ptr)->featureid->bit(THICK_TYPE) && !((CPCDstart_location *) start_ptr)->featureid->bit(THICK_TYPE_NONE))
      m_deviation_vector*=-1.0; // need for VW to flip the vector since we are measuring on the opposite side of the sheetmetal than the cad definition.

    ((CPCDstart_location *) start_ptr)->featureid->gp(CENTROID, MEAS, PART, global_align, measpoint);

    dev = measpoint - m_deviation_position;
    m_deviation_vector.maxabs(&axs);

    mat.newmat(m_deviation_vector, m_deviation_position);
    mat.aaforw(ROTANDTRANS, measpoint, measpoint);
    max = min = measured = measpoint[2];

    //#223785, whb 8/4/2004
    tmpPnt[axs] = dev[axs];
    m_deviation_vector = tmpPnt;

    //RestoreGlobalAlignment(); // PR239137&R#261263(V44B) - disable fix for PR239137  
  }
  return TRUE;
}
 楼主| 发表于 2009-4-28 16:03:54 | 显示全部楼层

回复: PR 261263 261263 - WEBASTO - T-Value is calculated wrong, if dimension

t:\V44B\DIMENS\LOCATION.CPP
// ********************************************************************************
//   RestoreGlobalAlignment
//   RestoreGlobalAlignment is abandoned on 4-28-2009
//  Modifications:
//  04-28-2009  yanhua  All axes should specify the following rule.
//  Specification : use the alignment preceding this location dimension to calculate deviation.
//                  PR#261263(V44B) - disable fix for PR239137               
// PR#239137 - Get alignment in effect when feature was measured - abandoned the rule.
// ********************************************************************************
void CPCDlocation::RestoreGlobalAlignment() // PR239137
{
  // Restore the alignment and workplane that was in effect.
  if( m_bHaveAlignmentData )
  {
    if( global_align )
    {
      global_align->set_alignment(MACHINETOPARTS,m_save_machine2parts);
      global_align->set_alignment(CADTOPARTS,m_save_cad2parts);
    }
  }
  else
  {
    if( m_pSaveAlign )
      m_pPartProgram->GetCurrentSettings()->SetCurrentAlignment(m_pSaveAlign);
  }

  global_workplane = m_saveWorkplane;
}
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|小黑屋|几何尺寸与公差论坛

GMT+8, 2025-1-3 10:28 , Processed in 0.047387 second(s), 19 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表