cad2008用c#二次开发的填充颜色的有关问题
发布时间:2011-06-27 19:21:10 文章来源:www.iduyao.cn 采编人员:星星草
cad2008用c#二次开发的填充颜色的问题
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();
}
------解决方案--------------------
用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"); //设置填充图案
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。
其他相似内容:
-
求cad的练习图
最近在学cad,可是没有练习的图,请哪位好友给推荐推荐.
------解决方案--------------------
www.yzzd.com/mold
...
-
AutoCAD里面“对象捕捉”和“对象追踪”有什么区别?
AutoCAD 2004,绘图区下面有一排按钮:“删格”“正交”“极轴”...这应是大家...
-
在autocad中怎么录制宏?
请问在autocad中怎么录制宏,就是把做过的操作用宏录制下来,这在excel等office软件中都是可以的,但是在au...
-
填充矩形框后怎么原来矩形框内的文字不见啦
我画了一个标示牌图,就是矩形框里包含文字,因为要把图背景设为蓝色(蓝底白字),但填充矩形...
-
寻求帮助
我现在刚刚接触flash的as编程,我要做一个汉诺塔的flash游戏。我想大家教我怎么实现汉诺塔中盘子拖动后的定位问题。或者...
-
做工程图三维重建研究的困惑?
本人现在正做基于二维工程图的三维重建系统研究,看了许多论文,但至今还是没有思路,我需要从DXF文件分析...
-
招聘绘图员(广州)
工作地点在广州
机械或相关专业大专以上学历
要求熟练掌握Autocad、PRO/E和solidwork设计类软件
待遇: 2...
-
在WinXp上安装AutoCAD2000的方法(测试成功)
今日有人找我在WinXp上安装AutoCAD2000,说实在的,我是搞编程的,真不懂这东西,但朋友求我...
-
objectarx高版本的arx程序如何在低版本中运行
请教:用较高的版本比方objectarx2007作的arx如何才能在比它低的autocad版本中运行
...
-
怎么在autocad命令行运行VBA编的程序?
我只知道通过点击宏运行VBA程序,请问怎么在autocad命令行运行VBA编的程序?
------解决...