关于自定义实体
大家好,以下是我参照网上自定义实体的代码改写的。主要是为块添加一个文字注记。在使用过程中,被添加的这个文字能很好的显示,但是有一个问题是,这个块中会额外生成一些像参数之类的文字,数量不定。我不知道这是为什么,请哪位朋友指点一下!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***中我添加的,但其他的它是系统自己生成的,一直想把它取消掉,但没有找到相应的办法解决,不知哪位朋友可以帮我想一下办法。
base.WorldDraw(pesBlk,wd)应该去掉吧 雪山飞狐_lzh 发表于 2014-10-10 07:47 static/image/common/back.gif
base.WorldDraw(pesBlk,wd)应该去掉吧
没有这句,添加的文字不会显示。请问这个文字的对正方式应该怎么设置啊? 雪山飞狐_lzh 发表于 2014-10-10 07:47 static/image/common/back.gif
base.WorldDraw(pesBlk,wd)应该去掉吧
抱歉,我说错了,应该是没有base.WorldDraw(pesBlk,wd)的话,块的样子就显示不出来。 雪山飞狐_lzh 发表于 2014-10-10 07:47 static/image/common/back.gif
base.WorldDraw(pesBlk,wd)应该去掉吧
但文字就显示正确了,不再有多余的文字。块样显不出来。 太明白你的需求 属性块不就可以满足要求了? 雪山飞狐_lzh 发表于 2014-10-10 10:10 static/image/common/back.gif
太明白你的需求 属性块不就可以满足要求了?
找到问题了,原来那个文字是我自定义线所造成的,线的定义条件设置不足,竟把块中的线也定义了。只是现在有个问题是文字的对正方式没有找到方法设置。
页:
[1]