Beispiel #1
0
        static public void DrawRodTwoPoints()
        {
            var keywords = new string[] {
                "LEft", "ЛЕво",
                "RIght", "ПРаво",
                "Diameter", "Диаметр",
                "ANchorage", "АНкеровка"
            };

            Point3d p1 = Input.Point("Выберите первую точку", keywords, SetSides); if (Input.StatusCancel)
            {
                return;
            }
            Point3d p2 = Input.Point("Выберите вторую точку", keywords, SetSides); if (Input.StatusCancel)
            {
                return;
            }
            Point3d p3 = Input.Point("Выберите сторону смещения"); if (Input.StatusCancel)
            {
                return;
            }

            double anchorage = Math.Round(base_anchorage * diameter / round) * round;
            double offset    = Math.Round((min_layer + diameter / 2) / round_5, MidpointRounding.AwayFromZero) * round_5;

            var vp1p2 = UT.GetUniteVector(p1, p2);

            var     pl = new Plane(p1, vp1p2.GetPerpendicularVector());
            Point3d p4 = p3.OrthoProject(pl);

            var vp4p3 = UT.GetUniteVector(p4, p3);

            var A = p1.Add(vp4p3.MultiplyBy(offset)).Add(vp1p2.MultiplyBy(left_anchorage?-anchorage:0));
            var B = p2.Add(vp4p3.MultiplyBy(offset)).Add(vp1p2.MultiplyBy(right_anchorage?anchorage:0));

            using (var th = new TransactionHelper())
            {
                var AB = new Line(A, B);
                AB.SetDatabaseDefaults();
                th.WriteObject(AB);
            }
        }