简单问题请教各位大侠
各位大侠:环境(vs2010+CAD2010)
弹出一个窗体(WinForm),上面有一个删除按钮,点击这个按钮如何删除cad中指定坐标(100,200)的一个块参照。千万别笑话小妹,谢谢
这种问题真不想回答从基础学起吧 用到选择集知识( 你现在是还不会走就想跑,静下心来学习下基础先入门) 我也不想跑啊,问题是项目着急啊,只能这样了,麻烦各位了 本帖最后由 sieben 于 2015-6-11 13:12 编辑
问题很简单,选中图形,干掉,完事 问题有点复杂
1,就算块参考位于(100,200),说的是插入点就是(100,200),或许选择这个点也选不中,因为(100,200)位置可能没有图形,没有测试不确定
2,(100,200)可能不在当前的视窗范围内,那么也会选择不上
3,只要是块参考就干掉呢?还是只干掉指定名字的块参考? 本帖最后由 sieben 于 2015-6-11 13:11 编辑
问题还有点麻烦
1,因为是对话框操作,还应该有个锁定和解锁的处理
2,因为是只删除块参考,还应该搞个过滤器
本帖最后由 sieben 于 2015-6-11 13:25 编辑
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:这只是示意,不是实例 sieben 发表于 2015-6-11 13:23 static/image/common/back.gif
private void btn_SelectOAS_Click(object sender, EventArgs e)
{
DocumentLock dLock =...
大侠,我给的这个坐标,在图例肯定是有对应的块参照,就是想根据这个坐标值,删除他,说白了,就是想根据这个坐标值,在图中找到这个块参照(保证每个坐标对应一个块参照) 如果已知插入点。用下面的过滤器
0,"insert"
10,pt 雪山飞狐_lzh 发表于 2015-6-11 22:10 static/image/common/back.gif
如果已知插入点。用下面的过滤器
0,"insert"
10,pt
大侠:能写的详细点吗,给段演示代码呗,谢谢。小妹在此恳求
页:
[1]