明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: singlegu

小女子跪求各位大虾

  [复制链接]
发表于 2006-5-8 16:18:00 | 显示全部楼层
倒!把你的所有程序贴上来睽睽吧!
发表于 2006-5-8 17:05:00 | 显示全部楼层

我看不要搞这么复杂,刚学VB吗,就不要用动态数组,简单点:

dim pntArray(0 to 2, 0 to 20) as double

'假设最多20个点

for i=0 to 20

pntArray(i, 0)=第一个点的X坐标

pntArray(i,1)=第一个点的Y坐标

pntArray(i,2)=第一个点的Z坐标,如果二维制图就是0

next i

'如此就可以连续输入20个点坐标

 楼主| 发表于 2006-5-8 17:13:00 | 显示全部楼层

Option Explicit

Sub Number()
   Static Matrix(1000) As Double
   Static i As Integer
  
   Matrix(i) = Val(TextBox1.Text)
   i = i + 1
   Matrix(i) = Val(TextBox2.Text)
   i = i + 1
   Matrix(i) = Val(TextBox3.Text)
   i = i + 1
  
End Sub

Private Sub CommandButton1_Click()
   Call Number
   Unload UserForm1
   UserForm1.Show
  

End Sub
这个是无法实现我想要的功能,可是我不知道怎么改,能帮我看看,告诉我该怎么改吗,谢谢!刚学VB,怎么简单的问题不要BS我啊,:)

 

 楼主| 发表于 2006-5-8 18:03:00 | 显示全部楼层
我觉得7楼的程序没问题,会不会是我的引用有问题啊?请问你运行的时候用的是哪些引用啊?
发表于 2006-5-9 08:27:00 | 显示全部楼层

我的程序没有引用任何函数库,完全是VB自带的。。。。。

说一下你的程序,singlegu

不明白你为什么要再command的点击时间中加入

Unload UserForm1
   UserForm1.Show

这样很容易把你原来存下的数据数组清零,而且你的对数组和自变量i的声明要放在最顶端,不让你每次运行number程序就会重新定义一遍,同样保存不住数据

改成下面这样:

Dim Matrix(100) As Double
Dim i As Integer

Sub Number()
   Matrix(i) = Val(Text1.Text)
   i = i + 1
   Matrix(i) = Val(Text2.Text)
   i = i + 1
   Matrix(i) = Val(Text3.Text)
   i = i + 1
  
End Sub

Private Sub CommandButton1_Click()
   Call Number
End Sub

 楼主| 发表于 2006-5-9 11:31:00 | 显示全部楼层

在输入数据那个界面上,我想在输完数据后,点击"下一点"那个按扭,再调出原来那个输数据的界面

xinghesnak,你明白我的意思吗?

发表于 2006-5-9 11:39:00 | 显示全部楼层
奇怪,你在点击“下一点”按钮前后,界面有什么不同吗?要是还是想原来那样就把Dim Matrix(100) As Double,Dim i As Integer放在模块里,让程序先启动模块再加载你的窗体。。。。。。
 楼主| 发表于 2006-5-9 16:49:00 | 显示全部楼层

我想点击"下一点"后,原来输有数据的三个文本框都清空,能再输数据进去

要是不加

   Unload UserForm1
   UserForm1.Show

这两句的话,点了下一点,文本框里还是原来输入的那几个数

发表于 2006-5-9 17:05:00 | 显示全部楼层

Dim Matrix(100) As Double
Dim i As Integer

Sub Number()
   Matrix(i) = Val(Text1.Text)
   i = i + 1
   Matrix(i) = Val(Text2.Text)
   i = i + 1
   Matrix(i) = Val(Text3.Text)
   i = i + 1
   Text1.Text=""

Text2.Text=""

Text3.Text=""
End Sub

Private Sub CommandButton1_Click()
   Call Number
End Sub

这样可以不?

 楼主| 发表于 2006-5-9 17:42:00 | 显示全部楼层

这是我的程序,目前问题是点击"输入完毕"按钮后,画不出线,实在不知道哪出了问题,请帮我看看吧,先谢过了啊!

Option Explicit
Private Type POINTAPI
x As Double
y As Double
z As Double
End Type
Dim p() As POINTAPI

 

 

Private Sub UserForm_Initialize()
ReDim p(0) As POINTAPI
End Sub


Private Sub CommandButton1_Click()
    ' 确保文本框的值不为空
    Dim item As MSForms.Control
    For Each item In UserForm1.Controls
        If TypeOf item Is TextBox Then
            If Len(item.Text) = 0 Then
                MsgBox "请输入定位点!", vbCritical
                Exit Sub
            End If
        End If
    Next item
   
    '存点
   If p(0).x <> 0 Then ReDim Preserve p(UBound(p) + 1)

   p(UBound(p)).x = Val(TextBox1.Text)
   p(UBound(p)).y = Val(TextBox2.Text)
   p(UBound(p)).z = Val(TextBox3.Text)

   TextBox1.Text = ""
   TextBox2.Text = ""
   TextBox3.Text = ""
 


End Sub

 

Private Sub CommandButton2_Click()
    ' 确保文本框的值不为空
    Dim item As MSForms.Control
    For Each item In UserForm1.Controls
        If TypeOf item Is TextBox Then
            If Len(item.Text) = 0 Then
                MsgBox "请输入定位点!", vbCritical
                Exit Sub
            End If
        End If
    Next item
   
   
    ' 绘制直线
    Dim i As Integer
    Dim FormPnt(0 To 2) As Double
    Dim ToPnt(0 To 2) As Double
    For i = 2 To UBound(p)
        FormPnt(0) = p(i - 1).x
        FormPnt(1) = p(i - 1).y
        FormPnt(2) = p(i - 1).z
        ToPnt(0) = p(i).x
        ToPnt(1) = p(i).y
        ToPnt(2) = p(i).z
   
        ThisDrawing.ModelSpace.AddLine FormPnt, ToPnt
   
    Next
    End   '结束程序
End Sub

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-27 04:26 , Processed in 0.142969 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表