你选择了一个实体进行填充,我需要的是拾取内部点填充,请重新生成
时间: 2024-02-25 20:51:55 浏览: 56
非常抱歉,我误解了您的意思。以下是一个使用C#语言实现CAD拾取点填充的示例代码:
```csharp
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.Runtime;
namespace MyCommands
{
public class MyCommandsClass
{
[CommandMethod("FILL")]
public void FillCommand()
{
// 获取当前文档和编辑器对象
Document doc = Application.DocumentManager.MdiActiveDocument;
Editor ed = doc.Editor;
// 提示用户选择一个点
PromptPointOptions ppo = new PromptPointOptions("\n选择一个点: ");
PromptPointResult ppr = ed.GetPoint(ppo);
if (ppr.Status != PromptStatus.OK)
return;
// 创建填充对象
using (Transaction tr = doc.TransactionManager.StartTransaction())
{
BlockTableRecord btr = (BlockTableRecord)doc.Database.CurrentSpaceId.GetObject(OpenMode.ForWrite);
Hatch hatch = new Hatch();
hatch.SetDatabaseDefaults();
// 添加选择的点
Point2d point = new Point2d(ppr.Value.X, ppr.Value.Y);
hatch.AppendLoop(HatchLoopTypes.Default, new Point2dCollection() { point });
// 设置填充的属性
hatch.EvaluateHatch(true);
hatch.ColorIndex = 1;
hatch.Layer = "0";
btr.AppendEntity(hatch);
tr.AddNewlyCreatedDBObject(hatch, true);
tr.Commit();
}
ed.WriteMessage("\n填充完成.");
}
}
}
```
这个示例代码提供了一个FILL命令,它允许用户选择一个点来进行填充。当用户运行该命令时,它会提示用户选择一个点,然后创建一个填充对象并将该点添加到填充中,最后将填充对象添加到当前空间中。
阅读全文