在矩形的中点创建多行文字
帮助如何在矩形的中点和相同角度添加多行文字?
**** Hidden Message ***** 能否从矩形的边界框中获得两个坐标,然后计算中点?我无法帮助您使用VBA,但前几天我在Vlisp中完成了几乎相同的编码任务。
角度是3D还是2D? 角度是2D 描述矩形。它是否具有相同的大小等。 这是我的一个程序中的一个小片段。 它使用常规文本。 它允许用户选择两个点来创建矩形,并自动在矩形的中心添加文本。
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
附加 那是,嗯.....不是矩形。 关闭,但它不是矩形。
听起来/看起来像你需要找到一个闭合折线的质心,而不是?? 这很容易做到,并且会帮助每个人,如果你尝试先编码,到目前为止你已经完成了多少代码?
谢谢。 在我的绘图中,我有一个不同的矩形<br>我得到了一些点,并创建了一条闭合多段线<br>Dim LastObj作为AcadEntity<br>Dim objLWPolyline(0)作为AcadLWPolyline<br>Dim minExt作为变体<br>作为变体的Dim maxExt<br>将Dim MTextObj作为AcadMText<br>创建了一个双<br>的Dim角(0到2)<作为变量的Dim Pt,_<br>varArea作为字符串,_
pstr作为字符串,_
sysVarName2作为字符串,
sysVarName2作为字符串,_,_,0<br>Tony Tanzillo的多获取点方法<br>Msg=vbCrLf&选择一个内部点<br>在出错时执行<br>下一步<br>Pt=.Utility。获取点(,Msg)
如果出错,则
出错。如果
在错误转到0时,清除
退出并执行
结束
pstr=Replace(CStr(Pt(0))、“、”、“、“)&”、“&
Replace((CStr)(Pt(1))、“,”、“,“)
。SendCommand Chr(3)&Chr(三)&vbCr&pstr&vbCr&vbCr&vbCr<br>设置LastObj=.ModelSpace.Item(.ModelSpace.Count-1)<br>如果LastObj的类型是AcadLWPolyline,则设置objlwpolyleine(0)=lastobjl<br>objlvpolyline(0)。GetBoundingBox varMinPt,varMaxPt<br>objLWPolyline(0)。如果<br>角(0)=varMinPt(0):角(1)=var maxpt(1):角(2)=0#<br>高度=2000#<br>则删除<br>结束<br>设置MTextObj=.ModelSpace。添加MTEXT(角落,10,“50”)
MTEXTEXT。高度=高度
“mtexobj。旋转MTBJ。插入点,lineObj。角度<br>‘MTextObj。移动MTBJ。插入点,lineObj。端点<br>设置textObj=.ModelSpace。添加文本(可变区域,Pt,高度)
'textObj。更新<br>Msg=vbCrLf&“下一个内部点或回车退出:<br>循环<br>在错误转到0<br>时。SetVariable“OSMODE”,703<br>setvariate“CMDECHO”,1<br>以<br>MsgBox“完成”结束<br>结束子<br>
页:
[1]
2