Ejemplo n.º 1
0
 private void DeleteRowCircle()
 {
     if (mgCircles.GetListCircles().Count == 0)
     {
         BS_LiteCAD.ShowNotifyAutoHide(elementHost1, "Không có lỗ khoan");
     }
     else
     {
         List <Circle> listCircle  = mgCircles.GetListCircleOfFirstRow();
         int           hBlockModel = Lcad.PropGetHandle(hDrw, Lcad.LC_PROP_DRW_BLOCK_MODEL);
         Lcad.BlockUnselect(hBlockModel);
         //xóa hàng lỗ khoan mới
         mgCircles.RemoveListCircles(listCircle);
         foreach (var circle in listCircle)
         {
             Lcad.BlockSelectEnt(hBlockModel, circle.GetHandle(), true);
             Lcad.BlockSelErase(hBlockModel);
             Lcad.BlockUnselect(hBlockModel);
         }
         //thêm lưới tọa độ
         if (this.banVeChinh.HienKhoangCach)   //sau them dk vao day
         {
             Lcad.LayerClear(layerLuoiKichThuoc, hBlockModel);
             DungLuoiKichThuoc();
         }
         //load lại
         Lcad.DrwRegenViews(hDrw, 0);
         Lcad.WndExeCommand(hWnd, Lcad.LC_CMD_ZOOM_EXT, 0);
     }
 }
Ejemplo n.º 2
0
 private void AddRowCircle()
 {
     if (mgCircles.GetListCircles().Count == 0)
     {
         BS_LiteCAD.ShowNotifyAutoHide(elementHost1, "Không có lỗ khoan");
     }
     else
     {
         List <Circle> listCircle    = mgCircles.GetListCircleOfFirstRow();
         List <Circle> listNewCircle = new List <Circle>();
         int           hBlockModel   = Lcad.PropGetHandle(hDrw, Lcad.LC_PROP_DRW_BLOCK_MODEL);
         Lcad.BlockUnselect(hBlockModel);
         //thêm hàng lỗ khoan mới
         foreach (var circle in listCircle)
         {
             int newHEnt = Lcad.BlockAddClone(hBlockModel, circle.GetHandle());
             Lcad.BlockSelectEnt(hBlockModel, newHEnt, true);
             Lcad.BlockSelMove(hBlockModel, 0, mgCircles.GetDeltaY(), false, true);
             Lcad.BlockUnselect(hBlockModel);
             listNewCircle.Add(new Circle(newHEnt));
         }
         mgCircles.AddListCircle(listNewCircle);
         //thêm lưới tọa độ
         if (this.banVeChinh.HienKhoangCach)
         {
             Lcad.LayerClear(layerLuoiKichThuoc, hBlockModel);
             DungLuoiKichThuoc();
         }
         //load lại
         Lcad.DrwRegenViews(hDrw, 0);
         Lcad.WndExeCommand(hWnd, Lcad.LC_CMD_ZOOM_EXT, 0);
     }
 }
Ejemplo n.º 3
0
 //tính toán khoanh vùng
 private void KhoanhVungLoKhoan()
 {
     if (mgCircles.GetListCircles().Count == 0)
     {
         BS_LiteCAD.ShowNotifyAutoHide(elementHost1, "Không có lỗ khoan");
     }
     else
     {
         double xMax, xMin, yMax, yMin;
         if (xFirstPoint > xLastPoint)
         {
             xMax = xFirstPoint;
             xMin = xLastPoint;
         }
         else
         {
             xMax = xLastPoint;
             xMin = xFirstPoint;
         }
         if (yFirstPoint > yLastPoint)
         {
             yMax = yFirstPoint;
             yMin = yLastPoint;
         }
         else
         {
             yMax = yLastPoint;
             yMin = yFirstPoint;
         }
         List <Circle> listCircle       = mgCircles.GetListCircles();
         List <Circle> listRemoveCircle = new List <Circle>();
         int           hBlockModel      = Lcad.PropGetHandle(hDrw, Lcad.LC_PROP_DRW_BLOCK_MODEL);
         foreach (Circle value in listCircle)
         {
             if (value.GetX() > xMax || value.GetX() < xMin || value.GetY() > yMax || value.GetY() < yMin)
             {
                 listRemoveCircle.Add(value);
                 Lcad.BlockSelectEnt(hBlockModel, value.GetHandle(), true);
                 Lcad.BlockSelErase(hBlockModel);
                 Lcad.BlockUnselect(hBlockModel);
             }
         }
         //xóa danh sách nằm ngoài
         mgCircles.RemoveListCircles(listRemoveCircle);
         //vẽ lại lưới tọa độ
         if (this.banVeChinh.HienKhoangCach)   //sau them dk vao day
         {
             Lcad.LayerClear(layerLuoiKichThuoc, hBlockModel);
             DungLuoiKichThuoc();
         }
         //load lại
         Lcad.DrwRegenViews(hDrw, 0);
         Lcad.WndExeCommand(hWnd, Lcad.LC_CMD_ZOOM_EXT, 0);
         SendKeys.Send("{ESC}");
     }
 }
Ejemplo n.º 4
0
        private void barButtonItem_Move_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            //select toàn bộ lỗ khoan
            int           hBlockModel = Lcad.PropGetHandle(hDrw, Lcad.LC_PROP_DRW_BLOCK_MODEL);
            int           hEnt        = Lcad.BlockGetFirstEnt(hBlockModel);
            List <Circle> listCircles = new List <Circle>();

            while (hEnt != 0)
            {
                int entType = Lcad.PropGetInt(hEnt, Lcad.LC_PROP_ENT_TYPE);
                if (!Lcad.PropGetBool(hEnt, Lcad.LC_PROP_ENT_DELETED))   //kiểm tra xem ent bị xóa hay không
                {
                    if (entType == Lcad.LC_ENT_CIRCLE)
                    {
                        Lcad.BlockSelectEnt(hBlockModel, hEnt, true);
                    }
                    //cách khác (dùng key, vì cái gì đấy mà ko lấy được LC_PROP_ENT_TYPE) - do thư viện....
                    else
                    {
                        int _key = Lcad.PropGetInt(hEnt, Lcad.LC_PROP_ENT_KEY);
                        if (_key == keyCircle)
                        {
                            Lcad.BlockSelectEnt(hBlockModel, hEnt, true);
                        }
                    }
                }
                hEnt = Lcad.BlockGetNextEnt(hBlockModel, hEnt);
            }
            //chạy hàm move
            bool flag = Lcad.WndExeCommand(hWnd, Lcad.LC_CMD_MOVE, 0);

            if (flag)
            {
                mgCircles = new ManageCircle();
                GetCirlcesFromAutocadFile();
                if (this.banVeChinh.HienKhoangCach)
                {
                    DungLuoiKichThuoc();
                }
            }
        }
Ejemplo n.º 5
0
        private void MouseDblClkProc_XayDungLuoiLoMin(int hWnd, int Button, int Flags, int Xwin, int Ywin, double Xdrw, double Ydrw)
        {
            int hBlockModel = Lcad.PropGetHandle(hDrw, Lcad.LC_PROP_DRW_BLOCK_MODEL);

            if (mgCircles == null)
            {
                mgCircles = new ManageCircle();
            }
            else
            {
                Lcad.LayerClear(layerLoMin, hBlockModel);
                Lcad.LayerClear(layerLuoiKichThuoc, hBlockModel);
                mgCircles = new ManageCircle();
            }
            int hEntCircle = Lcad.BlockAddCircle(hBlockModel, Xdrw, Ydrw, banKinh, false);

            Lcad.PropPutInt(hEntCircle, Lcad.LC_PROP_ENT_KEY, keyCircle);
            Lcad.PropPutStr(hEntCircle, Lcad.LC_PROP_ENT_LAYER, "LoMin");
            Lcad.BlockUnselect(hBlockModel);
            //tạo danh sách cột đầu tiên
            List <Circle> listCotDau = new List <Circle>();
            Circle        root       = new Circle(hEntCircle);

            listCotDau.Add(root);
            //tạo cột đầu tiên từ điểm gốc (số điểm trong cột ứng với số hàng trừ đi điểm gốc)
            for (int i = 0; i < soHang - 1; i++)
            {
                int newHEnt = Lcad.BlockAddClone(hBlockModel, listCotDau[i].GetHandle());
                Lcad.PropPutInt(newHEnt, Lcad.LC_PROP_ENT_KEY, keyCircle);
                Lcad.BlockSelectEnt(hBlockModel, newHEnt, true);
                Lcad.BlockSelMove(hBlockModel, 0, khoangCachHang, false, true);
                Lcad.BlockUnselect(hBlockModel);
                listCotDau.Add(new Circle(newHEnt));
            }
            mgCircles.AddListCircle(listCotDau);
            //thêm các cột còn lại (ứng với số cột trừ đi cột đầu)
            for (int i = 0; i < soCot - 1; i++)
            {
                List <Circle> listCotGanNhat = new List <Circle>();
                List <Circle> listCotMoi     = new List <Circle>();
                if (khoangCachCot > 0)
                {
                    listCotGanNhat = mgCircles.GetListCirleOfLastColumn();
                }
                else
                {
                    listCotGanNhat = mgCircles.GetListCirleOfFirstColumn();
                }
                foreach (var circle in listCotGanNhat)
                {
                    int newHEnt = Lcad.BlockAddClone(hBlockModel, circle.GetHandle());
                    Lcad.PropPutInt(newHEnt, Lcad.LC_PROP_ENT_KEY, keyCircle);
                    Lcad.BlockSelectEnt(hBlockModel, newHEnt, true);
                    Lcad.BlockSelMove(hBlockModel, khoangCachCot, 0, false, true);
                    Lcad.BlockUnselect(hBlockModel);
                    listCotMoi.Add(new Circle(newHEnt));
                }
                mgCircles.AddListCircle(listCotMoi);
            }
            //hiển thị lưới kích thước
            if (this.banVeChinh.HienKhoangCach)
            {
                DungLuoiKichThuoc();
            }
            //load lại
            //MessageBox.Show("hang" + soHang + "\ncot" + soCot + "\nkc hang" + khoangCachHang + "\nkc cot" + khoangCachCot + "\nX" + Xdrw + "\nY" + Ydrw);
            Lcad.DrwRegenViews(hDrw, 0);
            Lcad.WndExeCommand(hWnd, Lcad.LC_CMD_ZOOM_EXT, 0);
            Lcad.OnEventMouseDblClk(_EventMouseDbclick_LoMin);
            LuuHoChieu(this.hoChieuChinh.MaHoChieu);    //ăn gian...
            BS_LiteCAD.ShowNotifyAutoHide(elementHost1, "Xây dựng lưới lỗ khoan - hoàn thành");
        }