乐筑天下

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

[编程交流] 文本对齐点问题

[复制链接]

16

主题

43

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 12:07:35 | 显示全部楼层 |阅读模式
Visual Basic问题
使用AutoCAD 2009
 
大家好,
 
也许我应该试着重新措辞我之前的问题,因为我没有得到任何回应。我想我的问题有点复杂。这里是一个简化的版本,我想帮助理解。
 
当我遍历放置在标题栏中的属性时:
 
1.如何识别已放置在图形中的属性的文本对齐点?(“attObj.TextAlignmentPoint”不返回可以比较的值)
2.如何识别已放置在图形中的属性的插入点?(“attObj.InsertionPoint”不返回可以比较的值)
 
有人能帮我吗?
 
非常感谢。
迈克
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 12:23:23 | 显示全部楼层
我没有在autocad中使用vb,只有lisp,但也许我可以猜测,当你说它不返回值时,你可以比较,你的意思是它作为一个变体出现??如果没有,那么我就卡住了,否则你需要找到一个从变量->列表或类似的转换函数。或者,如果您不需要知道这一点,您可以在进一步的代码中使用变体。对不起,如果这对你没有帮助的话。vb有一些描述函数的恰当方法吗?
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 12:34:43 | 显示全部楼层
嗨,迈克!
 
看看这个简单的例子
希望有意义
 
  1. Sub getAttProps()
  2.    Dim BlockRef As AcadBlockReference
  3.    Dim varPt As Variant
  4.    Dim subEnt As Object
  5.    Dim oAttRef As AcadAttributeReference
  6.    Dim insPt As Variant
  7.    Dim algnPt As Variant
  8.    Dim align As Integer
  9.    Dim tmax, cxdata
  10.    ThisDrawing.Utility.GetSubEntity subEnt, varPt, tmax, cxdata, vbLf & "Select a block subentity"
  11.    If TypeOf subEnt Is AcadAttributeReference Then
  12.        Set oAttRef = subEnt
  13.        insPt = oAttRef.InsertionPoint
  14.        algnPt = oAttRef.TextAlignmentPoint
  15.        align = oAttRef.Alignment
  16.        MsgBox "Alignment: " & align & vbCr & _
  17.               "Insertion Point: " & CStr(Round(insPt(0), 2)) & "," & CStr(Round(insPt(1), 2)) & "," & CStr(Round(insPt(2), 2)) & vbCr & _
  18.               "TextAlignmentPoint Point: " & CStr(Round(algnPt(0), 2)) & "," & CStr(Round(algnPt(1), 2)) & "," & CStr(Round(algnPt(2), 2))
  19.    End If
  20. End Sub

 
~'J'~
回复

使用道具 举报

14

主题

271

帖子

257

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
70
发表于 2022-7-6 12:48:30 | 显示全部楼层
**唷**我希望重炮能很快到达眨眼:
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 13:04:19 | 显示全部楼层
 
拜托
你让我笑了
助教
 
~'J'~
回复

使用道具 举报

16

主题

43

帖子

33

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
85
发表于 2022-7-6 13:17:35 | 显示全部楼层
大家好,
 
非常感谢你的帮助。昨晚办公室一片漆黑,我搔了搔头,在键盘上敲了几个小时,想出了一个对我有用的办法(见下文)。
 
我想我可以研究一下你提供的Fixo代码,希望能清理一下我目前为止的工作。
 
这就是我想到的:
  1. For Each oLayout In adoc.Layouts
  2.    For Each oEnt In oLayout.Block
  3.        If TypeOf oEnt Is AcadBlockReference Then
  4.        Set blkRefObj = oEnt
  5.            If StrComp(blkRefObj.Name, OriginalTitleblock, vbTextCompare) = 0 Then
  6.            attArr = blkRefObj.GetAttributes
  7.                For k = 0 To UBound(attArr)
  8.                Set attObj = attArr(k)
  9.                ka = Left(attObj.TextAlignmentPoint(0), 11)
  10.                kb = Left(attObj.TextAlignmentPoint(1), 10)
  11.                kc = attObj.TextAlignmentPoint(2)
  12.                kx = Left(attObj.InsertionPoint(0), 11)
  13.                ky = Left(attObj.InsertionPoint(1), 10)
  14.                kz = attObj.InsertionPoint(2)
  15.                k_TextAlignmentPoint = ka & "," & kb & "," & kc
  16.                k_InsertionPoint = kx & "," & ky & "," & kz
  17.                    If StrComp(k_TextAlignmentPoint, OriginalTextAlignmentPoint_1, vbTextCompare) = 0 Then
  18.                        a1 = attObj.TextString

 
再次非常感谢您的帮助!
迈克
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-5 10:23 , Processed in 0.850058 second(s), 64 queries .

© 2020-2025 乐筑天下

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