乐筑天下

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

创建区域

[复制链接]

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2007-5-4 16:33:38 | 显示全部楼层 |阅读模式
让我猜个谜,如果帮助文件说一个区域是从一条多段线创建的,为什么这行不通
  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


回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 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
回复

使用道具 举报

85

主题

404

帖子

7

银币

中流砥柱

Rank: 25

铜币
751
发表于 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命令?
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 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)
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 2007-5-4 17:41:22 | 显示全部楼层
不,您创建LWP,并将其放入数组中。将数组传递给.addregion命令。It#039;如果你&#039;只传递一个对象,但如果使用3个对象来定义区域,则有意义
将其总结为:LWP=addlwpoly(blah)
dim arregionbound(0)as variant
arregionbond(0)=LWPregionObj=ThisDrawing.ModelSpace。AddRegion(arrRegionBound)
编辑:正如quickfingersKeith所说。
回复

使用道具 举报

154

主题

1274

帖子

8

银币

顶梁支柱

Rank: 50Rank: 50

铜币
1936
发表于 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:59 , Processed in 2.402702 second(s), 68 queries .

© 2020-2025 乐筑天下

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