关于采用VB.net对Auto CAD图块中的属性文字进行缩放的问题。
vb吧
全部回复
仅看楼主
level 2
sanmujunace 楼主
用VBA编写了一个宏,将excel表格中的数据填写的CAD图块的属性中,如果属性填写后文字超出图块的大小,就对文字进行缩放,VBA中运行正常。现在准备用vb.net做一个独立的程序,代码导入vb.net后,无法实现对文字进行缩放了,而且对块的属性进行遍历时,用GetBoundingBox函数只能识别第一个属性的文字的坐标,后面的其他属性的文字坐标无法再读取出来,始终保持为第一个属性的坐标。请问这是怎么回事啊?代码应该如何修改啊?麻烦大哥们帮忙看一下吧,谢谢!
对某一个块的操作的关键代码及如下:
blk = dir_dwg + "进线" + ".dwg" '图块路径及图块名称
blk_obj = AcadApp.ActiveDocument.ModelSpace.InsertBlock(intp, blk, 1, 1, 1, 0) '插入图块
attVars = blk_obj.GetAttributes '获得图块的属性
For k = 0 To UBound(attVars)
Select Case attVars(k).TagString
Case "断路器型号"
attVars(k).TextString = arr_FuHeBiao(i, duanluqi)
attVars(k).GetBoundingBox(minExt, maxExt)
If minExt(0) < intp(0) Or maxExt(0) > (intp(0) + 20) Then '文字左端坐标小于方框的左端坐标,或者文字右端坐标大于方框右端的坐标,即可判断为文字已超出方框
attVars(k).Alignment = acAlignmentFit()
fitPoint(0) = intp(0) + 0.5 : fitPoint(1) = minExt(1) : fitPoint(2) = minExt(2)
attVars(k).InsertPoint = fitPoint
fitPoint(0) = intp(0) + 19.5 : fitPoint(1) = minExt(1) : fitPoint(2) = minExt(2)
attVars(k).TextAlignmentPoint = fitPoint
End If
Case "脱扣器型号"
代码同上
...........
End Select
Next k
2020年01月01日 07点01分 1
level 2
sanmujunace 楼主
运行结果截图如下:
2020年01月01日 07点01分 2
level 11
我没用过.net,不太熟悉,个人的判断如下:
attVars(k).Alignment = acAlignmentFit()
这句估计有点问题吧。acAlingnmentFit是个vba的常数,代表了属性按填充方式对齐?在.net中应该没有这个常数定义的,所以导致代码编辑时需要加()括号,.net系统把它当成了函数调用吧。
2021年08月16日 03点08分 3
1