/// <summary> /// 绘制主梁上螺钉的标记; /// </summary> public void DrawMainPartBoltMark() { CBeamTopViewSetting beamTopViewSetting = CBeamDimSetting.GetInstance().mTopViewSetting; bool bNeedMark = beamTopViewSetting.FindMarkValueByName(CBeamTopViewSetting.mstrBolt); if (!bNeedMark) { return; } 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); } CDimTools.GetInstance().DrawMarkByMacro(); }
/// <summary> /// 绘制法向与Z轴平行的中间零部件上螺钉的标记; /// </summary> public void DrawZNormalMiddleBoltMark() { DrawingHandler drawingHandler = new DrawingHandler(); TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector(); foreach (CMrPart mrPart in mMrPartList) { Vector normal = mrPart.mNormal; double minX = mrPart.GetMinXPoint().X; double maxX = mrPart.GetMaxXPoint().X; if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(0, 0, 1)) || !mrPart.IsHaveBolt()) { continue; } if (CDimTools.GetInstance().CompareTwoDoubleValue(minX, 0) >= 0 || CDimTools.GetInstance().CompareTwoDoubleValue(maxX, 0) <= 0) { continue; } List <CMrBoltArray> mrBoltArrayList = mrPart.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> /// 绘制主梁与Y轴平行时的零件标记; /// </summary> private void DrawYParallelPartMark() { Vector zVector = new Vector(0, 0, 1); DrawingHandler drawingHandler = new DrawingHandler(); TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector(); foreach (CMrPart mrPart in mMrPartList) { Vector normal = mrPart.mNormal; if (!CDimTools.GetInstance().IsTwoVectorParallel(normal, zVector)) { continue; } DS.SelectObject(mrPart.mPartInDrawing); //2.对螺钉组进行标注; List <CMrBoltArray> mrBoltArrayList = mrPart.GetBoltArrayList(); foreach (CMrBoltArray mrBoltArray in mrBoltArrayList) { Vector boltNormal = mrBoltArray.mNormal; if (!CDimTools.GetInstance().IsTwoVectorParallel(boltNormal, zVector)) { continue; } DS.SelectObject(mrBoltArray.mBoltInDrawing); } } CDimTools.GetInstance().DrawMarkByMacro(); }
/// <summary> /// 绘制主梁法向朝X方向的零件标记; /// </summary> private void DrawXVectorPartMark() { DrawingHandler drawingHandler = new DrawingHandler(); TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector(); foreach (CMrPart mrPart in mMrPartList) { Vector vector = mrPart.mNormal; if (!CDimTools.GetInstance().IsTwoVectorParallel(vector, new Vector(0, 0, 1))) { continue; } if (!mrPart.IsHaveBolt()) { continue; } DS.SelectObject(mrPart.mPartInDrawing); //2.绘制螺钉组标记; List <CMrBoltArray> mrBoltArrayList = mrPart.GetBoltArrayList(); foreach (CMrBoltArray mrBoltArray in mrBoltArrayList) { if (CDimTools.GetInstance().IsTwoVectorParallel(mrBoltArray.mNormal, new Vector(0, 0, 1))) { DS.SelectObject(mrBoltArray.mBoltInDrawing); } } } CDimTools.GetInstance().DrawMarkByMacro(); }
/// <summary> /// 绘制主梁法向朝Y方向的零件标记; /// </summary> private void DrawYVectorPartMark() { BuildLeftAndRightPart(); DrawingHandler drawingHandler = new DrawingHandler(); TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector(); foreach (CMrPart mrPart in mMrPartList) { Vector normal = mrPart.mNormal; //如果零件的法向量与Z轴平行; if (CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(0, 0, 1))) { DS.SelectObject(mrPart.mPartInDrawing); List <CMrBoltArray> mrBoltArrayList = mrPart.GetBoltArrayList(); foreach (CMrBoltArray mrBoltArray in mrBoltArrayList) { if (CDimTools.GetInstance().IsTwoVectorParallel(mrBoltArray.mNormal, new Vector(0, 0, 1))) { DS.SelectObject(mrBoltArray.mBoltInDrawing); } } } else if (CDimTools.GetInstance().IsTwoVectorParallel(normal, new Vector(1, 0, 0))) { DS.SelectObject(mrPart.mPartInDrawing); } } CDimTools.GetInstance().DrawMarkByMacro(); }
/// <summary> /// 绘制上翼板左右倾斜时的零件标记; /// </summary> private void DrawPartMarkNormal() { mMrPartList.Remove(mMainBeam); DrawingHandler drawingHandler = new DrawingHandler(); TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector(); foreach (CMrPart mrPart in mMrPartList) { CMrMark mrMark = mrPart.GetBeamDoorFrontViewInfo().GetPartMarkNormal(); if (null == mrMark) { continue; } DS.SelectObject(mrPart.mPartInDrawing); } mMrPartList.Add(mMainBeam); DS.SelectObject(mMainBeam.mPartInDrawing); //绘制主梁上的螺钉标记; DrawMainBeamBoltMark(1); CDimTools.GetInstance().DrawMarkByMacro(); }
/// <summary> /// 绘制主梁法向与Y轴平行时的零件标记; /// </summary> private void DrawYVectorMark() { DrawingHandler drawingHandler = new DrawingHandler(); TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector(); Vector xVector = new Vector(1, 0, 0); Vector yVector = new Vector(0, 1, 0); Vector zVector = new Vector(0, 0, 1); //1.绘制带螺钉的板的零件标记; foreach (CMrPart mrPart in mMrPartList) { double minY = mrPart.GetMinYPoint().Y; double maxY = mrPart.GetMaxYPoint().Y; Vector normal = mrPart.mNormal; //如果法向与Z轴平行并且有螺钉; if (CDimTools.GetInstance().IsTwoVectorParallel(normal, zVector) && mrPart.IsHaveBolt()) { DS.SelectObject(mrPart.mPartInDrawing); //2.绘制螺钉标记; List <CMrBoltArray> mrBoltArrayList = mrPart.GetBoltArrayList(); foreach (CMrBoltArray mrBoltArray in mrBoltArrayList) { if (CDimTools.GetInstance().IsTwoVectorParallel(mrBoltArray.mNormal, zVector)) { DS.SelectObject(mrBoltArray.mBoltInDrawing); } } } //如果法向与Z轴平行没有螺钉(暂且判定为凸起的螺帽); else if (CDimTools.GetInstance().IsTwoVectorParallel(normal, zVector) && !mrPart.IsHaveBolt()) { if (minY > 0 || maxY < 0) { DS.SelectObject(mrPart.mPartInDrawing); } } //如果法向与Y轴平行; else if (CDimTools.GetInstance().IsTwoVectorParallel(normal, yVector)) { if (minY > 0 || maxY < 0) { DS.SelectObject(mrPart.mPartInDrawing); } } } CDimTools.GetInstance().DrawMarkByMacro(); }
/// <summary> /// 绘制零件标记; /// </summary> public void DrawPartMark() { mViewBase.Select(); DrawingHandler drawingHandler = new DrawingHandler(); TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector(); foreach (CMrPart mrPart in mMrPartList) { if (mrPart.IsNeedAddMark()) { DS.SelectObject(mrPart.mPartInDrawing); } } CDimTools.GetInstance().DrawMarkByMacro(); }
/// <summary> /// 绘制檩托板的零件标记; /// </summary> private void DrawMrApronPlateMark() { DrawingHandler drawingHandler = new DrawingHandler(); TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector(); Dictionary <CMrPart, CMrApronPlate> mapPartToMrApronPlate = CMrCylinderDoorFrontManager.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> 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(); }
/// <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> 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> private void InitCylinderGridLine() { if (null == mViewBase) { return; } DrawingObjectEnumerator gridLines = mViewBase.GetAllObjects(typeof(TSD.GridLine)); DrawingHandler drawingHandler = new DrawingHandler(); TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector(); while (gridLines.MoveNext()) { GridLine gridLine = gridLines.Current as GridLine; if (gridLine == null) { continue; } Point startPoint = gridLine.StartLabel.CenterPoint; Point endPoint = gridLine.EndLabel.CenterPoint; Vector gridlineDirectionNormal = new Vector(endPoint.X - startPoint.X, endPoint.Y - startPoint.Y, endPoint.Z - startPoint.Z); if (!CDimTools.GetInstance().IsTwoVectorParallel(gridlineDirectionNormal, new Vector(1, 0, 0))) { continue; } Point intersectionPoint = CDimTools.GetInstance().ComputeTwoLineIntersectPoint(startPoint, endPoint, new Point(0, 0, 0), new Point(0, 1000, 0)); mIntersectionPointList.Add(intersectionPoint); } }
public static void Run(Tekla.Technology.Akit.IScript akit) { try { Model model = new Model(); DrawingHandler drawingHandler = new DrawingHandler(); Drawing drawing = drawingHandler.GetActiveDrawing(); if (drawing != null) { Tekla.Structures.Drawing.StraightDimension sd = null; Tekla.Structures.Drawing.Bolt bolt = null; DrawingObjectEnumerator drawingObjectEnum = drawingHandler.GetDrawingObjectSelector().GetSelected(); while (drawingObjectEnum.MoveNext()) { if (drawingObjectEnum.Current is Tekla.Structures.Drawing.StraightDimension) { sd = (Tekla.Structures.Drawing.StraightDimension)drawingObjectEnum.Current; } if (drawingObjectEnum.Current is Tekla.Structures.Drawing.Bolt) { bolt = (Tekla.Structures.Drawing.Bolt)drawingObjectEnum.Current; } } if (bolt == null) { Tekla.Structures.Drawing.UI.Picker picker = drawingHandler.GetPicker(); DrawingObject drawingObject = null; Tekla.Structures.Drawing.ViewBase viewBase = null; Tekla.Structures.Geometry3d.Point pickedPoint = null; Type[] TypeFilter = new Type[] { typeof(Tekla.Structures.Drawing.Bolt) }; picker.PickObject("pick bolt", TypeFilter, out drawingObject, out viewBase, out pickedPoint); bolt = (Tekla.Structures.Drawing.Bolt)drawingObject; } Tekla.Structures.Model.BoltGroup mBolt = (Tekla.Structures.Model.BoltGroup)model.SelectModelObject((Identifier)bolt.ModelIdentifier); string note = ""; if (mBolt is BoltArray) { BoltArray boltArray = (BoltArray)mBolt; if (boltArray.GetBoltDistYCount() == 1 && boltArray.GetBoltDistY(0) == 0) { note = (mBolt.BoltPositions.Count - 1).ToString() + " No SPACES @ " + boltArray.GetBoltDistX(1).ToString() + " = "; } if (boltArray.GetBoltDistY(0) > 0) { } } else if (mBolt is BoltXYList) { BoltXYList boltXYList = (BoltXYList)mBolt; note = (boltXYList.BoltPositions.Count - 1).ToString() + " STAGGERED No SPACES @ " + (boltXYList.GetBoltDistX(1)).ToString() + " = "; } Tekla.Structures.Drawing.UI.DrawingObjectSelector drawingObjectSelector = drawingHandler.GetDrawingObjectSelector(); drawingObjectSelector.SelectObject(sd); akit.ValueChange("main_frame", "gr_sel_dimension", "1"); akit.Callback("acmd_display_attr_dialog", "dim_dial", "main_frame"); akit.PushButton("dim_set", "dim_dial"); akit.TabChange("dim_dial", "tabWndDimAttrib", "tabMarks"); akit.PushButton("dim_on_off", "dim_dial"); akit.ValueChange("dim_dial", "txtFldPrefix", note); akit.PushButton("dim_modify", "dim_dial"); akit.PushButton("dim_cancel", "dim_dial"); } } catch { } }
/// <summary> /// 绘制零件标记; /// </summary> private void DrawPartMark() { Vector xVector = new Vector(1, 0, 0); Vector zVector = new Vector(0, 0, 1); DrawingHandler drawingHandler = new DrawingHandler(); TSD.UI.DrawingObjectSelector DS = drawingHandler.GetDrawingObjectSelector(); foreach (CMrPart mrPart in mMrPartList) { if (!IsInvalidPart(mrPart)) { continue; } Point minXPoint = mrPart.GetMinXPoint(); Point maxXPoint = mrPart.GetMaxXPoint(); Point minYPoint = mrPart.GetMinYPoint(); Point maxYPoint = mrPart.GetMaxYPoint(); //1.如果零件在坐标系的左侧; if (maxXPoint.X < CCommonPara.mDblError || minXPoint.X > CCommonPara.mDblError) { DS.SelectObject(mrPart.mPartInDrawing); //标注螺钉组的零件标记; List <CMrBoltArray> mrBoltArrayList = mrPart.GetBoltArrayList(); foreach (CMrBoltArray mrBoltArray in mMrBoltArrayList) { Vector boltNormal = mrBoltArray.mNormal; if (!CDimTools.GetInstance().IsTwoVectorParallel(boltNormal, zVector)) { continue; } DS.SelectObject(mrBoltArray.mBoltInDrawing); } } //3.如果零件在坐标系的中间; else { DS.SelectObject(mrPart.mPartInDrawing); //标注螺钉组的零件标记; List <CMrBoltArray> mrBoltArrayList = mrPart.GetBoltArrayList(); foreach (CMrBoltArray mrBoltArray in mrBoltArrayList) { Vector boltNormal = mrBoltArray.mNormal; if (CDimTools.GetInstance().IsTwoVectorParallel(boltNormal, xVector)) { continue; } DS.SelectObject(mrBoltArray.mBoltInDrawing); } } } CDimTools.GetInstance().DrawMarkByMacro(); }
public static void Run(Tekla.Technology.Akit.IScript akit) { try { Model model = new Model(); DrawingHandler drawingHandler = new DrawingHandler(); DrawingObjectEnumerator MyDrawingObjEnum = drawingHandler.GetDrawingObjectSelector().GetSelected(); Tekla.Structures.Model.UI.ModelObjectSelector SelectObjects = new Tekla.Structures.Model.UI.ModelObjectSelector(); Tekla.Structures.Drawing.Weld SelectedWeld = null; if (MyDrawingObjEnum.GetSize() == 1) { while (MyDrawingObjEnum.MoveNext()) { if (MyDrawingObjEnum.Current is Tekla.Structures.Drawing.Weld) { SelectedWeld = MyDrawingObjEnum.Current as Tekla.Structures.Drawing.Weld; ArrayList temp = new ArrayList(); temp.Add(model.SelectModelObject(new Identifier(SelectedWeld.ModelIdentifier.ID))); SelectObjects.Select(temp); BaseWeld SelectedModelWeld = temp[0] as BaseWeld; string strSizeAbove = SelectedModelWeld.SizeAbove.ToString(); string strTypeAbove = SelectedModelWeld.TypeAbove.ToString(); if (strTypeAbove == "WELD_TYPE_FILLET") { strTypeAbove = "10"; // Fillet weld } if (strTypeAbove == "WELD_TYPE_SINGLE_BEVEL_BUTT_WITH_BROAD_ROOT_FACE") { strTypeAbove = "6"; // W1 weld } if (strTypeAbove == "WELD_TYPE_NONE") { strTypeAbove = "0"; // No weld } if (strTypeAbove == "WELD_TYPE_BEVEL_GROOVE_SINGLE_BEVEL_BUTT") { strTypeAbove = "4"; // W6 weld } if (strTypeAbove == "WELD_TYPE_SQUARE_GROOVE_SQUARE_BUTT") { strTypeAbove = "2"; // W3 weld } if (strTypeAbove == "WELD_TYPE_PLUG") { strTypeAbove = "11"; // Plug weld } if (strTypeAbove == "WELD_TYPE_BEVEL_BACKING") { strTypeAbove = "9"; // Seal weld } if (strTypeAbove == "WELD_TYPE_PARTIAL_PENETRATION_SINGLE_BEVEL_BUTT_PLUS_FILLET") { strTypeAbove = "18"; // W1 weld + reinforced } string strContourAbove = SelectedModelWeld.ContourAbove.ToString(); if (strContourAbove == "WELD_CONTOUR_NONE") { strContourAbove = "0"; } if (strContourAbove == "WELD_CONTOUR_FLUSH") { strContourAbove = "1"; } string strSizeBelow = SelectedModelWeld.SizeBelow.ToString(); string strTypeBelow = SelectedModelWeld.TypeBelow.ToString(); if (strTypeBelow == "WELD_TYPE_FILLET") { strTypeBelow = "10"; } if (strTypeBelow == "WELD_TYPE_SINGLE_BEVEL_BUTT_WITH_BROAD_ROOT_FACE") { strTypeBelow = "6"; } if (strTypeBelow == "WELD_TYPE_NONE") { strTypeBelow = "0"; // No weld } if (strTypeBelow == "WELD_TYPE_BEVEL_GROOVE_SINGLE_BEVEL_BUTT") { strTypeBelow = "4"; // W6 weld } if (strTypeBelow == "WELD_TYPE_SQUARE_GROOVE_SQUARE_BUTT") { strTypeBelow = "2"; // W3 weld } if (strTypeBelow == "WELD_TYPE_PLUG") { strTypeBelow = "11"; // Plug weld } if (strTypeBelow == "WELD_TYPE_BEVEL_BACKING") { strTypeBelow = "9"; // Seal weld } if (strTypeBelow == "WELD_TYPE_PARTIAL_PENETRATION_SINGLE_BEVEL_BUTT_PLUS_FILLET") { strTypeBelow = "18"; // W1 weld + reinforced } string strContourBelow = SelectedModelWeld.ContourBelow.ToString(); if (strContourBelow == "WELD_CONTOUR_NONE") { strContourBelow = "0"; } if (strContourBelow == "WELD_CONTOUR_FLUSH") { strContourBelow = "1"; } string strAroundWeld = SelectedModelWeld.AroundWeld.ToString(); if (strAroundWeld == "False") { strAroundWeld = "0"; } if (strAroundWeld == "True") { strAroundWeld = "1"; } string strRefText = SelectedModelWeld.ReferenceText; akit.PushButton("wld_cancel", "Weld Mark Properties"); akit.Callback("acmd_display_attr_dialog", "wld_dial", "main_frame"); akit.ValueChange("wld_dial", "gr_wld_get_menu", "standard"); akit.ValueChange("wld_dial", "w_size", strSizeAbove); akit.ValueChange("wld_dial", "w_size2", strSizeBelow); akit.ValueChange("wld_dial", "w_type", strTypeAbove); akit.ValueChange("wld_dial", "w_type2", strTypeBelow); akit.ValueChange("wld_dial", "w_ftype", strContourAbove); akit.ValueChange("wld_dial", "w_ftype2", strContourBelow); akit.ValueChange("wld_dial", "w_around", strAroundWeld); akit.ValueChange("wld_dial", "w_wld", strRefText); akit.PushButton("wld_apply", "wld_dial"); akit.CommandStart("ail_create_wld", "", "main_frame"); } } Tekla.Structures.Drawing.UI.DrawingObjectSelector drawingObjectSelector = drawingHandler.GetDrawingObjectSelector(); drawingObjectSelector.SelectObject(SelectedWeld); } } catch { } }