just_joke 发表于 2012-11-23 21:37:00

修改属性块的比例问题

对于属性块,在中块的属性面板中修改其XYZ的比例时,其属性标注的大小、位置会随着比例变化。但是在程序中修改BlockReference的ScaleFactors后,其属性标注的大小及位置并不改变。
         之后,遍历BlockReference的AttributeCollection,获取到每个AttributeReference。这里可以设置AttributeReference的高度,但是其Position或者AligmentPoint却无法通过程序改变。请教各位大神,要怎么通过程序改变AttributeReference的位置?

sieben 发表于 2012-11-23 22:54:00

public bool LockPositionInBlock { get; }
    Autodesk.AutoCAD.DatabaseServices.AttributeReference 的成员
public bool LockPositionInBlock { set; get; }
    Autodesk.AutoCAD.DatabaseServices.AttributeDefinition 的成员

just_joke 发表于 2012-11-25 15:48:00


多谢,问题解决了。不过不知道你看的是哪个版本的帮助,我用的autocad map 3d 2012,和你的还有点差别。
我定义的属性块中有些属性的位置是锁定的,有些没锁定,有些设置了对齐方式,另外的没有。具体实现代码如下:
AttributeReference.LockPositionInBlock = false;
try
{
    AttributeReference.Alignment = AttributeReference.Alignment.ScaleBy(TansScale,BlockReference.Position);
}
catch
{
    AttributeReference.Position= AttributeReference.Position.ScaleBy(TansScale,BlockReference.Position);
}
AttributeReference.LockPositionInBlock = true;

shmily1023 发表于 2013-5-27 23:16:00

高手 能不能来段完整的?小弟正被这问题困扰着呢!

shmily1023 发表于 2013-5-28 22:43:00

备忘:
double scale =2; //需要放大 or缩小的倍数
BlockReference br = ent as BlockReference;
Matrix3d sMtx = Matrix3d.Scaling(scale, br.Position);
br.TransformBy(sMtx);
页: [1]
查看完整版本: 修改属性块的比例问题