历时一个月终于基本完成了我的框选程序,拿来让大家指正一下
程序基本能用,但是肯定还有很多问题。请高手不吝赐教。加载以后用KX命令,在图上拖一个矩形,则矩形内部的图像就被截取下来,指定一个点将截图复制下来。 ?程序在哪里,没看到 不好意思程序忘了传上来了 试用了,没能达到效果,有些实体未能复制 1,个人觉得以下代码不怎么好!else if ((entity is ArcDimension) | (entity is AlignedDimension) | (entity is ArcDimension) | (entity is DiametricDimension)
| (entity is LineAngularDimension2) | (entity is RadialDimension) | (entity is Point3AngularDimension)
| (entity is RotatedDimension) | (entity is Dimension)|(entity is BlockReference)|(entity is Polyline2d))
2,建议在CrossingWindow InWindow函数里面使用Clone()数,而不要在后面使用GetTransformedCopy,出于安全考虑,原因在你上次贴里我已说过
3,建议适度的使用一些try catch ,原因在你上次贴里我已说过
4,请教个问题?你这是什么版本的 VS 和 AutoCAD
5,不要脸的表扬一下下面这段代码Point3d[] pts = points.Cast<Point3d>().OrderBy(point => curve.GetDistAtPoint(point)).ToArray();,原因觉得一些细节考虑到了! 本帖最后由 sieben 于 2011-6-10 14:55 编辑
public void DealEntity(Entity entity, Point3d ptStart, Point3d ptEnd, Point3d targetPt, Document doc)
{
Database db = doc.Database;
if (entity is Hatch)
{
DBObjectCollection explodedEntity = new DBObjectCollection();
Hatch hatch = (Hatch)entity;
if (!hatch.IsSolidFill)
{
entity.Explode(explodedEntity);
if (explodedEntity != null && explodedEntity.Count > 0)
{
foreach (Entity explodedEnt in explodedEntity)
{
DealEntity(explodedEnt, ptStart, ptEnd, targetPt, doc);
}
}
else
{
CopyEntity(entity, ptStart, targetPt, doc);
}
}
else
{
CopyEntity(entity, ptStart, targetPt, doc);
}
}
else if (entity is Curve)
{
TrimCurve(entity, ptStart, ptEnd, targetPt, db);
}
else if (entity is DBText || entity is MText || entity is DBPoint || entity is Solid)
{
CopyEntity(entity, ptStart, targetPt, doc);
}
else
{
DBObjectCollection explodedEntity = new DBObjectCollection();
entity.Explode(explodedEntity);
if (explodedEntity != null && explodedEntity.Count > 0)
{
foreach (Entity explodedEnt in explodedEntity)
{
DealEntity(explodedEnt, ptStart, ptEnd, targetPt, doc);
}
}
else
{
CopyEntity(entity, ptStart, targetPt, doc);
}
}
}
这个函数这样调整一下会不会好些?
回复 xiwuchen@qq 的帖子
能不能把你的图纸发一份给我。我的qq:329428084.谢谢 回复 sieben 的帖子
我用的是vs2010和autocad2009 学习学习,能不能把功能什么的说详细一点?? 回复 cdinten 的帖子
功能很简单,就是在画好的一张图纸上,输入KX命令(先得加载写的程序),用鼠标先选择矩形框的顶点,再选择对角点,然后选择任意一个点,将刚才在矩形框里面的图纸部分复制到这个点上
页:
[1]
2