乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 187|回复: 9

简单问题请教各位大侠

[复制链接]

32

主题

73

帖子

2

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
201
发表于 2015-6-10 16:39:00 | 显示全部楼层 |阅读模式
各位大侠:
              环境(vs2010+CAD2010)
弹出一个窗体(WinForm),上面有一个删除按钮,点击这个按钮如何删除cad中指定坐标(100,200)的一个块参照。千万别笑话小妹,谢谢
回复

使用道具 举报

4

主题

86

帖子

7

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
102
发表于 2015-6-10 17:01:00 | 显示全部楼层
这种问题真不想回答  从基础学起吧   用到选择集知识  ( 你现在是还不会走就想跑,静下心来学习下基础先入门)
回复

使用道具 举报

32

主题

73

帖子

2

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
201
发表于 2015-6-11 08:32:00 | 显示全部楼层
我也不想跑啊,问题是项目着急啊,只能这样了,麻烦各位了
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2015-6-11 13:01:00 | 显示全部楼层

问题很简单,选中图形,干掉,完事
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2015-6-11 13:06:00 | 显示全部楼层
问题有点复杂
1,就算块参考位于(100,200),说的是插入点就是(100,200),或许选择这个点也选不中,因为(100,200)位置可能没有图形,没有测试不确定
2,(100,200)可能不在当前的视窗范围内,那么也会选择不上
3,只要是块参考就干掉呢?还是只干掉指定名字的块参考?
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2015-6-11 13:09:00 | 显示全部楼层

问题还有点麻烦
1,因为是对话框操作,还应该有个锁定和解锁的处理
2,因为是只删除块参考,还应该搞个过滤器
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2015-6-11 13:23:00 | 显示全部楼层

    private void btn_SelectOAS_Click(object sender, EventArgs e)
    {
      DocumentLock dLock = aApp.DocumentManager.MdiActiveDocument.LockDocument();
      try
      {
        //this.Hide();这个你可以不用
        TypedValue[] arrValue1 = { new TypedValue(1001, "PAOAS") };//过滤器要用你自己的哦
        SelectionFilter selFilter1 = new SelectionFilter(arrValue1);
        PromptSelectionOptions psOpt4 = new PromptSelectionOptions();
        psOpt4.MessageForAdding = "\n选择OAS命令生成的图形";
        psOpt4.SingleOnly = true;//这个要注意看是否必要
        PromptSelectionResult psRes4 = sc.ed.GetSelection(psOpt4, selFilter1);   
         //你应该用这个 public PromptSelectionResult SelectFence(Point3dCollection fence, SelectionFilter filter);
        //或者用这个public PromptSelectionResult SelectCrossingPolygon(Point3dCollection polygon, SelectionFilter filter);
       //又或者public PromptSelectionResult SelectCrossingWindow(Point3d pt1, Point3d pt2);
        if (psRes4.Status == PromptStatus.OK)
        {   
          using (Transaction ctrans = sc.db.TransactionManager.StartTransaction())
          {
            foreach (ObjectId tId in psRes4.Value.GetObjectIds())
            {
              Entity ent1 = (Entity)ctrans.GetObject(tId, OpenMode.ForWrite);
                //这里,你想干嘛就干嘛,你想干掉他?还是想给他化个妆?都可以
            }
            ctrans.Commit();
          }
        }
      }
      catch (System.Exception ex)
      {
        se.WriteMessage(ex);
      }
      finally
      {
          // this.Show();这个你可以不用
        dLock.Dispose();//这个千万不要忘记了
      }
    }
PS:这只是示意,不是实例
回复

使用道具 举报

32

主题

73

帖子

2

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
201
发表于 2015-6-11 14:07:00 | 显示全部楼层

大侠,我给的这个坐标,在图例肯定是有对应的块参照,就是想根据这个坐标值,删除他,说白了,就是想根据这个坐标值,在图中找到这个块参照(保证每个坐标对应一个块参照)
回复

使用道具 举报

72

主题

2726

帖子

9

银币

社区元老

Rank: 75Rank: 75Rank: 75

铜币
3014
发表于 2015-6-11 22:10:00 | 显示全部楼层
如果已知插入点。用下面的过滤器
0,"insert"
10,pt
回复

使用道具 举报

32

主题

73

帖子

2

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
201
发表于 2015-6-12 09:52:00 | 显示全部楼层

大侠:能写的详细点吗,给段演示代码呗,谢谢。小妹在此恳求
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-13 15:50 , Processed in 0.494166 second(s), 72 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表