乐筑天下

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

[编程交流] 需要有关组合框routi的帮助

[复制链接]

5

主题

17

帖子

12

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 15:04:57 | 显示全部楼层 |阅读模式
大家好,
 
我不熟悉VBA。我正在尝试编写一个例程,该例程将从带有维度的组合框中绘制一个框。我一直在“绘制实体”代码行中遇到“超出范围”的运行时错误。我甚至不确定这个程序是否有效!该框将包含属性,但我还没有做到这一点。框使用双精度数据类型,组合框包含整数,这可能是问题所在吗?任何帮助都将不胜感激。
 
谢谢
迈克
 
 
  1. 'Combo Box for Panel Sizes
  2. Private Sub UserForm_Activate()
  3. cmbWidth.AddItem "1'-0"""
  4. cmbWidth.AddItem "1'-0 1/2"""
  5. cmbWidth.AddItem "1'-1"
  6. cmbLength.AddItem "10'-0"""
  7. cmbLength.AddItem "10'-0 1/2"""
  8. cmbLength.AddItem "10-1"""
  9. cmbThickness.AddItem "6"""
  10. cmbThickness.AddItem "8"""
  11. cmbThickness.AddItem "10"""
  12. cmbThickness.AddItem "12"""
  13. End Sub
  14. 'Create Panel
  15. Private Sub cmdCreatePanel_Click()
  16. Dim varPick As Variant
  17. Dim dblLength As Double
  18. Dim dblWidth As Double
  19. Dim dblHeight As Double
  20. Dim dblCenter(2) As Double
  21. Dim objEnt As Acad3DSolid
  22. UserForm1.hide
  23. 'get the input from user
  24. With ThisDrawing.Utility
  25. .InitializeUserInput 1
  26. varPick = .GetPoint(, vbCr & "Pick a corner point: ")
  27. .InitializeUserInput 1 + 2 + 4, ""
  28. dblLength = (cmbLength = "")
  29. .InitializeUserInput 1 + 2 + 4, ""
  30. dblWidth = (cmbWidth = "")
  31. .InitializeUserInput 1 + 2 + 4, ""
  32. dblHeight = (cmbHeight = "")
  33. End With
  34. 'calculate center point from input
  35. dblCenter(0) = varPick(0) + (dblLength / 2)
  36. dblCenter(1) = varPick(1) + (dblWidth / 2)
  37. dblCenter(2) = varPick(2) + (dblHeight / 2)
  38. 'draw the entity
  39. Set objEnt = ThisDrawing.ModelSpace.AddBox(dblCenter, dblLength, _
  40. dblWidth, dblHeight)
  41. objEnt.Update
  42. UserForm1.Show
  43. End Sub
  44. Private Sub cmdExit_Click()
  45. Unload Me
  46. End Sub
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 15:31:06 | 显示全部楼层
欢迎加入,迈克
组合框中有字符串,因此
必须将其转换为双精度
看看DistanceToReal方法
在帮助文件中(将选项更改为
标准,我在那里设置了“A工程”)
参见示例(仅在A2008上测试)
  1. Option Explicit
  2. 'Combo Box for Panel Sizes
  3. Private Sub UserForm_Activate()
  4. cmbWidth.AddItem "1'-0"""
  5. cmbWidth.AddItem "1'-0 1/2"""
  6. cmbWidth.AddItem "1'-1"
  7. cmbLength.AddItem "10'-0"""
  8. cmbLength.AddItem "10'-0 1/2"""
  9. cmbLength.AddItem "10-1"""
  10. cmbThickness.AddItem "6"""
  11. cmbThickness.AddItem "8"""
  12. cmbThickness.AddItem "10"""
  13. cmbThickness.AddItem "12"""
  14. End Sub
  15. 'Create Panel
  16. Private Sub cmdCreatePanel_Click()
  17. Dim varPick As Variant
  18. Dim dblLength As Double
  19. Dim dblWidth As Double
  20. Dim dblHeight As Double
  21. Dim dblCenter(2) As Double
  22. Dim objEnt As Acad3DSolid
  23. Me.hide
  24. 'get the input from user
  25. With ThisDrawing.Utility
  26. .InitializeUserInput 1
  27. varPick = .GetPoint(, vbCr & "Pick a corner point: ")
  28. .InitializeUserInput 1 + 2 + 4, ""
  29. dblLength = .DistanceToReal(cmbLength.Text, acEngineering)
  30. .InitializeUserInput 1 + 2 + 4, ""
  31. dblWidth = .DistanceToReal(cmbWidth.Text, acEngineering)
  32. .InitializeUserInput 1 + 2 + 4, ""
  33. dblHeight = .DistanceToReal(cmbThickness.Text, acEngineering)
  34. End With
  35. 'calculate center point from input
  36. dblCenter(0) = CDbl(varPick(0)) + (dblLength / 2)
  37. dblCenter(1) = CDbl(varPick(1)) + (dblWidth / 2)
  38. dblCenter(2) = CDbl(varPick(2)) + (dblHeight / 2)
  39. 'draw the entity
  40. Set objEnt = ThisDrawing.ModelSpace.AddBox(dblCenter, dblLength, _
  41. dblWidth, dblHeight)
  42. objEnt.History = True
  43. objEnt.Update
  44. ThisDrawing.Regen acActiveViewport
  45. Me.Show
  46. End Sub
  47. Private Sub cmdExit_Click()
  48. Unload Me
  49. End Sub

 
~'J'~
回复

使用道具 举报

5

主题

17

帖子

12

银币

初来乍到

Rank: 1

铜币
25
发表于 2022-7-6 15:54:24 | 显示全部楼层
感谢Fixo的欢迎和您的投入!它工作完美,你是辉煌的!!!!我仍然需要添加属性,但我已经坚持了一段时间了。迫不及待地想了解更多关于VBA的知识,这是我一段时间以来一直想学习的东西!
 
迈克
回复

使用道具 举报

1

主题

1069

帖子

1050

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
69
发表于 2022-7-6 16:15:26 | 显示全部楼层
如果这有帮助的话,我很高兴
顺便说一句,很多月前我就开始学习VBA了
从这个地方:
http://www.afralisp.net/
向下滚动大约半页。。。
干杯
 
~'J'~
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

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

GMT+8, 2025-3-4 21:22 , Processed in 0.594599 second(s), 60 queries .

© 2020-2025 乐筑天下

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