当前位置: 首页 > news >正文

CAD二次开发IFoxCAD框架系列(21)-线型表的操作

1. 线型表的查询(查询常用的三种线型)

每个 AutoCAD 图形会自动加载 3 种线形:ByLayer、ByBlock和 CONTINUOUS,可以通过下述方式获得这三种线型的 ObjectId。

    [CommandMethod(nameof(getLinetypeObjectId))]public void getLinetypeObjectId(){using var tr = new DBTrans();ObjectId byBlockId = SymbolUtilityServices.GetLinetypeByBlockId(tr.Database);ObjectId byLayerId = SymbolUtilityServices.GetLinetypeByLayerId(tr.Database);ObjectId continuousId = SymbolUtilityServices.GetLinetypeContinuousId(tr.Database);Env.Printl("byBlockId: " + byBlockId + " byLayerId: " + byLayerId + " continuousId: " + continuousId);}

在这里插入图片描述

  1. 随层(ByLayer):
    随层的意思就是对象的颜色、线型和线宽属性继承当前层的属性,也就是在定义块时将图形对象绘制在0层,将当前层的颜色、线型和线宽属性设置为随层。

  2. 随块(ByBlock):
    随块的意思就是对象的颜色、线型和线宽属性使用它所在的图块的属性,就是图块内部的对象属性的改变只能是在块编辑或块定义时才能改变。即假如按上面的步骤改变颜色,新插入的块将不会改变颜色。但如果在块编辑的情况下改变颜色,新插入的块也会改变颜色。

  3. 连续线(continuous)
    这是AutoCAD默认的线型,也就是我们说的实线。

输入LTYPE命令,直接可以在『线型管理器』对话框中看到默认加载的线型:ByLayer,ByBlock和Continuous,如下:
在这里插入图片描述

2. 根据名称查询线型

查看线型表中是否含有名为“CENTER”的线型。

using var tr = new DBTrans();
if (tr.LinetypeTable.Has("CENTER"))
{
//要执行的操作
}

3. 线型名称遍历

遍历线型表并打印每个线型的名字 。

    [CommandMethod(nameof(getLinetypeNames))]public void getLinetypeNames(){using var tr = new DBTrans();tr.LinetypeTable.GetRecordNames().ForEach(action: (linetypeName) => linetypeName.Print());}

在这里插入图片描述

4. 线型的新增

4.1 加载已有线型

从 acadiso.lin 线型文件中加载指定线型 CENTER ,并返回 CENTER 线型的 ObjectId。

    [CommandMethod(nameof(loadLineTypeFile))]public void loadLineTypeFile(){using var tr = new DBTrans();if(!tr.LinetypeTable.Has("CENTER")){tr.Database.LoadLineTypeFile("CENTER", "acadiso.lin");var objectId = tr.LinetypeTable["CENTER"];Env.Printl("objectId: " + objectId);}}

在这里插入图片描述
在这里插入图片描述

4.2 加载自定义 *.lin 文件里的所有线型(已有线形会触发异常)

try
{using var tr = new DBTrans();tr.Database.LoadLineTypeFile("*", "D:\\文件名.lin");
}catch (Exception)
{
}

4.3 新建自定义线型

自定义一个 DASHLINES 线型。

    [CommandMethod(nameof(LinetypeAdd))]public void LinetypeAdd(){using var tr = new DBTrans();tr.LinetypeTable.Add("DASHLINES", (ltr) =>{ltr.AsciiDescription = "虚线";//线型说明ltr.PatternLength = 0.95;//组成线型的图案长度(划线、空格、点)ltr.NumDashes = 4;//组成线型的图案数目ltr.SetDashLengthAt(0, 0.5);//0.5个单位的划线ltr.SetDashLengthAt(1, -0.25);//0.25个单位的空格ltr.SetDashLengthAt(2, 0);//一个点ltr.SetDashLengthAt(3, -0.25);//0.25个单位的空格});}

在这里插入图片描述

4.4 自定义一个带文字的线型

 [CommandMethod(nameof(LinetypeAddText))]public void LinetypeAddText(){using var tr = new DBTrans();tr.LinetypeTable.Add("文字线型", ltrText =>{//添加带文字的线型ltrText.AsciiDescription = "文字";//线型说明ltrText.PatternLength = 0.9;//组成线型的图案长度(划线、空格、点)ltrText.NumDashes = 3;//组成线型的图案数目ltrText.SetDashLengthAt(0, 0.5);//0.5个单位的划线ltrText.SetDashLengthAt(1, -0.2);//0.2个单位的空格ltrText.SetShapeStyleAt(1, tr.TextStyleTable["Standard"]);//设置文字的文字样式//文字在线型的 X 轴方向上向左移动0.1个单位,在Y轴方向向下移动0.05个单位。ltrText.SetShapeOffsetAt(1, new Vector2d(-0.1, -0.05));ltrText.SetShapeScaleAt(1, 0.1);//文字的缩放比例ltrText.SetShapeRotationAt(1, 0);//文字的旋转角度为0(不旋转)ltrText.SetTextAt(1, "GAS");//文字内容ltrText.SetDashLengthAt(2, -0.2);//0.2个单位的空格});}

在这里插入图片描述

5. 当前线型的设置

将 CENTER 设为当前线型

[CommandMethod(nameof(SetCurrentLineType))]public void SetCurrentLineType(){using var tr = new DBTrans();//查找是否包含CENTER线型if(!tr.LinetypeTable.Has("CENTER")){tr.Database.LoadLineTypeFile("CENTER", "acadiso.lin"); //导入CENTER线型}tr.Database.Celtype = tr.LinetypeTable["CENTER"];}

在未选中任何对象的状态下,按ctrl+1打开特性选项板,即可查看当前线型。
在这里插入图片描述
修改后为
在这里插入图片描述
这里也可以查看
在这里插入图片描述

6. 线型删除

卸载 CENTER 线型。

    [CommandMethod(nameof(DeleteLineType))]public void DeleteLineType(){using var tr = new DBTrans();tr.LinetypeTable["CENTER"].Erase();}

在这里插入图片描述

注意 : 不能卸载如下线型:

  • BYBLOCK
  • BYLAYER
  • CONTINUOUS
  • 当前线型
  • 已使用的线型
  • 外部参照的线形
  • 块定义中的线型

删除会提示错误
在这里插入图片描述

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • Ardupilot开源飞控之IOMCU设计细节
  • LangChain:与RAG相关的模块
  • html5-css3 -- 总结 04(小白)
  • 【论文解读】Screen Content Video Quality Assessment: Subjective and Objective Study
  • 解决IDE终端中使用Git stash命令时遇到的`error: unknown switch `e``错误
  • Mac电脑虚拟机安装win11教程
  • redis列表若干记录
  • c#实现数据导出为PDF的方式
  • C语言典型例题37
  • Astro + Cloudflare Pages 快速搭建个人博客
  • Secure CRT 9.x版本高亮着色配置文件
  • 前端【详解】缓存
  • vue打包更新packge.json版本号
  • 【区块链+食品安全】湖南省食品行业联合会:溯链中国—基于区块链的食品安全可信追溯平台 | FISCO BCOS应用案例
  • DC-4靶机
  • Angular 2 DI - IoC DI - 1
  • Date型的使用
  • ECMAScript入门(七)--Module语法
  • HashMap ConcurrentHashMap
  • Hexo+码云+git快速搭建免费的静态Blog
  • iOS编译提示和导航提示
  • Java 网络编程(2):UDP 的使用
  • JavaScript-Array类型
  • JavaScript标准库系列——Math对象和Date对象(二)
  • Java新版本的开发已正式进入轨道,版本号18.3
  • JS基础之数据类型、对象、原型、原型链、继承
  • ng6--错误信息小结(持续更新)
  • Node项目之评分系统(二)- 数据库设计
  • Octave 入门
  • open-falcon 开发笔记(一):从零开始搭建虚拟服务器和监测环境
  • Spark RDD学习: aggregate函数
  • Sublime text 3 3103 注册码
  • 对象引论
  • 每天10道Java面试题,跟我走,offer有!
  • 浅谈Golang中select的用法
  • 系统认识JavaScript正则表达式
  • ​软考-高级-信息系统项目管理师教程 第四版【第14章-项目沟通管理-思维导图】​
  • # 详解 JS 中的事件循环、宏/微任务、Primise对象、定时器函数,以及其在工作中的应用和注意事项
  • #{}和${}的区别是什么 -- java面试
  • #git 撤消对文件的更改
  • #if和#ifdef区别
  • #QT 笔记一
  • #我与Java虚拟机的故事#连载04:一本让自己没面子的书
  • (1)(1.11) SiK Radio v2(一)
  • (2024最新)CentOS 7上在线安装MySQL 5.7|喂饭级教程
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (三)Kafka离线安装 - ZooKeeper开机自启
  • (四)事件系统
  • (一)C语言之入门:使用Visual Studio Community 2022运行hello world
  • (转)EOS中账户、钱包和密钥的关系
  • (转)GCC在C语言中内嵌汇编 asm __volatile__
  • **PyTorch月学习计划 - 第一周;第6-7天: 自动梯度(Autograd)**
  • .net 7和core版 SignalR
  • .NET Windows:删除文件夹后立即判断,有可能依然存在
  • .Net接口调试与案例