- 积分
- 3320
- 明经币
- 个
- 注册时间
- 2008-4-16
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
大家好,以下是我参照网上自定义实体的代码改写的。主要是为块添加一个文字注记。在使用过程中,被添加的这个文字能很好的显示,但是有一个问题是,这个块中会额外生成一些像参数之类的文字,数量不定。我不知道这是为什么,请哪位朋友指点一下!
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
|