乐筑天下

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

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

[复制链接]

12

主题

150

帖子

3

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
198
发表于 2007-5-30 12:31:21 | 显示全部楼层
我明白为什么了,我从来没有用过VBA,那里的编码很丑...
这是我刚刚在C#中做的一些事情,非常简单,可能会对您有所帮助,您只需选择一个矩形区域,例程就会在其中放置一个文本。HTH
辅助函数:
命令:
回复

使用道具 举报

34

主题

118

帖子

1

银币

后起之秀

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

铜币
254
发表于 2007-5-30 13:33:31 | 显示全部楼层
这不完全是您所需要的,但可能会有所帮助。我认为
您可以在那里添加零件,以获得所需边缘上的第二个点,然后
计算文本的旋转角度
~'J'~
  1. Option Explicit
  2. Sub AddSomeLabel()
  3. Dim varPt As Variant
  4. Dim oPoly As AcadLWPolyline
  5. Dim oEnt As AcadEntity
  6. With ThisDrawing
  7. .Utility.GetEntity oEnt, varPt, "Select polyline (pick left point on the edge)"
  8. If TypeOf oEnt Is AcadLWPolyline Then
  9. Set oPoly = oEnt
  10. Else
  11. MsgBox "Wrong entity selected"
  12. Exit Sub
  13. End If
  14. Dim txtPt As Variant
  15. txtPt = PseudoCenter(oPoly)
  16. Dim oText As AcadMText
  17. Dim txtStr As String
  18. txtStr = "Blah\PBlah\PBlah"
  19. Dim pointUCS As Variant
  20. pointUCS = .Utility.TranslateCoordinates(txtPt, acUCS, acUCS, False)
  21. Set oText = MakeMText(pointUCS, txtStr)
  22. End With
  23. End Sub
  24. Function MakeMText(txtPt As Variant, strTxt As String) As AcadMText
  25. Dim oMText As AcadMText
  26. Dim oLine As AcadLine
  27. Set oMText = ThisDrawing.ModelSpace.AddMText(txtPt, 0#, strTxt)
  28. oMText.AttachmentPoint = acAttachmentPointMiddleCenter
  29. oMText.InsertionPoint = txtPt
  30. oMText.Update
  31. Set MakeMText = oMText
  32. End Function
  33. Function PseudoCenter(oPoly As AcadLWPolyline) As Variant
  34. Dim minPt As Variant
  35. Dim maxPt As Variant
  36. oPoly.GetBoundingBox minPt, maxPt
  37. Dim centPt(2) As Double
  38. centPt(0) = (minPt(0) + maxPt(0)) / 2
  39. centPt(1) = (minPt(1) + maxPt(1)) / 2
  40. centPt(2) = (minPt(2) + maxPt(2)) / 2
  41. PseudoCenter = centPt
  42. End Function

回复

使用道具 举报

34

主题

118

帖子

1

银币

后起之秀

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

铜币
254
发表于 2007-5-30 13:59:59 | 显示全部楼层

第一个本能是像Matt建议的那样使用形心,
然而,这在“L”处失败了,因为形心在线外,
Luis的方法总是有效的(如果我能正确阅读的话)
回复

使用道具 举报

170

主题

1424

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
2119
发表于 2007-5-30 14:19:53 | 显示全部楼层
对不起,我没有时间编码它,但这就是我要做的:
我会从多段线中创建一个区域。如果多段线没有关闭,我会将plinetype的系统变量设置为2。然后发送命令pedit,可能使用多个选项。然后将关闭的多段线转换为一个区域并获取形心。只要这些所谓的矩形足够接近一个,形心就可以了。
接下来我会找到该矩形中最长的线并获取它的起点和终点。从wcs中获取它的角度,通过绘制一条线或解析多段线以获取最长的线及其长度。然后使用返回的形心和线/点的角度来放置文本。
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-7 22:33 , Processed in 1.589980 second(s), 58 queries .

© 2020-2025 乐筑天下

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