明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3103|回复: 6

[重定义] 关于自定义实体

[复制链接]
发表于 2014-10-10 01:10:47 | 显示全部楼层 |阅读模式
大家好,以下是我参照网上自定义实体的代码改写的。主要是为块添加一个文字注记。在使用过程中,被添加的这个文字能很好的显示,但是有一个问题是,这个块中会额外生成一些像参数之类的文字,数量不定。我不知道这是为什么,请哪位朋友指点一下!
   public override bool WorldDraw(Drawable drawable, WorldDraw wd)
        {
            //如果为直线,则进行规则重定义来改变直线的外形
            if (drawable is BlockReference && Properties.Settings.Default.WordViewEd)
            {
                BlockReference pesBlk = drawable as BlockReference;
                if (pesBlk.XData == null && !WendaoPipesCADPro.XDataEditor.FieldExists(pesBlk.XData, "显示内容"))
                {
                    return false;
                }

                //绘制规则重定义过的属性,由下面的SetAttributes函数进行控制
                base.WorldDraw(pesBlk, wd);

                string showStr = WendaoPipesCADPro.XDataEditor.GetXDataFieldValue(pesBlk.XData, "显示内容");
                if (!pesBlk.Id.IsNull && showStr.Trim().ToUpper() != "")
                {
                    wd.SubEntityTraits.Color = Autodesk.AutoCAD.Colors.EntityColor.LookUpAci(0, 0, 0);
                    wd.SubEntityTraits.LineWeight = LineWeight.LineWeight000;

                    var pipePoint = new ExtrudedSurface();
                    WdPoint3d wdPesPtTxtPt = new WdPoint3d(pesBlk.Position.ToArray()) + new WdPoint3d(0.6, 0.6, 0);
                    wd.Geometry.Text(new Point3d(wdPesPtTxtPt.ToArray()), new Vector3d(0, 0, 1), new Vector3d(1, 1, 0), 0.5, 0.8, 0, showStr);                    
                    pipePoint.WorldDraw(wd);  
                    pipePoint.Dispose();
                }
                return true;
            }
            return base.WorldDraw(drawable, wd);
        }

以下是效果图:

图中YS***中我添加的,但其他的它是系统自己生成的,一直想把它取消掉,但没有找到相应的办法解决,不知哪位朋友可以帮我想一下办法。




本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2014-10-10 07:47:36 来自手机 | 显示全部楼层
base.WorldDraw(pesBlk,wd)应该去掉吧
 楼主| 发表于 2014-10-10 08:43:20 | 显示全部楼层
雪山飞狐_lzh 发表于 2014-10-10 07:47
base.WorldDraw(pesBlk,wd)应该去掉吧

没有这句,添加的文字不会显示。请问这个文字的对正方式应该怎么设置啊?
 楼主| 发表于 2014-10-10 09:02:47 | 显示全部楼层
雪山飞狐_lzh 发表于 2014-10-10 07:47
base.WorldDraw(pesBlk,wd)应该去掉吧

抱歉,我说错了,应该是没有base.WorldDraw(pesBlk,wd)的话,块的样子就显示不出来。
 楼主| 发表于 2014-10-10 09:04:39 | 显示全部楼层
雪山飞狐_lzh 发表于 2014-10-10 07:47
base.WorldDraw(pesBlk,wd)应该去掉吧

但文字就显示正确了,不再有多余的文字。块样显不出来。
发表于 2014-10-10 10:10:33 来自手机 | 显示全部楼层
太明白你的需求 属性块不就可以满足要求了?
 楼主| 发表于 2014-10-10 11:02:00 | 显示全部楼层
雪山飞狐_lzh 发表于 2014-10-10 10:10
太明白你的需求 属性块不就可以满足要求了?

找到问题了,原来那个文字是我自定义线所造成的,线的定义条件设置不足,竟把块中的线也定义了。只是现在有个问题是文字的对正方式没有找到方法设置。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-12-24 07:15 , Processed in 0.177721 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表