在矩形的中点创建多行文字
帮助如何在矩形的中点和相同角度添加多行文字?你能从矩形#039;s边界框,然后计算中点 ;我可以';我无法帮助您使用VBA,但前几天我在Vlisp中完成了几乎相同的编码任务。
角度是3D还是2D? 角度为2D 描述矩形。大小都一样吗。 这里是#039;这是我的一个程序中的一个小片段 ;但它使用常规文本 ;它允许用户选择两个点来创建矩形,并自动将文本添加到矩形的中心
Option Explicit
Public Sub DrawTextInRectangle()
Dim pnt1 As Variant, pnt2 As Variant
Dim ctr(0 To 2) As Double, ht As Double
Dim newText As AcadText
Dim strText As String
Dim intTextHeight As Integer
strText = "THIS SPACE FOR RENT"
intTextHeight = 10
If getPoints1(pnt1, pnt2) = 0 Then
Rectangle pnt1, pnt2
' Now add text at the midpoint of the rectangle...
ctr(0) = (pnt1(0) + pnt2(0)) / 2
ctr(1) = (pnt1(1) + pnt2(1)) / 2
ctr(2) = (pnt1(2) + pnt2(2)) / 2
ht = Abs(pnt1(1) - pnt2(1)) / 2
Set newText = ThisDrawing.ModelSpace.AddText(UCase(strText), ctr, intTextHeight)
newText.Alignment = 4
newText.TextAlignmentPoint = ctr
newText.StyleName = "Standard"
newText.Update
End If
End Sub
' From Frank Oquendo
Private Function Rectangle(Point1, Point2) As AcadLWPolyline
Dim vertices(0 To 7) As Double, pl As AcadLWPolyline
vertices(0) = CDbl(Point1(0)): vertices(1) = CDbl(Point1(1))
vertices(2) = CDbl(Point2(0)): vertices(3) = CDbl(Point1(1))
vertices(4) = CDbl(Point2(0)): vertices(5) = CDbl(Point2(1))
vertices(6) = CDbl(Point1(0)): vertices(7) = CDbl(Point2(1))
Set pl = ThisDrawing.ModelSpace.AddLightWeightPolyline(vertices)
pl.Closed = True
Set Rectangle = pl
End Function
Private Function getPoints1(pt1 As Variant, pt2 As Variant) As Integer
' This sub returns two points, or an error flag if cancelled
On Error Resume Next
pt1 = ThisDrawing.Utility.GetPoint(, "Specify first corner:")
If Err Then
getPoints1 = -1
Exit Function
End If
pt2 = ThisDrawing.Utility.GetCorner(pt1, "Specify opposite corner:")
If Err Then
getPoints1 = -1
Exit Function
End If
On Error GoTo 0
End Function
贴上 即#039;s、 嗯……不是矩形 ;关闭,但它';s不是矩形
听起来/看起来你需要找到闭合多段线的质心?? 这可能是一个很容易做到的事情,并将帮助每个人,如果你试图先编码一些东西,你已经做了什么代码,到目前为止
谢谢。 在我的绘图中,我有一个不同的矩形,我得到一些点,并创建了一条闭合的多段线  ;将LastObj视为身份  ;Dim objLWPolyline(0)作为acadlwpolyleine  ;Dim minExt作为变体  ;Dim maxExt作为变体  ;将MTEXTEXT设置为AcadMText  ;将拐角(0到2)变暗为双 
  ;Dim Pt作为变体    ;varArea作为字符串    ;pstr作为字符串    ;SysVarName作为字符串    ;sysVarName2作为字符串    ;VarData作为变体    ;intData为双精度    ;textObj作为AcadText,_    ;文本作为变体    ;高度作为变量    ;消息作为字符串    ;Varmimpt作为变体    ;varMaxPt作为变体  ;SysVarName=";DIMSCALE“
  ;sysVarName2=";面积“
  ;使用此图纸    。设置变量;OSMODE;,0    。设置变量;CMDECHO“;,0    '' Tony Tanzillo的多getpoint方法    ;消息=vbCrLf&&引用;选择内部点
    ;Do       ;出错时继续下一步       ;Pt=.Utility。获取点(,Msg)
       ;如果出现错误,则         ;犯错误清除         ;退出Do       ;如果结束       ;错误转到0时       ;pstr=替换(CStr(Pt(0)),“""E";)&"&引用&_
          ;替换(CStr(Pt(1)),“""E";)
       ;。SendCommand Chr(3)&;Chr(3)&"E_-“边界”&;vbCr&;pstr&;vbCr&;vbCr      
        ;设置LastObj=.ModelSpace.Item.ModelSpace.Count-1     ;如果LastObj的类型是AcadLWPolyline,则        ;设置objLWPolyline(0)=LastObj          ;objLWPolyline(0)。GetBoundingBox varMinPt,varMaxPt          ;objLWPolyline(0)。删除      ;如果结束      ;转角(0)=varMinPt(0):转角(1)=varMaxPt(1):转角(2)=0      ;高度=2000       
       ;设置MTEXPOBJ=.ModelSpace。AddMText(角点,10,“50”)
         ;MTEXPOBJ。高度=高度          ;MTEXPOBJ。旋转MTEXPOBJ。插入点,lineObj。角度          ;MTEXPOBJ。移动MTextObj。插入点,lineObj。终点        ;设置textObj=.ModelSpace。AddText(varArea,Pt,Height)
&039        ;text目标更新;埃克索布。更新       ;消息=vbCrLf&&引用;下一个内部点或回车退出:
    ;循环    ;错误转到0时    。设置变量;OSMODE;,703    。设置变量;CMDECHO“;,1  ;以结尾  ;MsgBox“;“完成”
结束Sub
页:
[1]
2