明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1958|回复: 4

修改属性块的比例问题

[复制链接]
发表于 2012-11-23 21:37:15 | 显示全部楼层 |阅读模式
           对于属性块,在AutoCAD中块的属性面板中修改其XYZ的比例时,其属性标注的大小、位置会随着比例变化。但是在程序中修改BlockReference的ScaleFactors后,其属性标注的大小及位置并不改变。
           之后,遍历BlockReference的AttributeCollection,获取到每个AttributeReference。这里可以设置AttributeReference的高度,但是其Position或者AligmentPoint却无法通过程序改变。请教各位大神,要怎么通过程序改变AttributeReference的位置?
发表于 2012-11-23 22:54:44 | 显示全部楼层
public bool LockPositionInBlock { get; }
    Autodesk.AutoCAD.DatabaseServices.AttributeReference 的成员
public bool LockPositionInBlock { set; get; }
    Autodesk.AutoCAD.DatabaseServices.AttributeDefinition 的成员
 楼主| 发表于 2012-11-25 15:48:47 | 显示全部楼层
sieben 发表于 2012-11-23 22:54
public bool LockPositionInBlock { get; }
    Autodesk.AutoCAD.DatabaseServices.AttributeReference 的 ...

多谢,问题解决了。不过不知道你看的是哪个版本的帮助,我用的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;
发表于 2013-5-27 23:16:10 | 显示全部楼层
高手 能不能来段完整的?小弟正被这问题困扰着呢!
发表于 2013-5-28 22:43:47 | 显示全部楼层
备忘:

double scale =2; //需要放大 or  缩小的倍数
BlockReference br = ent as BlockReference;
Matrix3d sMtx = Matrix3d.Scaling(scale, br.Position);
br.TransformBy(sMtx);
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 15:24 , Processed in 0.159722 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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