文本对齐点问题
Visual Basic问题使用AutoCAD 2009
大家好,
也许我应该试着重新措辞我之前的问题,因为我没有得到任何回应。我想我的问题有点复杂。这里是一个简化的版本,我想帮助理解。
当我遍历放置在标题栏中的属性时:
1.如何识别已放置在图形中的属性的文本对齐点?(“attObj.TextAlignmentPoint”不返回可以比较的值)
2.如何识别已放置在图形中的属性的插入点?(“attObj.InsertionPoint”不返回可以比较的值)
有人能帮我吗?
非常感谢。
迈克 我没有在autocad中使用vb,只有lisp,但也许我可以猜测,当你说它不返回值时,你可以比较,你的意思是它作为一个变体出现??如果没有,那么我就卡住了,否则你需要找到一个从变量->列表或类似的转换函数。或者,如果您不需要知道这一点,您可以在进一步的代码中使用变体。对不起,如果这对你没有帮助的话。vb有一些描述函数的恰当方法吗? 嗨,迈克!
看看这个简单的例子
希望有意义
Sub getAttProps()
Dim BlockRef As AcadBlockReference
Dim varPt As Variant
Dim subEnt As Object
Dim oAttRef As AcadAttributeReference
Dim insPt As Variant
Dim algnPt As Variant
Dim align As Integer
Dim tmax, cxdata
ThisDrawing.Utility.GetSubEntity subEnt, varPt, tmax, cxdata, vbLf & "Select a block subentity"
If TypeOf subEnt Is AcadAttributeReference Then
Set oAttRef = subEnt
insPt = oAttRef.InsertionPoint
algnPt = oAttRef.TextAlignmentPoint
align = oAttRef.Alignment
MsgBox "Alignment: " & align & vbCr & _
"Insertion Point: " & CStr(Round(insPt(0), 2)) & "," & CStr(Round(insPt(1), 2)) & "," & CStr(Round(insPt(2), 2)) & vbCr & _
"TextAlignmentPoint Point: " & CStr(Round(algnPt(0), 2)) & "," & CStr(Round(algnPt(1), 2)) & "," & CStr(Round(algnPt(2), 2))
End If
End Sub
~'J'~ **唷**我希望重炮能很快到达眨眼:
拜托
你让我笑了
助教
~'J'~ 大家好,
非常感谢你的帮助。昨晚办公室一片漆黑,我搔了搔头,在键盘上敲了几个小时,想出了一个对我有用的办法(见下文)。
我想我可以研究一下你提供的Fixo代码,希望能清理一下我目前为止的工作。
这就是我想到的:
For Each oLayout In adoc.Layouts
For Each oEnt In oLayout.Block
If TypeOf oEnt Is AcadBlockReference Then
Set blkRefObj = oEnt
If StrComp(blkRefObj.Name, OriginalTitleblock, vbTextCompare) = 0 Then
attArr = blkRefObj.GetAttributes
For k = 0 To UBound(attArr)
Set attObj = attArr(k)
ka = Left(attObj.TextAlignmentPoint(0), 11)
kb = Left(attObj.TextAlignmentPoint(1), 10)
kc = attObj.TextAlignmentPoint(2)
kx = Left(attObj.InsertionPoint(0), 11)
ky = Left(attObj.InsertionPoint(1), 10)
kz = attObj.InsertionPoint(2)
k_TextAlignmentPoint = ka & "," & kb & "," & kc
k_InsertionPoint = kx & "," & ky & "," & kz
If StrComp(k_TextAlignmentPoint, OriginalTextAlignmentPoint_1, vbTextCompare) = 0 Then
a1 = attObj.TextString
再次非常感谢您的帮助!
迈克
页:
[1]