CAD.NET调整属性块中文字宽度

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

[assembly: CommandClass(typeof(AttributeWidthFactor.MyCommands))]

namespace AttributeWidthFactor
{
    public class MyCommands
    {
        [CommandMethod("AttWidth")]
        public static void SetAttrWidthFactor()
        {
            Document dwg = Application.DocumentManager.MdiActiveDocument;
            Editor ed = dwg.Editor;

//Pick an attributereference in a block
            PromptNestedEntityOptions opt = new 
                PromptNestedEntityOptions("\nPick an attribute:");
            PromptNestedEntityResult res = ed.GetNestedEntity(opt);

if (res.Status == PromptStatus.OK)
            {
                if (res.ObjectId.ObjectClass.DxfName.ToUpper() == "ATTRIB")
                {
                    //Ask user to pick a distance as desired width for 
                    //the attribute to fit in. Based on the block, the width 
                    //could be a known value
                    PromptPointOptions popt = new 
                        PromptPointOptions("\nPick width base point:");
                    PromptPointResult pres = ed.GetPoint(popt);
                    if (pres.Status != PromptStatus.OK) return;
                    Point3d basePt = pres.Value;

PromptDistanceOptions dopt = 
                        new PromptDistanceOptions("\nPick width: ");
                    dopt.UseBasePoint = true;
                    dopt.BasePoint = basePt;

PromptDoubleResult dres = ed.GetDistance(dopt);
                    if (dres.Status != PromptStatus.OK) return;

//This is the width we want to fit the attribute text‘s width
                    double w = dres.Value;

using (Transaction tran = 
                        dwg.TransactionManager.StartTransaction())
                    {
                        AttributeReference att = (AttributeReference)tran.GetObject(
                            res.ObjectId, OpenMode.ForWrite);

//Get attribute‘s width, assuming it is placed horizontally
                        double aw = Math.Abs(att.GeometricExtents.MaxPoint.X 
                            - att.GeometricExtents.MinPoint.X);

//This is the WidthFactor
                        double factor = w / aw;
                        att.WidthFactor = factor;

tran.Commit();
                    }
                }
                else
                {
                    Application.ShowAlertDialog("Not an attribute!");
                }
            }
        }
    }
}

CAD.NET调整属性块中文字宽度

时间: 2024-10-02 00:33:11

CAD.NET调整属性块中文字宽度的相关文章

获取块中文字

CString Dialog::GetTextForBlock(AcDbBlockReference *pRef, AcGePoint3d pickPoint){ AcDbEntity *pEnt; CString str=_T(""); AcDbVoidPtrArray ptarr = NULL; Acad::ErrorStatus es=pRef->explode(ptarr); int iLen = ptarr.length(); for (int i = 0; i <

CAD看图软件中文字样式修改的方法

工程师在计算机上用CAD进行设计工作,CAD绘图时常会用到文字,在CAD文件编辑时会添加单行文字和多行文字等等.当我们想要编辑修改文字样式的时候,该怎么办呢?这里教CAD看图软件修改文件样式的步骤. 第一步,打开浏览器搜索迅捷CAD编辑器http://cad.xjpdf.com/,找到软件的下载资源,按照步骤下载安装迅捷CAD编辑器,软件安装完成后,请点击打开软件进入操作界面. 第二步,在软件操作界面中,点击"文件",在文件列表中,点击"打开"按钮,接着在弹出的对话

设置table中的宽度不随文字改变让其固定

设置table中的宽度不随文字改变让其固定 来源:互联网作者:佚名时间:02-17 16:02:28[大 中 小] 页面中table宽度设置width之后,宽度仍然不是固定的,文字太长后不换行,下面有个不错的方法可以有效解决这个问题 页面中table宽度设置width="600px"之后,宽度仍然不是固定的,文字太长后不换行,把table都撑变形了. 解决办法: 1.table 设置 宽度,绝对宽度和相对都可以 table-layout:fixed ; 设置了这个属性,其余所有td都是

table 中 文字长度大于td宽度,导致文字换行 解决方案

1.TD不换行 nowrap属性 表格table的td单元格中,文字长了往往会撑开单元格,但是如果table都不够宽了,就换行了好像(不要较真其他情况,我只说会换行的情况).换行后的表格显得乱糟糟,不太好看,我不喜欢这样的换行.当然可以通过对每列td都设置宽度,那样太麻烦了,并且有时没法预计td中的文字会有多长,没法给固定宽度. 为了让表格里文字不换行(预计也不会太长的字符串),可以给表格里td添加一个nowrap属性,如 <td nowrap>文字内容</td> 这样. 但是如果

HTML5之placeholder属性以及如何更改placeholder属性中文字颜色

今天在群里看到群友问了一个这样的问题,就是如何更改placeholder属性中文字的颜色,以前用过这属性,却是没更改过颜色,于是便试了试,中途遇到些问题,查找资料后特来总结一下. 熟悉HTML5的人应该都知道,placeholder这个属性是HTML5中新增的属性,该属性的作用是规定可描述输入字段预期值的简短的提示信息,该提示会在用户输入之前显示在输入字段中,会在用户输入字段后消失,有些浏览器则是获得焦点后该提示便消失(如Safari.IE) 适用范围:placeholder 属性适用于下面的

【CSS】 元素块与文字的各种居中解决方案

元素块的居中 首先有这样一个200*200px的元素块在界面内. 元素块的水平居中: 如果想要让其水平居中,则有三种方法: 第一种是知道屏幕的长宽,则根据计算,(屏幕宽X-元素块宽Y)/ 2的结果是元素块向右偏移的长度,不过这种方法很蠢笨,通过外边距调整元素的位置只有在调整元素间的间距时才有作用: 至于第二种,就很合适了,我们不必知道屏幕的宽度,只需要设置外边距: .box { width: 200px; height: 200px; background: #333; margin-left:

select中文字垂直居中解决办法

我们知道select标签在各个浏览器中的属性和各浏览器的支持各有些不同,从而造成select选择框在各浏览器的显示有不同,下面我们通过对主要 外形CSS属性的支持,打造全兼容select. 我对select的height.padding.line-height分别利用控制变量的方法写了个DEMO在各浏览器上测试三种情况:height.100.padding.0.height.no.padding.100.no.height.no.padding,结果如  链接图片各浏览器DEMO外观 我们可以得

如何在NPOI中实现宽度自适应和高度自适应

转自: blog.csdn.net/echoshinian100/article/details/38540321 由于系统需要在网页上导 出Excel文件,最近花了一段时间去学习NPOI插件.通过NPOI插件在服务端来生成Excel文件流并下载到本地.NPOI实际上和Excel一毛 钱关系都没有,它只是完全破译了Excel文件的存储格式,并用C#来生成同样的格式从而被识别为Excel文件. NPOI和Excel VBA相比优点很多,首先是Excel VBA中的对象太多,而且是基于Visual

JS中各种宽度、高度、位置、距离总结

1.window.screen 浏览器与屏幕的距离,screenX(screenLeft),screenY(screenTop) 2.window.scrollTo(x,y) 将纵向滚动条移动到相对于窗体高度为y个像素的位置,同理X, (0,0)为返回顶部,即将滚动条移动到(0,0)位置. 3.window.scrollBy(x,y) 相对于当前滚动条的移动,将纵向(横向)滚动条移动到相对于当前纵向(横向)滚动条高度为y(x)个像素的位置,例:Y正值向下移动,负值向上移动.同理X. 4.wind