乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 71|回复: 4

修改属性块的比例问题

[复制链接]

10

主题

20

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 2012-11-23 21:37:00 | 显示全部楼层 |阅读模式
对于属性块,在中块的属性面板中修改其XYZ的比例时,其属性标注的大小、位置会随着比例变化。但是在程序中修改BlockReference的ScaleFactors后,其属性标注的大小及位置并不改变。
           之后,遍历BlockReference的AttributeCollection,获取到每个AttributeReference。这里可以设置AttributeReference的高度,但是其Position或者AligmentPoint却无法通过程序改变。请教各位大神,要怎么通过程序改变AttributeReference的位置?
回复

使用道具 举报

32

主题

651

帖子

8

银币

中流砥柱

Rank: 25

铜币
779
发表于 2012-11-23 22:54:00 | 显示全部楼层
public bool LockPositionInBlock { get; }
    Autodesk.AutoCAD.DatabaseServices.AttributeReference 的成员
public bool LockPositionInBlock { set; get; }
    Autodesk.AutoCAD.DatabaseServices.AttributeDefinition 的成员
回复

使用道具 举报

10

主题

20

帖子

1

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
60
发表于 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;
回复

使用道具 举报

12

主题

25

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
73
发表于 2013-5-27 23:16:00 | 显示全部楼层
高手 能不能来段完整的?小弟正被这问题困扰着呢!
回复

使用道具 举报

12

主题

25

帖子

4

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
73
发表于 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);
回复

使用道具 举报

发表回复

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2025-3-14 18:39 , Processed in 2.180568 second(s), 62 queries .

© 2020-2025 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表