1、说明

可进行缩放性注释的对象有:文字、标注、图案填充、公差、多重引线、块及属性。

2、为图形添加、删除注释比例步骤

1)使用AnnotationScale类(在DatabaseServices命名空间下)构造函数创建注释比例对象并设置相关属性;

2)使用图形的注释比例列表(ObjectContextCollection);

3)使用(ObjectContextCollection类)的AddText函数将新建的注释比例对象添加到注释比例列表中。

2、具体代码

         public static AnnotationScale AddScale(this Database db, string scaleName, double paperUnits, double drawdingUnits)
{
AnnotationScale scale = null; ObjectContextManager manager = db.ObjectContextManager; //获得当前图形的注释比例列表,名为“ACDB_ANNOTATIONSCALES”
ObjectContextCollection occ = manager.GetContextCollection("ACDB_ANNOTATIONSCALES"); if (!occ.HasContext(scaleName))
{
scale = new AnnotationScale();
scale.Name = scaleName; scale.PaperUnits = paperUnits;
scale.DrawingUnits = drawdingUnits;
occ.AddContext(scale);
}
return scale; }

为当前图形插入一个新的注释比例

      /// <summary>
/// 为实体添加指定的注释比例
/// </summary>
/// <param name="entId">实体的ObjectId</param>
/// <param name="scaleNames">注释比例名列表</param>
public static void AttachScale(this ObjectId entId, params string[] scaleNames)
{
Database db = entId.Database; DBObject obj = entId.GetObject(OpenMode.ForRead);//获取entID的实体对象 if (obj.Annotative != AnnotativeStates.NotApplicable)//如果实体支持注释缩 放
{
if (obj is BlockReference)
{
BlockReference br = obj as BlockReference;
//打开对应的块表记录
BlockTableRecord btr = (BlockTableRecord)br.BlockTableRecord.GetObject(OpenMode.ForWrite);
//设置块表记录为可注释缩放
btr.Annotative = AnnotativeStates.True;
}
else if (obj.Annotative == AnnotativeStates.False)
obj.Annotative = AnnotativeStates.True; obj.UpgradeOpen();//切换实体为写的状态以添加注释比例
//获取当前图形的对象比例管理器
ObjectContextManager ocm = db.ObjectContextManager; //获得当前的图形的注释比例列表,
ObjectContextCollection occ = ocm.GetContextCollection("ACDB_ANNOTATIONSCALES");
foreach (string scaleName in scaleNames)
{
//获取名为scaleName的注释比例
ObjectContext scale = occ.GetContext(scaleName);
//若不存在scaleName的注释比例,则结束本次循环
if (scale == null) continue;
//为实体添加名为scaleName的注释比例 ObjectContexts.AddContext(obj, scale);// ObjectContexts要添加acmgdinternal.dll引用
}
obj.DowngradeOpen();//为了安全将实体切换为读的状态
} }

为实体指定注释比例

CAD二次开发 - 可缩放块(四)的更多相关文章

  1. Cad 二次开发关于SelectCrossingPolygon和SelectFence返回结果Status为error的小测试

    CAD2008的二次开发,有个很奇怪的现象,只要你选择的点集不在当前视图上SelectCrossingPolygon和SelectFence返回结果Status就会为error,所以要获取正确的结果, ...

  2. CAD二次开发

    用C#有一段时间了,由于单位需要,开始接触CAD二次开发,网上一搜,加入CAD开发的群,零零碎碎看了一些文章和博客,没有系统地的知识,能解决一些小问题.最近开始系统学习,再次推荐两本书,一本事纸质版的 ...

  3. 推荐两个不错的CAD二次开发(.Net)手册

    推荐两个不错的CAD二次开发(.Net)手册 http://www.mjtd.com/helpcenter/netguide/index.html http://www.ceesky.com/book ...

  4. CAD 二次开发 -- 自动加载开发的DLL

    CAD二次开发可以采用写扩展DLL的方式实现.该DLL的函数可以被CAD调用. 但是调用前,必须用命令netload 将该dll加载到CAD. 其实可以修改注册表,当CAD软件启动后,自动加载扩展DL ...

  5. C#进行CAD二次开发环境配置

    最近被公司分配到了做CAD二次开发.也是初次接触这方面的东西,其实是有些无从下手的感觉.因为公司这边也没有人有时间带我,只能是自己看书,然后再写一些Demo,再结合实际的应用来一点点的学习.废话不多说 ...

  6. CAD二次开发中浮动面板不浮动的问题

    CAD二次开发中创建了一个浮动面板,想让它创建出来后以浮动状态显示, 但是DockSides.None设置完后,面板还是不浮动.搞了很久,最后原来是 需要先设置Visible,再设置DockSides ...

  7. CAD二次开发起步

    1 环境搭建(VS 2017 + CAD 2019) CAD版本一般要比VS版本晚两年以上,比如我现在使用VS2017,则CAD要用2019版,至于CAD2018能不能用没试验过,有兴趣的小伙伴可以试 ...

  8. CAD二次开发控件,dwg控件,网页DWG控件,手机浏览编辑DWG控件

    梦想绘图插件5.2(MxDraw5.2) 是国内最强,最专业的CAD开发插件(控件),不需要AutoCAD就能独立运行. 控件使用VC 2010开发,具有30万行代码规模,最早从2007年第一个版本完 ...

  9. spss C# 二次开发 学习笔记(四)——Spss授权

    Spss的授权方式有两种,单机版和网络版. Spss的激活,在联网的情况下,通过20位的激活码激活,在未联网的情况下,Spss根据机器获取一个类似4-XXXX的锁定码,然后由激活码和锁定码算出一个授权 ...

随机推荐

  1. 9.8 js进阶总结3

    DOM文档对象模型 DOM(document object model)文档对象模型,它定义了操作文档对象的接口. DOM 把一份html文档表示为一棵家谱树,使用parent(父),child(子) ...

  2. linux 学习7 用户管理相关文件 r

    7.1.用户配置文件 7.2.用户管理相关文件 7.3.用户管理命令 7.4.用户组管理命令 删除用户userdel [root@localhost ~]# userdel [-r] 用户名 //一定 ...

  3. [转]Redmine 配置163邮箱

    redmine的邮件发送功能还是很有用的.像项目有更新啦,任务分配啦,都能邮件发送的相关责任人.我自己在linux服务器上安装并启动了redmine后,邮件一直发送了不了.查了网上的资料,都是讲修改下 ...

  4. 循序渐进Python3(十)-- 0 -- RabbitMQ

    RabbitMQ     RabbitMQ是一个由erlang开发的AMQP(Advanced Message Queue )的开源实现.AMQP 的出现其实也是应了广大人民群众的需求,虽然在同步消息 ...

  5. SHOPNC占用CPU过高

    今天一个SHOPNC商城突然变慢,查看服务器情况,发现MYSQL占用181%CPU,然后查看PHP慢查询,发现这样的内容 [22-Nov-2016 20:55:41] [pool www] pid 5 ...

  6. socket网络通信

    1.socket通常也称作"套接字",用于描述IP地址和端口.在internet上的主机一般运行了多个服务软件,同时提供几种服务,每种服务都打开一个socket,并绑定到一个端口上 ...

  7. 运用String类实现一个模拟用户登录程序

    package Test; import java.util.Scanner; // 模拟用户登录程序 // 思路: // 1.用两个String类分别接收用户名和密码 // 2.判断输入的用户名和密 ...

  8. Mysql分库分表方案

    Mysql分库分表方案 1.为什么要分表: 当一张表的数据达到几千万时,你查询一次所花的时间会变多,如果有联合查询的话,我想有可能会死在那儿了.分表的目的就在于此,减小数据库的负担,缩短查询时间. m ...

  9. inline(内联)函数

    1,为小操作定义一个函数的好处是:     a.可读性会强很多.     b.改变一个局部化的实现比更改一个应用中的300个出现要容易得多     c.函数可以被重用,不必为其他的应用重写代码     ...

  10. Codeforces Round #384 (Div. 2) //复习状压... 罚时爆炸 BOOM _DONE

    不想欠题了..... 多打打CF才知道自己智商不足啊... A. Vladik and flights 给你一个01串  相同之间随便飞 没有费用 不同的飞需要费用为  abs i-j 真是题意杀啊, ...