/// <summary> /// 判断顶部的零部件,顶部的零部件法向与Y轴平行; /// </summary> /// <param name="?"></param> private void JudgeTopPart(CMrPart mrPart) { Vector normal = mrPart.mNormal; double maxY = mrPart.GetMaxYPoint().Y; if (maxY < mMainBeamMaxY) { return; } //1.如果零部件的法向与Y轴的法向相同; if (CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(0, 1, 0))) { if (Math.Abs(maxY - CCommonPara.mViewMaxY) < CCommonPara.mDblError) { mTopPart = mrPart; } } }
/// <summary> /// 绘制檩托板的零件标记; /// </summary> private void DrawMrApronPlateMark() { DrawingHandler drawingHandler = new DrawingHandler(); TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector(); Dictionary <CMrPart, CMrApronPlate> mapPartToMrApronPlate = CMrCylinderDoorTopManager.GetInstance().mMapYNormalPartToMrApronPlate; foreach (CMrApronPlate mrApronPlate in mapPartToMrApronPlate.Values) { CMrPart yNormalPart = mrApronPlate.mYNormalPart; CMrPart zNormalPart = mrApronPlate.mZNormalPart; DS.SelectObject(yNormalPart.mPartInDrawing); DS.SelectObject(zNormalPart.mPartInDrawing); } CDimTools.GetInstance().DrawMarkByMacro(); }
/// <summary> /// 获得主梁上方需要标注的螺钉组; /// </summary> private CMrDimSet GetMainPartBoltUpDimX() { CMrDimSet mrDimSet = new CMrDimSet(); List <CMrBoltArray> mrBoltArrayList = mMainBeam.GetBoltArrayList(); foreach (CMrBoltArray mrBoltArray in mrBoltArrayList) { Vector normal = mrBoltArray.mNormal; if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(0, 0, 1))) { continue; } List <Point> pointList = mrBoltArray.GetMaxYPointList(); mrDimSet.AddRange(pointList); } return(mrDimSet); }
/// <summary> /// 绘制零件标记; /// </summary> private void DrawPartMark() { //判断主梁在剖视图中的法向,主要是考虑与X方向和Y方向平行的两个方向; Vector normal = mMainBeam.mNormal; Vector xVector = new Vector(1, 0, 0); Vector yVector = new Vector(0, 1, 0); if (CDimTools.GetInstance().IsTwoVectorParallel(normal, xVector) || CDimTools.GetInstance().IsVectorInXZPlane(normal)) { DrawXParallelPartMark(); } else if (CDimTools.GetInstance().IsTwoVectorParallel(normal, yVector) || CDimTools.GetInstance().IsVectorInYZPlane(normal)) { DrawYParallelPartMark(); } }
/// <summary> /// 绘制零件标记; /// </summary> public void DrawPartMark() { DrawingHandler drawingHandler = new DrawingHandler(); TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector(); foreach (CMrPart mrPart in mMrPartList) { CMrMark mrMark = mrPart.GetCylinderDoorTopViewInfo().GetPartMark(); if (null == mrMark) { continue; } DS.SelectObject(mrPart.mPartInDrawing); } CDimTools.GetInstance().DrawMarkByMacro(); }
private void timer1_Tick(object sender, EventArgs e) { // return; timer1.Interval = 1000 * 60 * 1; try { // timer1.Enabled = false; if (timer1.Interval < 1000) { timer1.Interval = 1000 * 60 * 1; int re = CDogTools.GetInstance().GetUserAuthority(); if (re == -1) { CServers.GetServers().CloseService(); MessageBox.Show("您的加密狗已经在其他程序中使用,不能重复登录!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); this.Close(); } else if (re <= 0) { CServers.GetServers().CloseService(); MessageBox.Show("未检测到加密狗!请确认是否已经插好!", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); this.Close(); } } else { if (!CDimTools.GetInstance().IsOut) { CServers.GetServers().GetUserName(); } else { MessageBox.Show("服务器异常,请确认网络或者加密狗", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); this.Close(); } } } catch { MessageBox.Show("服务器异常,请确认网络或者加密狗", "提示", MessageBoxButtons.OK, MessageBoxIcon.Warning); this.Close(); } }
/// <summary> /// 判断左上侧中间的零部件; /// </summary> /// <param name="mrPart"></param> private void JudgeLeftMiddlePart(CMrPart mrPart) { if (mLeftTopMiddlePart != null) { return; } double partMaxX = mrPart.GetMaxXPoint().X; double partMaxY = mrPart.GetMaxYPoint().Y; double leftPartMaxY = mLeftPart.GetMaxYPoint().Y; double leftTopPartMaxY = mLeftTopPart.GetMaxYPoint().Y; double leftTopPartMaxX = mLeftTopPart.GetMaxXPoint().X; if (partMaxY > leftPartMaxY && partMaxY < leftTopPartMaxY && CDimTools.GetInstance().CompareTwoDoubleValue(partMaxX, leftTopPartMaxX) == 0) { mLeftTopMiddlePart = mrPart; } }
/// <summary> /// 判断右上侧中间的零部件; /// </summary> /// <param name="mrPart"></param> private void JudgeRightMiddlePart(CMrPart mrPart) { if (mRightTopMiddlePart != null) { return; } double partMinX = mrPart.GetMinXPoint().X; double partMaxY = mrPart.GetMaxYPoint().Y; double rightPartMaxY = mRightPart.GetMaxYPoint().Y; double rightTopPartMaxY = mRightTopPart.GetMaxYPoint().Y; double rightTopPartMinX = mRightTopPart.GetMinXPoint().X; if (partMaxY > rightPartMaxY && partMaxY < rightTopPartMaxY && CDimTools.GetInstance().CompareTwoDoubleValue(partMinX, rightTopPartMinX) == 0) { mRightTopMiddlePart = mrPart; } }
/// <summary> /// 绘制主梁上的螺钉标记; /// </summary> /// <param name="nFlag">nFlag=1:上翼板是倾斜。nFlag=2:上翼板向两侧倾斜</param> private void DrawMainBeamBoltMark(int nFlag) { List <CMrBoltArray> mrBoltArrayList = mMainBeam.GetBoltArrayList(); Vector zVector = new Vector(0, 0, 1); DrawingHandler drawingHandler = new DrawingHandler(); TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector(); foreach (CMrBoltArray mrBoltArray in mrBoltArrayList) { //只有与Z轴平行的螺钉组才进行编号; if (!CDimTools.GetInstance().IsTwoVectorParallel(zVector, mrBoltArray.mNormal)) { continue; } DS.SelectObject(mrBoltArray.mBoltInDrawing); } }
/// <summary> /// 判断零件是否是外围板; /// </summary> /// <param name="mrPart"></param> /// <returns></returns> private bool IsOutsidePlate(CMrPart mrPart) { Vector normal = mrPart.mNormal; double minZ = mrPart.GetMinZPoint().Z; double maxZ = mrPart.GetMaxZPoint().Z; double mainBeamMinZ = CMrMainBeam.GetInstance().GetMinZPoint().Z; double mainBeamMaxZ = CMrMainBeam.GetInstance().GetMaxZPoint().Z; if (CDimTools.GetInstance().CompareTwoDoubleValue(minZ, mainBeamMaxZ) >= 0) { return(true); } if (CDimTools.GetInstance().CompareTwoDoubleValue(maxZ, mainBeamMinZ) <= 0) { return(true); } return(false); }
/// <summary> /// 绘制主梁上面的螺钉标记; /// </summary> private void DrawMainBeamBoltMark() { DrawingHandler drawingHandler = new DrawingHandler(); TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector(); List <CMrBoltArray> mrBoltArrayList = mMainBeam.GetBoltArrayList(); foreach (CMrBoltArray mrBoltArray in mrBoltArrayList) { if (!CDimTools.GetInstance().IsTwoVectorParallel(mrBoltArray.mNormal, new Vector(0, 0, 1))) { continue; } DS.SelectObject(mrBoltArray.mBoltInDrawing); } CDimTools.GetInstance().DrawMarkByMacro(); }
/// <summary> /// 柱的顶视图标注; /// </summary> public void CreateCylinderTopViewDim() { ViewBase topViewBase = null; PointList pointList = new PointList(); CDimTools.GetInstance().PickPoints(1, ref pointList, ref topViewBase); if (topViewBase != null) { topViewBase.Select(); TSD.View topView = topViewBase as TSD.View; CCylinderTopView mTopView = new CCylinderTopView(topView, mModel); InitMainPart(); InitView(topView); mTopView.CreateDim(); } }
/// <summary> /// 获取X值最小的点; /// </summary> /// <returns></returns> public Point GetMinXPoint() { Point minXPoint = mMrTopPart.GetMinXPoint(); Point newMinXPoint = mMrMidPart.GetMinXPoint(); if (CDimTools.GetInstance().CompareTwoDoubleValue(minXPoint.X, newMinXPoint.X) > 0) { minXPoint = newMinXPoint; } newMinXPoint = mMrBottomPart.GetMinXPoint(); if (CDimTools.GetInstance().CompareTwoDoubleValue(minXPoint.X, newMinXPoint.X) > 0) { minXPoint = newMinXPoint; } return(minXPoint); }
/// <summary> /// 绘制主部件外侧角钢的螺钉标注; /// </summary> private void DrawAngleSheetBoltDimX() { CCylinderTopViewSetting cylinderTopViewSetting = CCylinderDimSetting.GetInstance().mTopViewSetting; mMrPartList.Remove(mMainBeam); foreach (CMrPart mrPart in mMrPartList) { CMrDimSet mrBoltDimSet = mrPart.GetCylinderTopViewInfo().GetAngleSheetBoltXDimSet(); PointList pointList = new PointList(); //1.支撑板或连接板是否需要标注; if (cylinderTopViewSetting.FindDimValueByName(CCylinderTopViewSetting.mstrAngleSheet)) { if (mrBoltDimSet != null) { foreach (Point point in mrBoltDimSet.GetDimPointList()) { pointList.Add(point); } } } if (pointList.Count > 0) { if (mrBoltDimSet != null && mrBoltDimSet.Count > 0) { double dimDistance = mrBoltDimSet.mDimDistance; Vector dimVector = mrBoltDimSet.mDimVector; CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, dimVector, dimDistance, CCommonPara.mSizeDimPath); } else { double dimDistance = Math.Abs(mrPart.GetMinYPoint().Y - pointList[0].Y) + CCommonPara.mDefaultDimDistance; Vector dimVector = new Vector(0, -1, 0); CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, dimVector, dimDistance, CCommonPara.mSizeDimPath); } } } mMrPartList.Add(mMainBeam); }
/// <summary> /// 根据给定的零部件找到上板或者下板; /// </summary> /// <param name="mrPart"></param> /// <param name="mrPartList"></param> /// <returns></returns> public CMrApronPlate CreateMrApronPlateType1(CMrPart myNormalPart, List <CMrPart> mrPartList) { Vector zVector = new Vector(0, 0, 1); double minY = myNormalPart.GetMinYPoint().Y; double maxY = myNormalPart.GetMaxYPoint().Y; double minX = myNormalPart.GetMinXPoint().X; double maxX = myNormalPart.GetMaxXPoint().X; foreach (CMrPart mrPart in mrPartList) { Vector normal = mrPart.mNormal; if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, zVector)) { continue; } double zNormalMaxY = mrPart.GetMaxYPoint().Y; double zNormalMinY = mrPart.GetMinYPoint().Y; double zNormalMaxX = mrPart.GetMaxXPoint().X; double zNormalMinX = mrPart.GetMinXPoint().X; if (CDimTools.GetInstance().CompareTwoDoubleValue(zNormalMaxY, minY) == 0 && CDimTools.GetInstance().CompareTwoDoubleValue(zNormalMaxX, maxX) == 0 && CDimTools.GetInstance().CompareTwoDoubleValue(zNormalMinX, minX) == 0) { CMrApronPlate mrApronPlate = new CMrApronPlate(myNormalPart, mrPart, MrApronPlateType.Type1); mrApronPlate.mIsUp = false; return(mrApronPlate); } else if (CDimTools.GetInstance().CompareTwoDoubleValue(zNormalMinY, maxY) == 0 && CDimTools.GetInstance().CompareTwoDoubleValue(zNormalMaxX, maxX) == 0 && CDimTools.GetInstance().CompareTwoDoubleValue(zNormalMinX, minX) == 0) { CMrApronPlate mrApronPlate = new CMrApronPlate(myNormalPart, mrPart, MrApronPlateType.Type1); mrApronPlate.mIsUp = true; return(mrApronPlate); } } return(null); }
/// <summary> /// 绘制所有零件的下方标注; /// </summary> public void DrawAllPartDownDimX() { mMrPartList.Remove(mMainBeam); bool bNeedDownDim = false; List <Point> downDimPointList = new List <Point>(); foreach (CMrPart mrPart in mMrPartList) { CMrDimSet partDimSet = mrPart.GetBeamTopViewInfo().GetPartDownDimSet(); if (partDimSet != null && partDimSet.Count > 0) { bNeedDownDim = true; downDimPointList.AddRange(partDimSet.GetDimPointList()); } } if (bNeedDownDim == false) { return; } //2.默认把主梁的左右最小最大点添加到链表中; Point minXPoint = mMainBeam.GetMinXPoint(); Point maxXPoint = mMainBeam.GetMaxXPoint(); downDimPointList.Add(minXPoint); downDimPointList.Add(maxXPoint); PointList pointList = new PointList(); foreach (Point point in downDimPointList) { pointList.Add(point); } double dimDistance = GetDownDimDistance(pointList[0]); Vector upDimVector = new Vector(0, -1, 0); CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, upDimVector, dimDistance, CCommonPara.mSizeDimPath); mMrPartList.Add(mMainBeam); }
/// <summary> /// 获取主梁右侧螺钉组的标注; /// </summary> /// <returns></returns> public CMrDimSet GetYRightBoltDim() { Vector zVector = new Vector(0, 0, 1); Vector normal = mMrPart.mNormal; double maxX = mMrPart.GetMaxXPoint().X; if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, zVector)) { return(null); } if (maxX < CCommonPara.mDblError || !mMrPart.IsHaveBolt()) { return(null); } CMrDimSet mrDimSet = new CMrDimSet(); List <CMrBoltArray> mrBoltArrayList = mMrPart.GetBoltArrayList(); foreach (CMrBoltArray mrBoltArray in mrBoltArrayList) { //如果螺钉组的法向与Z轴不平行,则返回继续执行; if (!CDimTools.GetInstance().IsTwoVectorParallel(zVector, mrBoltArray.mNormal)) { continue; } if (mrBoltArray.mBoltArrayShapeType == MrBoltArrayShapeType.ARRAY) { List <Point> maxPointList = mrBoltArray.GetMaxXPointList(); mrDimSet.AddRange(maxPointList); } else if (mrBoltArray.mBoltArrayShapeType == MrBoltArrayShapeType.OBLIQUELINE) { List <Point> boltPointList = mrBoltArray.GetBoltPointList(); mrDimSet.AddRange(boltPointList); } } return(mrDimSet); }
/// <summary> /// 判断主梁左下方是否有小切口; /// </summary> /// <returns></returns> public bool JudgeLeftBottomIncision() { Point minXminYPoint = GetMinXMinYPoint(); Point minYminXPoint = GetMinYMinXPoint(); if (CDimTools.GetInstance().CompareTwoDoubleValue(minXminYPoint.X, minYminXPoint.X) == 0) { return(false); } else { double yValue = Math.Abs(minXminYPoint.Y - minYminXPoint.Y); if (yValue <= mFlangeThickness * Math.Tan(45 * Math.PI / 180)) { return(true); } } return(false); }
/// <summary> /// 得到右侧挡板零件向右的标注向量; /// </summary> /// <returns></returns> public Vector GetRightBeamRightDimVector() { Vector normal = mRightBeam.mNormal; Vector dimVector = new Vector(); //根据挡板的斜率来判断标注的方向; MrSlopeType slopeType = CDimTools.GetInstance().JudgeLineSlope(mRightBeam.mRightTopPoint, mRightBeam.mRightBottomPoint); if (slopeType == MrSlopeType.MORETHAN_ZERO) { dimVector = new Vector(Math.Abs(normal.X), -Math.Abs(normal.Y), 0); } else { dimVector = new Vector(Math.Abs(normal.X), Math.Abs(normal.Y), 0); } return(dimVector); }
/// <summary> /// 判断主梁右上方是否有小切口; /// </summary> /// <returns></returns> public bool JudgeRightTopIncision() { Point maxXmaxYPoint = GetMaxXMaxYPoint(); Point maxYmaxXPoint = GetMaxYMaxXPoint(); if (CDimTools.GetInstance().CompareTwoDoubleValue(maxXmaxYPoint.X, maxYmaxXPoint.X) == 0) { return(false); } else { double yValue = Math.Abs(maxXmaxYPoint.Y - maxYmaxXPoint.Y); if (yValue <= mFlangeThickness * Math.Tan(45 * Math.PI / 180)) { return(true); } } return(false); }
/// <summary> /// 绘制主梁的Bolt在Y向上的标注; /// </summary> private void DrawMainPartBoltDimY() { CBeamTopViewSetting beamTopViewSetting = CBeamDimSetting.GetInstance().mTopViewSetting; bool bNeedMainBeamBoltDim = beamTopViewSetting.FindDimValueByName(CBeamTopViewSetting.mstrBolt); if (!bNeedMainBeamBoltDim) { return; } List <CMrDimSet> boltDimSetList = GetMainPartBoltDimSetY(); if (boltDimSetList == null || boltDimSetList.Count == 0) { return; } foreach (CMrDimSet mrDimSet in boltDimSetList) { if (mrDimSet == null || mrDimSet.Count <= 1) { continue; } if (!IsNeedMrDimSetDim(mrDimSet)) { continue; } List <Point> dimPointList = mrDimSet.GetDimPointList(); PointList pointList = new PointList(); foreach (Point point in dimPointList) { pointList.Add(point); } double dimDistance = mrDimSet.mDimDistance; Vector dimVector = mrDimSet.mDimVector; CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, dimVector, dimDistance, CCommonPara.mSizeDimPath); } }
public void CreateDim() { //启动初始化函数; Thread thread = new Thread(new ParameterizedThreadStart(ThreadFunc)); thread.Start(); //首先清空标注和标记; CDimTools.GetInstance().ClearAllDim(mViewBase); CDimTools.GetInstance().ClearAllPartMark(mViewBase); lock (mLockString) { #if DEBUG DrawZNormalMiddleBoltDim(); DrawYMainRightDim(); DrawYMainLeftDim(); DrawBoltDim(); DrawPartMark(); DrawMrApronPlateMark(); DrawZNormalMiddleBoltMark(); #else try { DrawZNormalMiddleBoltDim(); DrawYMainRightDim(); DrawYMainLeftDim(); DrawBoltDim(); DrawPartMark(); DrawMrApronPlateMark(); DrawZNormalMiddleBoltMark(); } catch (Exception e) { string strText = "提示:程序发生异常\n" + "异常信息:" + e.Message; MessageBox.Show(strText); return; } #endif } }
/// <summary> /// 判断主梁下方法向与Y轴平行的零部件,该零件的最大Y值与主梁的最小Y值相等; /// </summary> /// <param name="mrPart"></param> private void JudgeYNormalBottomPart(CMrPart mrPart) { if (mYNormalBottomPart != null) { return; } Vector normal = mrPart.mNormal; if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(0, 1, 0))) { return; } double partMaxY = mrPart.GetMaxYPoint().Y; if (Math.Abs(partMaxY - mMainBeamMinY) < 0.1) { mYNormalBottomPart = mrPart; } }
/// <summary> /// 判断是否是最右侧的板部件; /// </summary> /// <param name="mrPart"></param> public void JudgeRightBeam(CMrPart mrPart) { if (mRightBeam == null) { mRightBeam = mrPart; return; } if (CDimTools.GetInstance().IsTwoVectorParallel(mrPart.mNormal, new Vector(0, 1, 0))) { return; } Point maxXPoint = mrPart.GetMaxXPoint(); Point rightMaxXPoint = mRightBeam.GetMaxXPoint(); if (CDimTools.GetInstance().CompareTwoDoubleValue(maxXPoint.X, rightMaxXPoint.X) > 0) { mRightBeam = mrPart; } }
/// <summary> /// 获得法向与Z轴平行的中间的零件中螺钉标注; /// </summary> /// <returns></returns> public List <CMrDimSet> GetZNormalMiddleDimSet() { List <CMrDimSet> mrDimSetList = new List <CMrDimSet>(); Vector normal = mMrPart.mNormal; double minX = mMrPart.GetMinXPoint().X; double maxX = mMrPart.GetMaxXPoint().X; if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(0, 0, 1)) || !mMrPart.IsHaveBolt()) { return(mrDimSetList); } if (CDimTools.GetInstance().CompareTwoDoubleValue(minX, 0) >= 0 || CDimTools.GetInstance().CompareTwoDoubleValue(maxX, 0) <= 0) { return(mrDimSetList); } List <CMrBoltArray> mrBoltArrayList = mMrPart.GetBoltArrayList(); foreach (CMrBoltArray mrBoltArray in mrBoltArrayList) { if (!CDimTools.GetInstance().IsTwoVectorParallel(mrBoltArray.mNormal, new Vector(0, 0, 1))) { continue; } List <Point> pointList = mrBoltArray.GetMaxYPointList(); CMrDimSet mrDimSet = new CMrDimSet(); mrDimSet.AddRange(pointList); mrDimSet.mDimVector = new Vector(0, 1, 0); mrDimSet.mDimDistance = CCommonPara.mDefaultDimDistance; mrDimSetList.Add(mrDimSet); } return(mrDimSetList); }
/// <summary> /// 获取零件标记; /// </summary> /// <returns></returns> public CMrMark GetPartMark() { CMrMark mrMark = new CMrMark(); Vector normal = mMrPart.mNormal; double minX = mMrPart.GetMinXPoint().X; double maxX = mMrPart.GetMaxXPoint().X; if (minX < 0 && maxX > 0) { return(null); } if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(0, 0, 1)) || !mMrPart.IsHaveBolt()) { return(null); } double dblAngle = CCommonPara.mPartMarkAngle; mrMark.mModelObject = mMrPart.mPartInDrawing; if (minX > 0) { mrMark.mInsertPoint = mMrPart.GetMaxXMaxYPoint(); double increaseXDistance = CCommonPara.mPartMarkLength / Math.Tan(dblAngle); mrMark.mTextPoint.X = mrMark.mInsertPoint.X + increaseXDistance; mrMark.mTextPoint.Y = mrMark.mInsertPoint.Y + 1.2 * CCommonPara.mPartMarkLength; return(mrMark); } if (maxX < 0) { mrMark.mInsertPoint = mMrPart.GetMinXMaxYPoint(); double increaseXDistance = CCommonPara.mPartMarkLength / Math.Tan(dblAngle); mrMark.mTextPoint.X = mrMark.mInsertPoint.X - increaseXDistance; mrMark.mTextPoint.Y = mrMark.mInsertPoint.Y + 1.2 * CCommonPara.mPartMarkLength; return(mrMark); } return(null); }
/// <summary> /// 对于正常的左右倾斜梁的下标注; /// </summary> public void DrawXDownDimNormal() { List <Point> downDimPointList = new List <Point>(); foreach (CMrPart mrPart in mMrPartList) { CMrDimSet partDimSet = mrPart.GetBeamDoorFrontViewInfo().GetXDownDimSetNormal(); if (partDimSet != null && partDimSet.Count > 0) { downDimPointList.AddRange(partDimSet.GetDimPointList()); } } CMrPart topBeam = CMrBeamDoorManager.GetInstance().mTopBeam; CMrPart bottomBeam = CMrBeamDoorManager.GetInstance().mBottonBeam; CMrPart leftBeam = CMrBeamDoorManager.GetInstance().mLeftBeam; CMrPart rightBeam = CMrBeamDoorManager.GetInstance().mRightBeam; downDimPointList.Add(topBeam.mLeftTopPoint); downDimPointList.Add(bottomBeam.mLeftBottomPoint); downDimPointList.Add(topBeam.mRightTopPoint); downDimPointList.Add(bottomBeam.mRightBottomPoint); Comparison <Point> sorterX = new Comparison <Point>(CDimTools.ComparePointX); downDimPointList.Sort(sorterX); PointList pointList = new PointList(); foreach (Point point in downDimPointList) { pointList.Add(point); } double dimDistance = Math.Abs(CCommonPara.mViewMinY - downDimPointList[0].Y) + 1.5 * CCommonPara.mDefaultDimDistance; Vector downDimVector = new Vector(0, -1, 0); CDimTools.GetInstance().DrawDimensionSet(mViewBase, pointList, downDimVector, dimDistance, CCommonPara.mSizeDimPath); }
/// <summary> /// 获得支撑及牛腿中间的垂直加筋板; /// </summary> /// <param name="mrSupportPlate"></param> /// <returns></returns> private List <CMrPart> GetSupportPlateMiddleConnectPlates(CMrPart mrSupportPlate) { Point maxXPoint = mrSupportPlate.GetMaxXPoint(); Point minXPoint = mrSupportPlate.GetMinXPoint(); List <CMrPart> mrConnectPlates = new List <CMrPart>(); if (maxXPoint.X < 0) { foreach (CMrPart mrPart in mVerticalConnectPlateList) { if (IsOutsidePlate(mrPart) || mrPart.GetMaxXPoint().X > 0) { continue; } if (CDimTools.GetInstance().IsPartInOtherPartBox(mrPart, mrSupportPlate)) { mrConnectPlates.Add(mrPart); } } return(mrConnectPlates); } else if (minXPoint.X > 0) { foreach (CMrPart mrPart in mVerticalConnectPlateList) { if (IsOutsidePlate(mrPart) || mrPart.GetMinXPoint().X < 0) { continue; } if (CDimTools.GetInstance().IsPartInOtherPartBox(mrPart, mrSupportPlate)) { mrConnectPlates.Add(mrPart); } } return(mrConnectPlates); } return(null); }
/// <summary> /// 构建类型2的檩托板; /// </summary> /// <param name="mrPartList"></param> public void BuildMrApronPlateType2(List <CMrPart> mrPartList) { CDimTools.GetInstance().SortMrPartByMinY(mrPartList); double mainBeamMinX = CMrMainBeam.GetInstance().GetMinXPoint().X; double mainBeamMaxX = CMrMainBeam.GetInstance().GetMaxXPoint().X; Vector yVector = new Vector(0, 1, 0); foreach (CMrPart mrPart in mrPartList) { Vector normal = mrPart.mNormal; if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, yVector)) { continue; } double partMinX = mrPart.GetMinXPoint().X; double partMaxX = mrPart.GetMaxXPoint().X; if (!(CDimTools.GetInstance().CompareTwoDoubleValue(partMinX, mainBeamMinX) > 0 && CDimTools.GetInstance().CompareTwoDoubleValue(partMaxX, mainBeamMaxX) < 0)) { continue; } CMrApronPlate mrApronPlate = CreateMrApronPlateType2(mrPart, mrPartList); if (mrApronPlate == null) { continue; } if (!mMapYNormalPartToMrApronPlate2.ContainsKey(mrPart)) { mMapYNormalPartToMrApronPlate2.Add(mrPart, mrApronPlate); } } }
/// <summary> /// 判断是否是最左边的板部件; /// </summary> /// <param name="mrPart"></param> /// <returns></returns> public void JudgeLeftBeam(CMrPart mrPart) { if (mLeftBeam == null) { mLeftBeam = mrPart; return; } if (CDimTools.GetInstance().IsTwoVectorParallel(mrPart.mNormal, new Vector(0, 1, 0))) { return; } Point minXPoint = mrPart.GetMinXPoint(); Point leftMinXPoint = mLeftBeam.GetMinXPoint(); if (CDimTools.GetInstance().CompareTwoDoubleValue(minXPoint.X, leftMinXPoint.X) < 0) { mLeftBeam = mrPart; } }