/// <summary> /// 梁的剖视图标注; /// </summary> public void CreateBeamSectionView() { ViewBase sectionViewBase = null; PointList pointList = new PointList(); CDimTools.GetInstance().PickPoints(1, ref pointList, ref sectionViewBase); if (sectionViewBase != null) { sectionViewBase.Select(); TSD.View sectionView = sectionViewBase as TSD.View; CBeamSectionView mSectionView = new CBeamSectionView(sectionView, mModel); InitMainPart(); InitView(sectionView); mSectionView.CreateDim(); } }
/// <summary> /// 根据选择的View来进行标注; /// </summary> private void DrawDrawingByView(TSD.View view, TSM.Part mainPart, string strDimType) { view.Select(); //创建自定义的主梁对象; CMrMainBeam mainBeam = new CMrMainBeam(mainPart, null); CMrMainBeam.SetInstance(mainBeam); double dblFlangeThickness = 0.0; double dblWebThickness = 0.0; mainPart.GetReportProperty("PROFILE.FLANGE_THICKNESS", ref dblFlangeThickness); mainPart.GetReportProperty("PROFILE.WEB_THICKNESS", ref dblWebThickness); mainBeam.mFlangeThickness = dblFlangeThickness; mainBeam.mWebThickness = dblWebThickness; int size = view.GetObjects(new Type[] { typeof(TSD.Part) }).GetSize(); //如果零部件个数为0或1分别表示空视图和零件图则不进行标注; if (size == 0 || size == 1) { return; } Vector xVector = new Vector(1, 0, 0); Vector yVector = new Vector(0, 1, 0); Vector zVector = new Vector(0, 0, 1); CDimTools.GetInstance().InitMrPart(mainPart, view, mainBeam); Vector vector = mainBeam.mNormal; double minY = mainBeam.GetMinYPoint().Y; double maxY = mainBeam.GetMaxYPoint().Y; double minX = mainBeam.GetMinXPoint().X; double maxX = mainBeam.GetMaxXPoint().X; double mainBeamHeight = Math.Abs(maxY - minY); double mainBeamWidth = Math.Abs(maxX - minX); if (strDimType == "梁标注") { Point viewMinPoint = view.RestrictionBox.MinPoint; Point viewMaxPoint = view.RestrictionBox.MaxPoint; double viewWidth = Math.Abs(viewMaxPoint.X - viewMinPoint.X); //顶视图标注; if (CDimTools.GetInstance().IsTwoVectorParallel(vector, yVector) && CDimTools.GetInstance().CompareTwoDoubleValue(viewWidth, mainBeamWidth) >= 0) { CBeamTopView mTopView = new CBeamTopView(view, mModel); InitView(view); mTopView.CreateDim(); } //主视图标注; else if (CDimTools.GetInstance().IsTwoVectorParallel(vector, zVector) && CDimTools.GetInstance().CompareTwoDoubleValue(viewWidth, mainBeamWidth) >= 0) { CBeamFrontView mFrontView = new CBeamFrontView(view, mModel); InitView(view); mFrontView.CreateDim(); } //剖视图标注; else { CBeamSectionView mSectionView = new CBeamSectionView(view, mModel); InitView(view); mSectionView.CreateDim(); } } else if (strDimType == "柱标注") { Point viewMinPoint = view.RestrictionBox.MinPoint; Point viewMaxPoint = view.RestrictionBox.MaxPoint; double viewHeight = Math.Abs(viewMaxPoint.Y - viewMinPoint.Y); //顶视图标注; if (CDimTools.GetInstance().IsTwoVectorParallel(vector, xVector) && CDimTools.GetInstance().CompareTwoDoubleValue(viewHeight, mainBeamHeight) >= 0) { CCylinderTopView mTopView = new CCylinderTopView(view, mModel); InitView(view); mTopView.CreateDim(); } //主视图标注; else if (CDimTools.GetInstance().IsTwoVectorParallel(vector, zVector) && CDimTools.GetInstance().CompareTwoDoubleValue(viewHeight, mainBeamHeight) >= 0) { CCylinderFrontView mFrontView = new CCylinderFrontView(view, mModel); InitView(view); mFrontView.CreateDim(); } //剖视图标注; else { CCylinderSectionView mSectionView = new CCylinderSectionView(view, mModel); InitView(view); mSectionView.CreateDim(); } } }