乐筑天下

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

创建区域

[复制链接]

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2007-5-4 16:33:38 | 显示全部楼层 |阅读模式
让我感到困惑的是,如果帮助文件说一个区域是从LWPolyline创建的,为什么这不起作用?
  1. Public Sub wall()
  2.       Dim dblLength As Double, dblWidth As Double, dblHeight As Double
  3.       Dim inspt(2) As Double, endpt(2) As Double
  4.       inspt(0) = 120: inspt(1) = 120: inspt(2) = 0
  5.       Dim oLayer As AcadLayer, oCurrLayeR As AcadLayer, oBlock As AcadBlockReference, _
  6.           oEntity As AcadEntity, newObjs As Variant      ', InsPT As Variant
  7.       Set oCurrLayeR = ThisDrawing.ActiveLayer
  8.       Set oLayer = ThisDrawing.Layers.Add("SITE-WALL")
  9.       oLayer.color = 1
  10.       ThisDrawing.ActiveLayer = oLayer
  11. '      dblLength = CDbl(txtLength.Value)
  12. '      dblWidth = CDbl(txtWidth.Value)
  13. '      dblHeight = CDbl(txtHeight.Value)
  14.       dblLength = 144
  15.       dblWidth = 72
  16.       dblHeight = 60
  17. Dim WallCoords(9) As Double
  18. WallCoords(0) = inspt(0) - (dblLength / 2): WallCoords(1) = inspt(1) + (dblWidth / 2)
  19. WallCoords(2) = inspt(0) + (dblLength / 2): WallCoords(3) = inspt(1) + (dblWidth / 2)
  20. WallCoords(4) = inspt(0) + (dblLength / 2): WallCoords(5) = inspt(1) - (dblWidth / 2)
  21. WallCoords(6) = inspt(0) - (dblLength / 2): WallCoords(7) = inspt(1) - (dblWidth / 2)
  22. WallCoords(8) = inspt(0) - (dblLength / 2): WallCoords(9) = inspt(1) + (dblWidth / 2)
  23. Dim plineObj As AcadLWPolyline
  24. Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(WallCoords)
  25. plineObj.Closed = True
  26. Dim regionObj As Variant
  27.   Set regionObj = ThisDrawing.ModelSpace.AddRegion(plineObj)
  28.     ZoomAll
  29.       ThisDrawing.ActiveLayer = oCurrLayeR
  30. End Sub

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

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

使用道具 举报

6

主题

103

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
127
发表于 2007-5-4 16:54:08 | 显示全部楼层
您传递的项目必须是对象数组...
  1. Public Sub wall()
  2.       Dim dblLength As Double, dblWidth As Double, dblHeight As Double
  3.       Dim inspt(2) As Double, endpt(2) As Double
  4.       inspt(0) = 120: inspt(1) = 120: inspt(2) = 0
  5.       Dim oLayer As AcadLayer, oCurrLayeR As AcadLayer, oBlock As AcadBlockReference, _
  6.           oEntity As AcadEntity, newObjs As Variant      ', InsPT As Variant
  7.       Set oCurrLayeR = ThisDrawing.ActiveLayer
  8.       Set oLayer = ThisDrawing.layers.Add("SITE-WALL")
  9.       oLayer.Color = 1
  10.       ThisDrawing.ActiveLayer = oLayer
  11. '      dblLength = CDbl(txtLength.Value)
  12. '      dblWidth = CDbl(txtWidth.Value)
  13. '      dblHeight = CDbl(txtHeight.Value)
  14.       dblLength = 144
  15.       dblWidth = 72
  16.       dblHeight = 60
  17. Dim WallCoords(9) As Double
  18. WallCoords(0) = inspt(0) - (dblLength / 2): WallCoords(1) = inspt(1) + (dblWidth / 2)
  19. WallCoords(2) = inspt(0) + (dblLength / 2): WallCoords(3) = inspt(1) + (dblWidth / 2)
  20. WallCoords(4) = inspt(0) + (dblLength / 2): WallCoords(5) = inspt(1) - (dblWidth / 2)
  21. WallCoords(6) = inspt(0) - (dblLength / 2): WallCoords(7) = inspt(1) - (dblWidth / 2)
  22. WallCoords(8) = inspt(0) - (dblLength / 2): WallCoords(9) = inspt(1) + (dblWidth / 2)
  23. Dim objArray(0) As AcadEntity
  24. Set objArray(0) = ThisDrawing.ModelSpace.AddLightWeightPolyline(WallCoords)
  25.     objArray(0).Closed = True
  26.   ThisDrawing.ModelSpace.AddRegion objArray
  27.   ZoomAll
  28.   ThisDrawing.ActiveLayer = oCurrLayeR
  29. End Sub

回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2007-5-4 16:55:27 | 显示全部楼层
反正我又迟到了
  1. Public Sub wall()
  2.       Dim dblLength As Double, dblWidth As Double, dblHeight As Double
  3.       Dim inspt(2) As Double, endpt(2) As Double
  4.       inspt(0) = 120: inspt(1) = 120: inspt(2) = 0
  5.       Dim oLayer As AcadLayer, oCurrLayeR As AcadLayer, oBlock As AcadBlockReference, _
  6.           oEntity As AcadEntity, newObjs As Variant      ', InsPT As Variant
  7.       Set oCurrLayeR = ThisDrawing.ActiveLayer
  8.       Set oLayer = ThisDrawing.Layers.Add("SITE-WALL")
  9.       oLayer.color = 1
  10.       ThisDrawing.ActiveLayer = oLayer
  11. '      dblLength = CDbl(txtLength.Value)
  12. '      dblWidth = CDbl(txtWidth.Value)
  13. '      dblHeight = CDbl(txtHeight.Value)
  14.       dblLength = 144
  15.       dblWidth = 72
  16.       dblHeight = 60
  17. Dim WallCoords(9) As Double
  18. WallCoords(0) = inspt(0) - (dblLength / 2): WallCoords(1) = inspt(1) + (dblWidth / 2)
  19. WallCoords(2) = inspt(0) + (dblLength / 2): WallCoords(3) = inspt(1) + (dblWidth / 2)
  20. WallCoords(4) = inspt(0) + (dblLength / 2): WallCoords(5) = inspt(1) - (dblWidth / 2)
  21. WallCoords(6) = inspt(0) - (dblLength / 2): WallCoords(7) = inspt(1) - (dblWidth / 2)
  22. WallCoords(8) = inspt(0) - (dblLength / 2): WallCoords(9) = inspt(1) + (dblWidth / 2)
  23. Dim plineObj As AcadLWPolyline
  24. Set plineObj = ThisDrawing.ModelSpace.AddLightWeightPolyline(WallCoords)
  25. plineObj.Closed = True
  26. Dim bound(0) As AcadEntity
  27. Set bound(0) = plineObj
  28. Dim regionObj As Variant
  29.   regionObj = ThisDrawing.ModelSpace.AddRegion(bound)
  30. plineObj.Delete
  31.     ZoomAll
  32.       ThisDrawing.ActiveLayer = oCurrLayeR
  33. End Sub

回复

使用道具 举报

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 2007-5-4 17:25:34 | 显示全部楼层
让我看看我是否理解,我们正在使用通用的AcadEntity,创建一个LWP作为所述实体,并将其传递给region命令?
回复

使用道具 举报

57

主题

235

帖子

3

银币

后起之秀

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

铜币
463
发表于 2007-5-4 17:38:58 | 显示全部楼层
基本上。。除了 AddRegion 方法的参数必须是实体数组...

  1. Dim NumberOfEntities, X As Integer
  2. NumberOfEntities = 10
  3. Dim EntityArray(0 to NumberOfEntities) As AcadEntity
  4. For X = 0 to NumberOfEntities
  5. Set EntityArray(X) = MakePline() <--- dummy function returning a LWpolyline
  6. Next X
  7. ThisDrawing.ModelSpace.AddRegion(EntityArray)

回复

使用道具 举报

6

主题

103

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
127
发表于 2007-5-4 17:41:22 | 显示全部楼层
不,您创建LWP,并将其放入数组中。将数组传递给.addregion命令。如果只传递一个对象,这有点傻,但是如果使用3个对象来定义区域,这是有意义的
总结起来:
LWP=addlwpoly(blah)
dim arregionbound(0)作为变体
arregionBound(零)=LWP
regionObj=ThisDrawing.ModelSpace。AddRegion(arrRegionBound)
编辑:正如quickfingersKeith所说。
回复

使用道具 举报

6

主题

103

帖子

2

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
127
发表于 2007-5-8 08:19:16 | 显示全部楼层
沿着同样的路线...
你怎么能找到一个区域的中心?
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2007-5-8 09:27:13 | 显示全部楼层
也许这会有帮助?
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-7-7 18:10 , Processed in 0.736000 second(s), 68 queries .

© 2020-2025 乐筑天下

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