huongmdc

Màu nền
Font chữ
Font size
Chiều cao dòng

// bai 1

        bool bIsInCirle(int hCirc, double x, double y)

        {

            double cx, cy, r;

            if (IsCircle(hCirc) == 1)

            {

                cx = Lcad.PropGetFloat(hCirc, Lcad.LC_PROP_CIRCLE_X);

                cy = Lcad.PropGetFloat(hCirc, Lcad.LC_PROP_CIRCLE_Y);

                r = Lcad.PropGetFloat(hCirc, Lcad.LC_PROP_CIRCLE_RAD);

            }

            else

            {

                cx = Lcad.PropGetFloat(hCirc, Lcad.LC_PROP_ARC_X);

                cy = Lcad.PropGetFloat(hCirc, Lcad.LC_PROP_ARC_Y);

                r = Lcad.PropGetFloat(hCirc, Lcad.LC_PROP_ARC_RAD);

            }

            cx = cx - x;

            cy = cy - y;

            double tmp = Math.Sqrt(cx * cx + cy * cy);

            tmp = Math.Round(tmp - r, 3);

            if (tmp == 0)

                return true;

            return false;

        }

        bool GetCenter(int hCirc, out double x, out  double y)

        {

            try

            {

                if (IsCircle(hCirc) == 1)

                {

                    x = Lcad.PropGetFloat(hCirc, Lcad.LC_PROP_CIRCLE_X);

                    y = Lcad.PropGetFloat(hCirc, Lcad.LC_PROP_CIRCLE_Y);

                }

                else

                {

                    x = Lcad.PropGetFloat(hCirc, Lcad.LC_PROP_ARC_X);

                    y = Lcad.PropGetFloat(hCirc, Lcad.LC_PROP_ARC_Y);

                }

            }

            catch (Exception)

            {

                x = y = 0;

                return false;

            }

            return true;

        }

        double x0, y0, x1, y1;

        int kt = 0;

        double cx1, cx2, cy1, cy2;

        void AddText(int hBlock, string szText, double X, double Y, int Align, double H, double WScale, double RotAngle, double Oblique)

        {

            int hTmp = Lcad.BlockAddTextWin2(hBlock, szText, X, Y, Align, H, WScale, RotAngle, Oblique);

            Lcad.PropPutInt(hTmp, Lcad.LC_PROP_TEXTW_DX, 0);

            Lcad.PropPutInt(hTmp, Lcad.LC_PROP_TEXTW_DY, 10);

        }

        int IsCircle(int hEnt)

        {

            int iType = Lcad.PropGetInt(hEnt, Lcad.LC_PROP_ENT_TYPE);

            if (iType == Lcad.LC_ENT_CIRCLE)

                return 1;

            if (iType == Lcad.LC_ENT_ARC)

                return 2;

            return 0;

        }

        int hEnt1, hEnt2, hLineTan;

        private void aToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Lcad.WndSetFocus(hLcWnd);

            double x0, y0;

            int px, py;

            if (Lcad.WndGetPoint(hLcWnd, "Nhap doi tuong thu nhat: ", Lcad.LC_SNAP_ALL, 0, out x0, out y0))

            {

                Lcad.WndCoordFromDrw(hLcWnd, x0, y0, out px, out py);

                hEnt1 = Lcad.WndGetEntByPoint(hLcWnd, px, py);

                if (IsCircle(hEnt1) == 0)

                {

                    MessageBox.Show("Ban phai chon doi tuong la duong tron hoac cung tron");

                    return;

                }

                if (Lcad.WndGetPoint(hLcWnd, "Nhap doi tuong thu hai: ", Lcad.LC_SNAP_ALL, 0, out x0, out y0))

                {

                    Lcad.WndCoordFromDrw(hLcWnd, x0, y0, out px, out py);

                    hEnt2 = Lcad.WndGetEntByPoint(hLcWnd, px, py);

                    if (IsCircle(hEnt1) == 0)

                    {

                        MessageBox.Show("Ban phai chon doi tuong la duong tron hoac cung tron");

                        return;

                    }

                    hBlock = Lcad.DrwGetFirstObject(hDrw, Lcad.LC_OBJ_BLOCK);

                    hLineTan = Lcad.BlockAddLineTan(hBlock, hEnt1, hEnt2, 0);

                    Lcad.DrwRegenViews(hDrw, hLineTan);

                    Lcad.WndExeCommand(hLcWnd, Lcad.LC_CMD_EXTEND, 0);

                }

            }

        }

        private void bToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Lcad.WndSetFocus(hLcWnd);

            hBlock = Lcad.DrwGetFirstObject(hDrw, Lcad.LC_OBJ_BLOCK);

            x0 = Lcad.PropGetFloat(hLineTan, Lcad.LC_PROP_LINE_X0);

            y0 = Lcad.PropGetFloat(hLineTan, Lcad.LC_PROP_LINE_Y0);

            x1 = Lcad.PropGetFloat(hLineTan, Lcad.LC_PROP_LINE_X1);

            y1 = Lcad.PropGetFloat(hLineTan, Lcad.LC_PROP_LINE_Y1);

            if (bIsInCirle(hEnt1, x0, y0))

            {

                GetCenter(hEnt1, out cx1, out cy1);

                Lcad.BlockAddLine(hBlock, cx1, cy1, x0, y0);

                GetCenter(hEnt2, out cx2, out cy2);

                Lcad.BlockAddLine(hBlock, cx2, cy2, x1, y1);

                Lcad.BlockAddLine(hBlock, cx1, cy1, cx2, cy2);

            }

            else

            {

                kt = 1;

                GetCenter(hEnt1, out cx1, out cy1);

                Lcad.BlockAddLine(hBlock, cx1, cy1, x1, y1);

                GetCenter(hEnt2, out cx2, out cy2);

                Lcad.BlockAddLine(hBlock, cx2, cy2, x0, y0);

                Lcad.BlockAddLine(hBlock, cx1, cy1, cx2, cy2);

            }

            Lcad.DrwRegenViews(hDrw, 0);

            Lcad.WndExeCommand(hLcWnd, Lcad.LC_CMD_EXTEND, 0);

        }

        private void cToolStripMenuItem_Click(object sender, EventArgs e)

        {

            Lcad.WndSetFocus(hLcWnd);

            hBlock = Lcad.DrwGetFirstObject(hDrw, Lcad.LC_OBJ_BLOCK);

            int hTextStyle = Lcad.DrwAddTextStyle(hDrw, "Hoangvankhieu", "Times New Roman");

            Lcad.PropPutHandle(hDrw, Lcad.LC_PROP_DRW_TEXTSTYLE, hTextStyle);

            if (kt == 0)

            {

                AddText(hBlock, "M1", x0, y0, Lcad.LC_TA_CENTER, -15, 1, 0, 0);

                AddText(hBlock, "M2", x1, y1, Lcad.LC_TA_CENTER, -15, 1, 0, 0);

                AddText(hBlock, "C1", cx1, cy1, Lcad.LC_TA_CENTER, -15, 1, 0, 0);

                AddText(hBlock, "C2", cx2, cy2, Lcad.LC_TA_CENTER, -15, 1, 0, 0);

            }

            else

            {

                AddText(hBlock, "M1", x1, y1, Lcad.LC_TA_CENTER, -15, 1, 0, 0);

                AddText(hBlock, "M2", x0, y0, Lcad.LC_TA_CENTER, -15, 1, 0, 0);

                AddText(hBlock, "C1", cx1, cy1, Lcad.LC_TA_CENTER, -15, 1, 0, 0);

                AddText(hBlock, "C2", cx2, cy2, Lcad.LC_TA_CENTER, -15, 1, 0, 0);

            }

            Lcad.DrwRegenViews(hDrw, 0);

            Lcad.WndExeCommand(hLcWnd, Lcad.LC_CMD_EXTEND, 0);

        }

Bạn đang đọc truyện trên: Truyen2U.Pro

#huong