cad2008用c#二次开发的填充颜色的问题

yuxrxll 2009-04-30 02:45:18
cad2008用c#二次开发的填充颜色的问题,下面的代码画一个圆填充颜色没问题,我想画几根线组合的封闭图形(就是几个对象的封闭图),再填充颜色,该怎么写呢?
Database db = HostApplicationServices.WorkingDatabase;
Transaction trans = db.TransactionManager.StartTransaction();
try
{
Circle circle = new Circle(new Point3d(10, 10, 0), Vector3d.ZAxis, 200);
BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);
BlockTableRecord btr = (BlockTableRecord)trans.GetObject(HostApplicationServices.WorkingDatabase.CurrentSpaceId, OpenMode.ForWrite);
btr.AppendEntity(circle);



trans.AddNewlyCreatedDBObject(circle, true);
ObjectIdCollection collection = new ObjectIdCollection();
collection.Add(circle.ObjectId);
// collection.Add(circle1.ObjectId);


Hatch hatch = new Hatch();

hatch.Elevation = 0;
hatch.HatchStyle = HatchStyle.Normal;
hatch.ColorIndex = 10;
hatch.PatternAngle = 0;
hatch.SetHatchPattern(HatchPatternType.PreDefined, "SOLID"); //设置填充图案
// hatch.Associative = true;
hatch.AppendLoop(HatchLoopTypes.Default, collection); //设置填充边界 //
hatch.EvaluateHatch(true);
btr.AppendEntity(hatch);
trans.AddNewlyCreatedDBObject(hatch, true);
trans.Commit();
}
catch
{
ed.WriteMessage("Error ");
}
finally
{
trans.Dispose();
}
...全文
637 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
feitianv4 2010-09-19
  • 打赏
  • 举报
回复
恩人啊 我总算找到 hatch的用法了;我已经找了半天了
diy2005 2010-07-26
  • 打赏
  • 举报
回复
正在关注这个

好东西

顶起啊

呵呵
diy2005 2010-07-26
  • 打赏
  • 举报
回复
定期啊 好都关系啊
jayjay2008 2009-12-28
  • 打赏
  • 举报
回复
不错 但是大家经常用VBA 对autoCAD进行二次开发 希望 大家也关注一下 呵呵
zhouxingyu896 2009-11-19
  • 打赏
  • 举报
回复
学习

学习
AlexChow 2009-07-01
  • 打赏
  • 举报
回复
用Polyline可以实现:
[CommandMethod("MyDraw")]
static public void DoDraw()
{
Database db = HostApplicationServices.WorkingDatabase;
Transaction trans = db.TransactionManager.StartTransaction();
try
{
BlockTable bt = (BlockTable)trans.GetObject(db.BlockTableId, OpenMode.ForRead);
BlockTableRecord btr = (BlockTableRecord)trans.GetObject(HostApplicationServices.WorkingDatabase.CurrentSpaceId, OpenMode.ForWrite);


Polyline polyline = new Polyline();
polyline.SetDatabaseDefaults();
polyline.Reset(false, 0);

polyline.AddVertexAt(0, new Point2d(-10, -10), 0, 0, 0);
polyline.AddVertexAt(1, new Point2d(-10, 20), 0, 0, 0);
polyline.AddVertexAt(2, new Point2d(30, 20), 0, 0, 0);
polyline.AddVertexAt(3, new Point2d(30, -10), 0, 0, 0);
polyline.Closed = true;
btr.AppendEntity(polyline);
trans.AddNewlyCreatedDBObject(polyline, true);
ObjectIdCollection collection = new ObjectIdCollection();
collection.Add(polyline.ObjectId);

Hatch hatch = new Hatch();

hatch.Elevation = 0;
hatch.HatchStyle = HatchStyle.Normal;
hatch.ColorIndex = 10;
hatch.PatternAngle = 0;
hatch.SetHatchPattern(HatchPatternType.PreDefined, "SOLID"); //设置填充图案
hatch.AppendLoop(HatchLoopTypes.Default, collection); //设置填充边界 //
hatch.EvaluateHatch(true);
btr.AppendEntity(hatch);
trans.AddNewlyCreatedDBObject(hatch, true);
trans.Commit();
}
catch (Autodesk.AutoCAD.Runtime.Exception ed)
{
ed.Message.ToString();
}
finally
{
trans.Dispose();
}
hasia 2009-06-22
  • 打赏
  • 举报
回复
楼主,请问你用的什么方式开发的?
wrongagain98 2009-05-11
  • 打赏
  • 举报
回复
哦?2008可以用C#开发了?
问一下能不能用Java开发呀?

1,451

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计/Flash/Silverlight 开发 图象工具使用
社区管理员
  • 图象工具使用社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧