明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: davehuhudave

关于块定义AttributeDefinition

  [复制链接]
 楼主| 发表于 2010-8-3 08:33:00 | 显示全部楼层

我用的cad2007,net2005

 楼主| 发表于 2010-8-3 08:36:00 | 显示全部楼层

主要代码再贴一下:

Dim pg As MyPropertyGrid.CustomClass = PropertyGrid1.SelectedObject
        Dim ed As Editor = AcadApp.DocumentManager.MdiActiveDocument.Editor
        Dim db As Database = AcadApp.DocumentManager.MdiActiveDocument.Database
        Dim lock As DocumentLock = AcadApp.DocumentManager.MdiActiveDocument.LockDocument()
        Using trans As Transaction = db.TransactionManager.StartTransaction()
            Dim attref As AttributeDefinition = trans.GetObject(selID, OpenMode.ForWrite)
            'attref.TextString = pg.Item("属性值").ToString
            Dim mCustomer As CustomerFilter = pg.Item("属性值")
            attref.TextString = mCustomer.path
            Dim s As String = pg.Item("显示否").ToString
            If String.Compare(s, "True") = 0 Then
                attref.Visible = True
            Else
                attref.Visible = False
            End If
            Dim c As Color = pg.Item("颜色")
            Dim cc As Autodesk.AutoCAD.Colors.Color = Autodesk.AutoCAD.Colors.Color.FromColor(c)
            attref.Color = cc
            s = pg.Item("大小").ToString
            attref.Height = Int(Val(s))
            s = pg.Item("旋转角").ToString
            attref.Rotation = Double.Parse(s)

    ''''''''''''''''''''''''''''''''''''''''''''''''上面的属性全部改掉了
            Dim p As Point = pg.Item("相对位置")
            attref.Position = New Point3d(p.X, p.Y, 0)

''''''''''''''''''''''''''''''''''''''''''''''''''''''此时跟踪得到也改掉了
            trans.Commit()

''''''''''''''''''''''''''''''''''''''''''''''''''''''''跟踪又改回去了Position的值,而其他属性已经改掉,没有变回去
            ed.Regen()
        End Using
        lock.Dispose()

 楼主| 发表于 2010-8-4 09:10:00 | 显示全部楼层
??anyone help?
发表于 2010-8-4 10:05:00 | 显示全部楼层

用7楼的代码测试下

发表于 2010-8-4 13:42:00 | 显示全部楼层

原因就是你的属性定义的对齐点没有更新。

加入下面的代码试一试吧。

 

                    If attdef.HorizontalMode <> TextHorizontalMode.TextLeft Then

                        attdef.AlignmentPoint = attdef.Position

                    End If

发表于 2010-8-4 14:58:00 | 显示全部楼层

cobalt说的没错

如果dbtext、attdef、attref的式样不是左下或调整

Position是无效的

 楼主| 发表于 2010-8-5 13:12:00 | 显示全部楼层
果然好主意,可是新问题出现了,这样我采取了不使用任何对齐方式的方式,结果AttributeDefinition 可以改变任何属性了,但是她的块参照属性AttributeReference却改不了TextString了,现象差不多,只不过变成了TextString属性,以前是可以的
 楼主| 发表于 2010-8-5 13:16:00 | 显示全部楼层
所有属性都不能改,晕
 楼主| 发表于 2010-8-5 13:39:00 | 显示全部楼层
o了,搞错了,
 楼主| 发表于 2010-8-5 13:41:00 | 显示全部楼层
现在发现都能改了,但是文字却不能显示了,实际位置没错,显示状态没错,就是没看到,点击属性也发现名称是有的,就是显示不出来
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-29 16:46 , Processed in 0.172927 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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