yxr_MJTD 发表于 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***中我添加的,但其他的它是系统自己生成的,一直想把它取消掉,但没有找到相应的办法解决,不知哪位朋友可以帮我想一下办法。




雪山飞狐_lzh 发表于 2014-10-10 07:47:36

base.WorldDraw(pesBlk,wd)应该去掉吧

yxr_MJTD 发表于 2014-10-10 08:43:20

雪山飞狐_lzh 发表于 2014-10-10 07:47 static/image/common/back.gif
base.WorldDraw(pesBlk,wd)应该去掉吧

没有这句,添加的文字不会显示。请问这个文字的对正方式应该怎么设置啊?

yxr_MJTD 发表于 2014-10-10 09:02:47

雪山飞狐_lzh 发表于 2014-10-10 07:47 static/image/common/back.gif
base.WorldDraw(pesBlk,wd)应该去掉吧

抱歉,我说错了,应该是没有base.WorldDraw(pesBlk,wd)的话,块的样子就显示不出来。

yxr_MJTD 发表于 2014-10-10 09:04:39

雪山飞狐_lzh 发表于 2014-10-10 07:47 static/image/common/back.gif
base.WorldDraw(pesBlk,wd)应该去掉吧

但文字就显示正确了,不再有多余的文字。块样显不出来。

雪山飞狐_lzh 发表于 2014-10-10 10:10:33

太明白你的需求 属性块不就可以满足要求了?

yxr_MJTD 发表于 2014-10-10 11:02:00

雪山飞狐_lzh 发表于 2014-10-10 10:10 static/image/common/back.gif
太明白你的需求 属性块不就可以满足要求了?

找到问题了,原来那个文字是我自定义线所造成的,线的定义条件设置不足,竟把块中的线也定义了。只是现在有个问题是文字的对正方式没有找到方法设置。
页: [1]
查看完整版本: 关于自定义实体