乐筑天下

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

在矩形的中点创建多行文字

[复制链接]

34

主题

118

帖子

1

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
254
发表于 2007-5-30 07:51:20 | 显示全部楼层 |阅读模式
帮助
如何在矩形的中点和相同角度添加多行文字?

本帖以下内容被隐藏保护;需要你回复后,才能看到!

游客,如果您要查看本帖隐藏内容请回复
回复

使用道具 举报

0

主题

9

帖子

3

银币

初来乍到

Rank: 1

铜币
9
发表于 2007-5-30 08:36:11 | 显示全部楼层
能否从矩形的边界框中获得两个坐标,然后计算中点?我无法帮助您使用VBA,但前几天我在Vlisp中完成了几乎相同的编码任务。
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2007-5-30 09:58:54 | 显示全部楼层

角度是3D还是2D?
回复

使用道具 举报

34

主题

118

帖子

1

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
254
发表于 2007-5-30 10:02:22 | 显示全部楼层
角度是2D
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-5-30 10:16:35 | 显示全部楼层
描述矩形。它是否具有相同的大小等。
回复

使用道具 举报

34

主题

118

帖子

1

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
254
发表于 2007-5-30 10:20:05 | 显示全部楼层
这是我的一个程序中的一个小片段。 它使用常规文本。 它允许用户选择两个点来创建矩形,并自动在矩形的中心添加文本。
  1. Option Explicit
  2. Public Sub DrawTextInRectangle()
  3.     Dim pnt1 As Variant, pnt2 As Variant
  4.     Dim ctr(0 To 2) As Double, ht As Double
  5.     Dim newText As AcadText
  6.     Dim strText As String
  7.     Dim intTextHeight As Integer
  8.    
  9.     strText = "THIS SPACE FOR RENT"
  10.    
  11.     intTextHeight = 10
  12.     If getPoints1(pnt1, pnt2) = 0 Then
  13.         Rectangle pnt1, pnt2
  14.         ' Now add text at the midpoint of the rectangle...
  15.         ctr(0) = (pnt1(0) + pnt2(0)) / 2
  16.         ctr(1) = (pnt1(1) + pnt2(1)) / 2
  17.         ctr(2) = (pnt1(2) + pnt2(2)) / 2
  18.         ht = Abs(pnt1(1) - pnt2(1)) / 2
  19.         
  20.         Set newText = ThisDrawing.ModelSpace.AddText(UCase(strText), ctr, intTextHeight)
  21.         newText.Alignment = 4
  22.         newText.TextAlignmentPoint = ctr
  23.         newText.StyleName = "Standard"
  24.         newText.Update
  25.     End If
  26. End Sub
  27. ' From Frank Oquendo
  28. Private Function Rectangle(Point1, Point2) As AcadLWPolyline
  29.     Dim vertices(0 To 7) As Double, pl As AcadLWPolyline
  30.     vertices(0) = CDbl(Point1(0)): vertices(1) = CDbl(Point1(1))
  31.     vertices(2) = CDbl(Point2(0)): vertices(3) = CDbl(Point1(1))
  32.     vertices(4) = CDbl(Point2(0)): vertices(5) = CDbl(Point2(1))
  33.     vertices(6) = CDbl(Point1(0)): vertices(7) = CDbl(Point2(1))
  34.     Set pl = ThisDrawing.ModelSpace.AddLightWeightPolyline(vertices)
  35.     pl.Closed = True
  36.     Set Rectangle = pl
  37. End Function
  38. Private Function getPoints1(pt1 As Variant, pt2 As Variant) As Integer
  39. ' This sub returns two points, or an error flag if cancelled
  40.    On Error Resume Next
  41.    pt1 = ThisDrawing.Utility.GetPoint(, "Specify first corner:")
  42.    If Err Then
  43.       getPoints1 = -1
  44.       Exit Function
  45.    End If
  46.    pt2 = ThisDrawing.Utility.GetCorner(pt1, "Specify opposite corner:")
  47.    If Err Then
  48.       getPoints1 = -1
  49.       Exit Function
  50.    End If
  51.    On Error GoTo 0
  52. End Function

回复

使用道具 举报

34

主题

118

帖子

1

银币

后起之秀

Rank: 20Rank: 20Rank: 20Rank: 20

铜币
254
发表于 2007-5-30 10:25:37 | 显示全部楼层
附加
回复

使用道具 举报

6

主题

103

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
127
发表于 2007-5-30 10:33:07 | 显示全部楼层
那是,嗯.....不是矩形。 关闭,但它不是矩形。
听起来/看起来像你需要找到一个闭合折线的质心,而不是??
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-5-30 10:50:54 | 显示全部楼层
这很容易做到,并且会帮助每个人,如果你尝试先编码,到目前为止你已经完成了多少代码?
谢谢。
回复

使用道具 举报

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2007-5-30 10:59:53 | 显示全部楼层
在我的绘图中,我有一个不同的矩形<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>
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-7 22:29 , Processed in 1.146606 second(s), 73 queries .

© 2020-2025 乐筑天下

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