private void WeldingSteps(ModelObject mainPart, Part secondPart, Point startPt, Point endPt) { if (mainPart == null) { return; } if (secondPart == null) { return; } PolygonWeld polygonWeld = new PolygonWeld(); polygonWeld.MainObject = mainPart; polygonWeld.SecondaryObject = secondPart; polygonWeld.Polygon.Points.Add(startPt); polygonWeld.Polygon.Points.Add(endPt); polygonWeld.ConnectAssemblies = false; polygonWeld.ShopWeld = true; polygonWeld.AroundWeld = false; polygonWeld.TypeAbove = PolygonWeld.WeldTypeEnum.WELD_TYPE_FILLET; polygonWeld.TypeBelow = PolygonWeld.WeldTypeEnum.WELD_TYPE_FILLET; polygonWeld.SizeAbove = -100; polygonWeld.SizeBelow = -100; polygonWeld.Insert(); }
public static dynamic GetTSObject(PolygonWeld dynObject) { if (dynObject is null) { return(null); } return(dynObject.teklaObject); }
public override bool Run(List <InputDefinition> Input) { try { // 오버라이드 된 DefineInput에서 List를 가져옴 // purlin = 중도리 지붕을 지탱하는 골조 // flange = 플랜지 파이프를 연결하기 위한 배관? Beam Purlin1 = (Beam)_model.SelectModelObject((Identifier)Input[0].GetInput()); Beam Purlin2 = (Beam)_model.SelectModelObject((Identifier)Input[1].GetInput()); Beam OFlange = (Beam)_model.SelectModelObject((Identifier)Input[2].GetInput()); Beam Web = (Beam)_model.SelectModelObject((Identifier)Input[3].GetInput()); Beam IFlange = (Beam)_model.SelectModelObject((Identifier)Input[4].GetInput()); // 초기값 체크 GetValuesFromDialog(); double WebThick = 0.0; double IFlangeWidth = 0.0; double IFlangeThick = 0.0; double OFlangeThick = 0.0; Web.GetReportProperty("WIDTH", ref WebThick); OFlange.GetReportProperty("WIDTH", ref OFlangeThick); IFlange.GetReportProperty("WIDTH", ref IFlangeThick); IFlange.GetReportProperty("HEIGHT", ref IFlangeWidth); if (IsDefaultValue(_PlateWidth) || _PlateWidth == 0) { _PlateWidth = (IFlangeWidth - WebThick) * 0.5; } if (IsDefaultValue(_PlateLength) || _PlateLength == 0) { _PlateLength = (IFlangeWidth - WebThick) * 0.5; } CoordinateSystem WebSys = Web.GetCoordinateSystem(); // 평면(Web)과 선(purlin1의 시작과 끝점)이 만나는 교차점 T3D.Point TopCenter = T3D.Intersection.LineToPlane(new Line(Purlin1.StartPoint, Purlin1.EndPoint), new GeometricPlane(WebSys.Origin, WebSys.AxisX, WebSys.AxisY)); // 실제 좌표점(x,y,z) CoordinateSystem WorkSystem = new CoordinateSystem(TopCenter, WebSys.AxisX.Cross(WebSys.AxisY), WebSys.AxisY); // CoordinateSystem의 실좌표를 Plane 변경 _model.GetWorkPlaneHandler().SetCurrentTransformationPlane(new TransformationPlane(WorkSystem)); Purlin1.Select(); Purlin2.Select(); Web.Select(); OFlange.Select(); IFlange.Select(); CoordinateSystem PurSys = Purlin1.GetCoordinateSystem(); T3D.Point TopClipCenter = T3D.Intersection.LineToPlane(new Line(OFlange.StartPoint, OFlange.EndPoint), new GeometricPlane(PurSys.Origin, PurSys.AxisX, PurSys.AxisY)); T3D.Point BottCenter = T3D.Intersection.LineToPlane(new Line(IFlange.StartPoint, IFlange.EndPoint), new GeometricPlane(PurSys.Origin, PurSys.AxisX, PurSys.AxisY)); T3D.Point LeftAngleFirstPoint = new T3D.Point(-_UpperHorizontalDistance, _UpperVerticalDistance, 0); T3D.Point LeftAngleSecondPoint = new T3D.Point(-_LowerHorizontalDistance, BottCenter.Y - IFlangeThick + _LowerVerticalDistance, 0); T3D.Point RightAngleFirstPoint = new T3D.Point(_UpperHorizontalDistance, _UpperVerticalDistance, 0); T3D.Point RightAngleSecondPoint = new T3D.Point(_LowerHorizontalDistance, BottCenter.Y - IFlangeThick + _LowerVerticalDistance, 0); Beam LeftAngle = new Beam(); Beam RightAngle = new Beam(); Beam TopClip = new Beam(); ContourPlate LeftPlate = new ContourPlate(); ContourPlate RightPlate = new ContourPlate(); TopClip.StartPoint = new T3D.Point(-_TopClipLength * 0.5, TopClipCenter.Y + OFlangeThick, 0); TopClip.EndPoint = new T3D.Point(_TopClipLength * 0.5, TopClipCenter.Y + OFlangeThick, 0); if (PurSys.AxisX.GetNormal() == new Vector(1, 0, 0) && PurSys.AxisY.GetNormal() == new Vector(0, 1, 0)) { LeftAngle.StartPoint = LeftAngleSecondPoint; LeftAngle.EndPoint = LeftAngleFirstPoint; RightAngle.StartPoint = RightAngleFirstPoint; RightAngle.EndPoint = RightAngleSecondPoint; LeftAngle.Position.Plane = Position.PlaneEnum.LEFT; LeftAngle.Position.Rotation = Position.RotationEnum.BELOW; LeftAngle.Position.Depth = Position.DepthEnum.BEHIND; RightAngle.Position.Plane = Position.PlaneEnum.LEFT; RightAngle.Position.Rotation = Position.RotationEnum.BELOW; RightAngle.Position.Depth = Position.DepthEnum.BEHIND; TopClip.Position.Plane = Position.PlaneEnum.LEFT; TopClip.Position.Rotation = Position.RotationEnum.FRONT; TopClip.Position.Depth = Position.DepthEnum.BEHIND; LeftPlate.Position.Depth = Position.DepthEnum.FRONT; RightPlate.Position.Depth = Position.DepthEnum.FRONT; } else { LeftAngle.StartPoint = LeftAngleFirstPoint; LeftAngle.EndPoint = LeftAngleSecondPoint; RightAngle.StartPoint = RightAngleFirstPoint; RightAngle.EndPoint = RightAngleSecondPoint; LeftAngle.Position.Plane = Position.PlaneEnum.RIGHT; LeftAngle.Position.Rotation = Position.RotationEnum.TOP; LeftAngle.Position.Depth = Position.DepthEnum.FRONT; RightAngle.Position.Plane = Position.PlaneEnum.RIGHT; RightAngle.Position.Rotation = Position.RotationEnum.FRONT; RightAngle.Position.Depth = Position.DepthEnum.FRONT; TopClip.Position.Plane = Position.PlaneEnum.LEFT; TopClip.Position.Rotation = Position.RotationEnum.FRONT; TopClip.Position.Depth = Position.DepthEnum.FRONT; LeftPlate.Position.Depth = Position.DepthEnum.BEHIND; RightPlate.Position.Depth = Position.DepthEnum.BEHIND; } LeftAngle.Profile.ProfileString = _FlangeProfile; LeftAngle.Material.MaterialString = _FlangeMaterial; LeftAngle.Class = _FlangeClass; LeftAngle.Name = _FlangeName; LeftAngle.Insert(); RightAngle.Profile.ProfileString = _FlangeProfile; RightAngle.Material.MaterialString = _FlangeMaterial; RightAngle.Class = _FlangeClass; RightAngle.Name = _FlangeName; RightAngle.Insert(); double BraceWidth = 0.0; double BraceThickness = 0.0; RightAngle.GetReportProperty("WIDTH", ref BraceWidth); RightAngle.GetReportProperty("PROFILE.FLANGE_THICKNESS_1", ref BraceThickness); double BoltGauge = (BraceWidth + BraceThickness) * 0.5; LeftAngle.Position.PlaneOffset = -BoltGauge; LeftAngle.StartPointOffset.Dx = _UpperBoltHorizontalDistance; LeftAngle.EndPointOffset.Dx = _LowerBoltHorizontalDistance; LeftAngle.Modify(); RightAngle.Position.PlaneOffset = -BoltGauge; RightAngle.StartPointOffset.Dx = -_LowerBoltHorizontalDistance; RightAngle.EndPointOffset.Dx = _UpperBoltHorizontalDistance; RightAngle.Modify(); TopClip.Profile.ProfileString = "PL" + _TopClipThickness + "*" + _TopClipWidth; TopClip.Material.MaterialString = _TopClipMaterial; TopClip.Name = _TopClipName; TopClip.Insert(); Point LeftPlatePoint1 = new Point(BottCenter.X - WebThick * 0.5, BottCenter.Y, 0); Point LeftPlatePoint2 = new Point(BottCenter.X - WebThick * 0.5, BottCenter.Y + _PlateLength, 0); Point LeftPlatePoint3 = new Point(BottCenter.X - WebThick * 0.5 - _PlateWidth, BottCenter.Y + _PlateLength, 0); Point LeftPlatePoint4 = new Point(BottCenter.X - WebThick * 0.5 - _PlateWidth, BottCenter.Y, 0); ContourPoint LeftPlateContourPoint1 = new ContourPoint(LeftPlatePoint1, new Chamfer(30, 30, Chamfer.ChamferTypeEnum.CHAMFER_LINE)); ContourPoint LeftPlateContourPoint2 = new ContourPoint(LeftPlatePoint2, new Chamfer()); ContourPoint LeftPlateContourPoint3 = new ContourPoint(LeftPlatePoint3, new Chamfer()); ContourPoint LeftPlateContourPoint4 = new ContourPoint(LeftPlatePoint4, new Chamfer()); LeftPlate.AddContourPoint(LeftPlateContourPoint1); LeftPlate.AddContourPoint(LeftPlateContourPoint2); LeftPlate.AddContourPoint(LeftPlateContourPoint3); LeftPlate.AddContourPoint(LeftPlateContourPoint4); LeftPlate.Material.MaterialString = _PlateMaterial; LeftPlate.Profile.ProfileString = "PL" + _PlateThickness.ToString(); LeftPlate.Name = _PlateName; LeftPlate.Insert(); Point RightPlatePoint1 = new Point(BottCenter.X + WebThick * 0.5, BottCenter.Y, 0); Point RightPlatePoint2 = new Point(RightPlatePoint1.X + _PlateWidth, RightPlatePoint1.Y, 0); Point RightPlatePoint3 = new Point(RightPlatePoint2.X, RightPlatePoint2.Y + _PlateLength, 0); Point RightPlatePoint4 = new Point(RightPlatePoint3.X - _PlateWidth, RightPlatePoint3.Y, 0); ContourPoint RightPlateContourPoint1 = new ContourPoint(RightPlatePoint1, new Chamfer(30, 30, Chamfer.ChamferTypeEnum.CHAMFER_LINE)); ContourPoint RightPlateContourPoint2 = new ContourPoint(RightPlatePoint2, new Chamfer()); ContourPoint RightPlateContourPoint3 = new ContourPoint(RightPlatePoint3, new Chamfer()); ContourPoint RightPlateContourPoint4 = new ContourPoint(RightPlatePoint4, new Chamfer()); RightPlate.AddContourPoint(RightPlateContourPoint1); RightPlate.AddContourPoint(RightPlateContourPoint2); RightPlate.AddContourPoint(RightPlateContourPoint3); RightPlate.AddContourPoint(RightPlateContourPoint4); RightPlate.Material.MaterialString = _PlateMaterial; RightPlate.Profile.ProfileString = "PL" + _PlateThickness.ToString(); RightPlate.Name = _PlateName; RightPlate.Insert(); Beam LeftPurlin = Purlin1; Beam RightPurlin = Purlin2; if ((Purlin1.StartPoint.X - Purlin2.StartPoint.X) > 1 || (Purlin1.StartPoint.Y - Purlin2.StartPoint.Y) > 1) { RightPurlin = Purlin1; LeftPurlin = Purlin2; } Weld LeftPlateToIFlange = new Weld(); LeftPlateToIFlange.MainObject = IFlange; LeftPlateToIFlange.SecondaryObject = LeftPlate; LeftPlateToIFlange.ShopWeld = true; LeftPlateToIFlange.Insert(); Weld LeftPlateToWeb = new Weld(); LeftPlateToWeb.MainObject = Web; LeftPlateToWeb.SecondaryObject = LeftPlate; LeftPlateToWeb.ShopWeld = true; LeftPlateToWeb.Insert(); Weld RightPlateToIFlange = new Weld(); RightPlateToIFlange.MainObject = IFlange; RightPlateToIFlange.SecondaryObject = RightPlate; RightPlateToIFlange.ShopWeld = true; RightPlateToIFlange.Insert(); Weld RightPlateToWeb = new Weld(); RightPlateToWeb.MainObject = Web; RightPlateToWeb.SecondaryObject = RightPlate; RightPlateToWeb.ShopWeld = true; RightPlateToWeb.Insert(); PolygonWeld ClipToFlange = new PolygonWeld(); ClipToFlange.TypeAbove = BaseWeld.WeldTypeEnum.WELD_TYPE_FILLET; ClipToFlange.TypeBelow = BaseWeld.WeldTypeEnum.WELD_TYPE_FILLET; ClipToFlange.SizeAbove = _ClipWeldSize; ClipToFlange.SizeBelow = _ClipWeldSize; ClipToFlange.MainObject = OFlange; ClipToFlange.SecondaryObject = TopClip; ClipToFlange.ShopWeld = true; ClipToFlange.Polygon.Points.Add(TopClip.StartPoint); ClipToFlange.Polygon.Points.Add(TopClip.EndPoint); ClipToFlange.Insert(); // Bolting Brace with Plate or Purlin BoltArray UpperLeftBolt = new BoltArray(); UpperLeftBolt.PartToBoltTo = LeftPurlin; UpperLeftBolt.PartToBeBolted = LeftAngle; UpperLeftBolt.FirstPosition = LeftAngle.StartPoint; UpperLeftBolt.SecondPosition = LeftAngle.EndPoint; UpperLeftBolt.AddBoltDistX(0.0); UpperLeftBolt.AddBoltDistY(0.0); UpperLeftBolt.BoltSize = _BraceBoltSize; UpperLeftBolt.Tolerance = 0.0625 * 25.4; UpperLeftBolt.BoltStandard = _BraceBoltStandard; UpperLeftBolt.BoltType = BoltGroup.BoltTypeEnum.BOLT_TYPE_SITE; UpperLeftBolt.CutLength = 76.2; UpperLeftBolt.Bolt = true; UpperLeftBolt.Position.Rotation = Position.RotationEnum.FRONT; BoltArray LowerLeftBolt = new BoltArray(); LowerLeftBolt.PartToBoltTo = LeftPlate; LowerLeftBolt.PartToBeBolted = LeftAngle; LowerLeftBolt.FirstPosition = LeftAngle.EndPoint; LowerLeftBolt.SecondPosition = LeftAngle.StartPoint; LowerLeftBolt.AddBoltDistX(0.0); LowerLeftBolt.AddBoltDistY(0.0); LowerLeftBolt.BoltSize = _BraceBoltSize; LowerLeftBolt.BoltStandard = _BraceBoltStandard; LowerLeftBolt.Tolerance = 0.0625 * 25.4; LowerLeftBolt.BoltType = BoltGroup.BoltTypeEnum.BOLT_TYPE_SITE; LowerLeftBolt.CutLength = 76.2; LowerLeftBolt.Bolt = true; LowerLeftBolt.Position.Rotation = Position.RotationEnum.FRONT; BoltArray UpperRightBolt = new BoltArray(); UpperRightBolt.PartToBoltTo = RightPurlin; UpperRightBolt.PartToBeBolted = RightAngle; UpperRightBolt.FirstPosition = RightAngle.EndPoint; UpperRightBolt.SecondPosition = RightAngle.StartPoint; UpperRightBolt.AddBoltDistX(0.0); UpperRightBolt.AddBoltDistY(0.0); UpperRightBolt.BoltSize = _BraceBoltSize; UpperRightBolt.Tolerance = 0.0625 * 25.4; UpperRightBolt.BoltStandard = _BraceBoltStandard; UpperRightBolt.BoltType = BoltGroup.BoltTypeEnum.BOLT_TYPE_SITE; UpperRightBolt.CutLength = 76.2; UpperRightBolt.Bolt = true; UpperRightBolt.Position.Rotation = Position.RotationEnum.FRONT; BoltArray LowerRightBolt = new BoltArray(); LowerRightBolt.PartToBoltTo = RightPlate; LowerRightBolt.PartToBeBolted = RightAngle; LowerRightBolt.FirstPosition = RightAngle.StartPoint; LowerRightBolt.SecondPosition = RightAngle.EndPoint; LowerRightBolt.AddBoltDistX(0.0); LowerRightBolt.AddBoltDistY(0.0); LowerRightBolt.BoltSize = _BraceBoltSize; LowerRightBolt.Tolerance = 0.0625 * 25.4; LowerRightBolt.BoltStandard = _BraceBoltStandard; LowerRightBolt.BoltType = BoltGroup.BoltTypeEnum.BOLT_TYPE_SITE; LowerRightBolt.CutLength = 76.2; LowerRightBolt.Bolt = true; LowerRightBolt.Position.Rotation = Position.RotationEnum.FRONT; // Bolting ClipPlate with purlin BoltArray ClipBolts1 = new BoltArray(); ClipBolts1.PartToBoltTo = LeftPurlin; ClipBolts1.PartToBeBolted = TopClip; ClipBolts1.FirstPosition = TopClip.StartPoint; ClipBolts1.SecondPosition = TopClip.EndPoint; ClipBolts1.StartPointOffset.Dx = 31.75; ClipBolts1.AddBoltDistX(0); ClipBolts1.AddBoltDistY(76.2); ClipBolts1.StartPointOffset.Dy = 76.2; ClipBolts1.EndPointOffset.Dy = 76.2; ClipBolts1.BoltSize = _ClipBoltSize; ClipBolts1.Tolerance = 0.0625 * 25.4; ClipBolts1.BoltStandard = _CliptBoltStandard; ClipBolts1.BoltType = BoltGroup.BoltTypeEnum.BOLT_TYPE_SITE; ClipBolts1.CutLength = 76.2; ClipBolts1.Bolt = true; ClipBolts1.Position.Rotation = Position.RotationEnum.FRONT; BoltArray ClipBolts2 = new BoltArray(); ClipBolts2.PartToBoltTo = RightPurlin; ClipBolts2.PartToBeBolted = TopClip; ClipBolts2.FirstPosition = TopClip.StartPoint; ClipBolts2.SecondPosition = TopClip.EndPoint; ClipBolts2.StartPointOffset.Dx = _TopClipLength - 31.75; ClipBolts2.AddBoltDistX(0); ClipBolts2.AddBoltDistY(76.2); ClipBolts2.StartPointOffset.Dy = 76.2; ClipBolts2.EndPointOffset.Dy = 76.2; ClipBolts2.BoltSize = _ClipBoltSize; ClipBolts2.Tolerance = 0.0625 * 25.4; ClipBolts2.BoltStandard = _CliptBoltStandard; ClipBolts2.BoltType = BoltGroup.BoltTypeEnum.BOLT_TYPE_SITE; ClipBolts2.CutLength = 76.2; ClipBolts2.Bolt = true; ClipBolts2.Position.Rotation = Position.RotationEnum.FRONT; if (PurSys.AxisX.GetNormal() == new Vector(1, 0, 0) && PurSys.AxisX.GetNormal() == new Vector(0, 1, 0)) { UpperLeftBolt.FirstPosition = LeftAngle.EndPoint; UpperLeftBolt.SecondPosition = LeftAngle.StartPoint; UpperLeftBolt.Position.Rotation = Position.RotationEnum.BACK; LowerLeftBolt.FirstPosition = LeftAngle.StartPoint; LowerLeftBolt.SecondPosition = LeftAngle.EndPoint; LowerLeftBolt.Position.Rotation = Position.RotationEnum.BACK; UpperRightBolt.FirstPosition = RightAngle.StartPoint; UpperRightBolt.SecondPosition = RightAngle.EndPoint; UpperRightBolt.Position.Rotation = Position.RotationEnum.BACK; LowerRightBolt.FirstPosition = RightAngle.StartPoint; LowerRightBolt.SecondPosition = RightAngle.EndPoint; LowerRightBolt.Position.Rotation = Position.RotationEnum.BACK; ClipBolts1.Position.Rotation = Position.RotationEnum.BACK; ClipBolts2.Position.Rotation = Position.RotationEnum.BACK; } UpperLeftBolt.Insert(); LowerLeftBolt.Insert(); UpperRightBolt.Insert(); LowerRightBolt.Insert(); ClipBolts1.Insert(); ClipBolts2.Insert(); } catch (Exception e) { MessageBox.Show(e.ToString()); } return(true); }