hairyuga 发表于 2022-7-6 15:04:57

需要有关组合框routi的帮助

大家好,
 
我不熟悉VBA。我正在尝试编写一个例程,该例程将从带有维度的组合框中绘制一个框。我一直在“绘制实体”代码行中遇到“超出范围”的运行时错误。我甚至不确定这个程序是否有效!该框将包含属性,但我还没有做到这一点。框使用双精度数据类型,组合框包含整数,这可能是问题所在吗?任何帮助都将不胜感激。
 
谢谢
迈克
 
 
'Combo Box for Panel Sizes
Private Sub UserForm_Activate()
cmbWidth.AddItem "1'-0"""
cmbWidth.AddItem "1'-0 1/2"""
cmbWidth.AddItem "1'-1"

cmbLength.AddItem "10'-0"""
cmbLength.AddItem "10'-0 1/2"""
cmbLength.AddItem "10-1"""
cmbThickness.AddItem "6"""
cmbThickness.AddItem "8"""
cmbThickness.AddItem "10"""
cmbThickness.AddItem "12"""
End Sub


'Create Panel
Private Sub cmdCreatePanel_Click()
Dim varPick As Variant
Dim dblLength As Double
Dim dblWidth As Double
Dim dblHeight As Double
Dim dblCenter(2) As Double
Dim objEnt As Acad3DSolid


UserForm1.hide

'get the input from user
With ThisDrawing.Utility
.InitializeUserInput 1
varPick = .GetPoint(, vbCr & "Pick a corner point: ")
.InitializeUserInput 1 + 2 + 4, ""
dblLength = (cmbLength = "")
.InitializeUserInput 1 + 2 + 4, ""
dblWidth = (cmbWidth = "")
.InitializeUserInput 1 + 2 + 4, ""
dblHeight = (cmbHeight = "")
End With
'calculate center point from input
dblCenter(0) = varPick(0) + (dblLength / 2)
dblCenter(1) = varPick(1) + (dblWidth / 2)
dblCenter(2) = varPick(2) + (dblHeight / 2)

'draw the entity
Set objEnt = ThisDrawing.ModelSpace.AddBox(dblCenter, dblLength, _
dblWidth, dblHeight)

objEnt.Update
UserForm1.Show
End Sub

Private Sub cmdExit_Click()
Unload Me
End Sub

fixo 发表于 2022-7-6 15:31:06

欢迎加入,迈克
组合框中有字符串,因此
必须将其转换为双精度
看看DistanceToReal方法
在帮助文件中(将选项更改为
标准,我在那里设置了“A工程”)
参见示例(仅在A2008上测试)

Option Explicit

'Combo Box for Panel Sizes
Private Sub UserForm_Activate()
cmbWidth.AddItem "1'-0"""
cmbWidth.AddItem "1'-0 1/2"""
cmbWidth.AddItem "1'-1"

cmbLength.AddItem "10'-0"""
cmbLength.AddItem "10'-0 1/2"""
cmbLength.AddItem "10-1"""
cmbThickness.AddItem "6"""
cmbThickness.AddItem "8"""
cmbThickness.AddItem "10"""
cmbThickness.AddItem "12"""
End Sub


'Create Panel
Private Sub cmdCreatePanel_Click()
Dim varPick As Variant
Dim dblLength As Double
Dim dblWidth As Double
Dim dblHeight As Double
Dim dblCenter(2) As Double
Dim objEnt As Acad3DSolid


Me.hide

'get the input from user
With ThisDrawing.Utility
.InitializeUserInput 1
varPick = .GetPoint(, vbCr & "Pick a corner point: ")
.InitializeUserInput 1 + 2 + 4, ""
dblLength = .DistanceToReal(cmbLength.Text, acEngineering)
.InitializeUserInput 1 + 2 + 4, ""
dblWidth = .DistanceToReal(cmbWidth.Text, acEngineering)
.InitializeUserInput 1 + 2 + 4, ""
dblHeight = .DistanceToReal(cmbThickness.Text, acEngineering)
End With
'calculate center point from input
dblCenter(0) = CDbl(varPick(0)) + (dblLength / 2)
dblCenter(1) = CDbl(varPick(1)) + (dblWidth / 2)
dblCenter(2) = CDbl(varPick(2)) + (dblHeight / 2)

'draw the entity
Set objEnt = ThisDrawing.ModelSpace.AddBox(dblCenter, dblLength, _
dblWidth, dblHeight)
objEnt.History = True
objEnt.Update
ThisDrawing.Regen acActiveViewport

Me.Show
End Sub

Private Sub cmdExit_Click()
Unload Me
End Sub
 
~'J'~

hairyuga 发表于 2022-7-6 15:54:24

感谢Fixo的欢迎和您的投入!它工作完美,你是辉煌的!!!!我仍然需要添加属性,但我已经坚持了一段时间了。迫不及待地想了解更多关于VBA的知识,这是我一段时间以来一直想学习的东西!
 
迈克

fixo 发表于 2022-7-6 16:15:26

如果这有帮助的话,我很高兴
顺便说一句,很多月前我就开始学习VBA了
从这个地方:
http://www.afralisp.net/
向下滚动大约半页。。。
干杯
 
~'J'~
页: [1]
查看完整版本: 需要有关组合框routi的帮助