AutoCAD .Net 创建直线Line

以下代码展示:
* 创建直线
* 设置图元的图层
* 设置图元的颜色
* 设置图元的线型
* 设置图元的线宽

using Autodesk.AutoCAD.Runtime;
using Autodesk.AutoCAD.ApplicationServices;
using Autodesk.AutoCAD.DatabaseServices;
using Autodesk.AutoCAD.Geometry;
using Autodesk.AutoCAD.EditorInput;
using Autodesk.AutoCAD.Colors;

[CommandMethod("NewLine")]
public static void NewLine()
{
    Document doc = Application.DocumentManager.MdiActiveDocument;
    Database db = doc.Database;

    using (Transaction tr = db.TransactionManager.StartTransaction())
    {
        //-------------------------------
        // 获取模型空间
        //-------------------------------
        BlockTable blockTbl = tr.GetObject(
            db.BlockTableId, OpenMode.ForRead) as BlockTable;
        BlockTableRecord modelSpace = tr.GetObject(
            blockTbl[BlockTableRecord.ModelSpace], OpenMode.ForWrite) as BlockTableRecord;

        //-------------------------------
        // 创建直线
        //-------------------------------
        Line line = new Line();
        line.StartPoint = new Point3d(0, 0, 0);
        line.EndPoint = new Point3d(100, 100, 0);

        //-------------------------------
        // 图层: test_layer
        //-------------------------------
        string layerName = "test_layer";
        LayerTable layerTbl = tr.GetObject(
            db.LayerTableId, OpenMode.ForRead) as LayerTable;
        if (layerTbl.Has(layerName))
        {
            line.Layer = layerName;
        }

        //-------------------------------
        // 颜色
        //-------------------------------
        // 颜色索引
        //line.Color = Color.FromColorIndex(ColorMethod.ByAci, 4);
        // 随块
        //line.Color = Color.FromColorIndex(ColorMethod.ByBlock, 0);
        // 随层
        //line.Color = Color.FromColorIndex(ColorMethod.ByLayer, 256);
        // RGB
        line.Color = Color.FromRgb(255, 0, 0);

        //-------------------------------
        // 线型: Center
        //-------------------------------
        string linetypeName = "Center";
        LinetypeTable linetypeTbl = tr.GetObject(
            db.LinetypeTableId, OpenMode.ForRead) as LinetypeTable;
        if (!linetypeTbl.Has(linetypeName))
        {
            db.LoadLineTypeFile(linetypeName, "acad.lin");
        }
        if (linetypeTbl.Has(linetypeName))
        {
            line.Linetype = linetypeName;
        }

        //-------------------------------
        // 线宽
        //-------------------------------
        //line.LineWeight = LineWeight.ByLayer;
        //line.LineWeight = LineWeight.ByBlock;
        //line.LineWeight = LineWeight.ByLineWeightDefault;
        line.LineWeight = LineWeight.LineWeight106;

        //-------------------------------
        // 添加到模型空间并提交到数据库
        //-------------------------------
        modelSpace.AppendEntity(line);
        tr.AddNewlyCreatedDBObject(line, true);
        tr.Commit();
    }
}
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
AutoCAD .net开发人员手册中文版 文档介绍: 当前版本为20101128版,为第一个CHM版本,如需更新版本,请及时关注http://www.01vb.com,也可以查看CHM文件中的前言部分的版本通知。 因本版本制作仓促,还有如下不完善的内容。 1、还有一章内容没有翻译完成; 2、目录部分和索引部分还是英文版本,但具体页面中全部是中英文对照(有些在提示中有些在翻译上面)。 本《AutoCAD .NET 开发人员手册》由01VB编程站翻译并提供,版权所有,原英文版本版权归原版权所有者所有。本手册为免费版本,可在网上随意发送,但必须注明出处(01VB编程站及网站链接http://www.01vb.com)及翻译者。 序言 自从 AutoCAD 支持使用 .NET 开发以来,所有关于 .NET 的官方开发资料全部是英文版本,给国内开发者的学习带来了一定的阻碍,为了给广大 .NET 爱好者提供更多方便,于是决定翻译一部分资料。 因本人英文水平及CAD二次开发水平有限,翻译的资料中也许有表达不清楚的地方,请大家谅解,也可以在资料底部找到留言的链接,给我留言或直接点击QQ联系我。 01VB编程站是一个非营利性的网站,但是,网站要生存,必须有经济来源。因此,本人在本手册中的投放了广告,但是,广告都是在正文内容的底部,不影响阅读。原则上我不鼓励大家点击上面的广告,除非真的对广告内容感兴趣。因广告给您带来的不便,还望谅解。 最近一段时间,老婆一直生病,始终没有痊愈,在此,我希望老婆能快点儿好起来, 并想对她说一句:老婆,别哭,好好养病,病痛在你身,也疼在我心。你累了,我会背你;钱花光了,我会去挣,身体是第一位的。如果你也想给我老婆送上祝福,请留言,谢谢!(2010.11.24) 翻译历史 2010年8月中旬 开始,期间由于本人生病,中断了几天,还有部分内容没有翻译完成,仍然在翻译中。 11.6 更新《图层状态管理器的使用》部分。 11.07 更新《文字样式》部分 11.08 更新完《创建和编辑AutoCAD图元》这章。 11.11 更新 《标注的概念》 部分 11.12 更新《创建标注》部分 11.15 更新完 《创建引线和注释》 部分 11.20 更新完《形位公差》 部分 11.24 更新到 《在三维空间中编辑 》 11.28 修正手册中的脚本错误,进行CHM格式文档的制作并在01VB编程站首发。 感谢 《AutoCAD .NET 开发人员手册》的翻译过程得到 明经通道 网站 "明经 AutoCAD.NetApi 群"中许多网友的帮助,像 MCCAD、雪山飞狐、Still等等,另外还有其它人记不清楚了,因为太多太多,总之两个字,谢谢。 版权 本开发人员手册版权属01VB编程站网站所有。 翻译者:黄明新(平凡)
AutoCAD.NET中,筛选对象是一个常见的操作。使用筛选器可以快速选择需要的对象,而不必手动选择它们。在本文中,我将介绍如何使用AutoCAD.NET中的筛选器。 首先,需要引用命名空间: ```csharp using Autodesk.AutoCAD.EditorInput; using Autodesk.AutoCAD.DatabaseServices; using Autodesk.AutoCAD.Geometry; ``` 然后,创建一个PromptSelectionOptions对象,设置选择过滤器和其他选项: ```csharp PromptSelectionOptions opts = new PromptSelectionOptions(); TypedValue[] filterlist = new TypedValue[1] { new TypedValue((int)DxfCode.Start, "LINE") }; SelectionFilter filter = new SelectionFilter(filterlist); opts.MessageForAdding = "Select lines: "; opts.AllowDuplicates = false; opts.SingleOnly = true; ``` 上面的代码创建了一个选择过滤器,只允许选择直线。然后,设置了一些选项,例如允许选择重复项和只允许选择一个对象。 接下来,使用Editor对象的SelectAll方法来启动选择操作,选择过滤器和选项将传递给这个方法: ```csharp Editor ed = Application.DocumentManager.MdiActiveDocument.Editor; PromptSelectionResult res = ed.SelectAll(filter, opts); if (res.Status == PromptStatus.OK) { SelectionSet selSet = res.Value; ObjectId[] ids = selSet.GetObjectIds(); ed.WriteMessage("\nSelected {0} lines.", ids.Length); } else { ed.WriteMessage("\nNo lines selected."); } ``` 上面的代码获取了选择集中的对象ID,并输出选择的对象数量。 这是使用AutoCAD.NET中的筛选器选择对象的基本方法。根据需要,可以更改过滤器和选项来选择不同类型的对象。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值