明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2207|回复: 7

为什么我的VBA程序会很慢,对象创建后要清除吗?如何清除呢?

[复制链接]
发表于 2006-4-4 10:47:00 | 显示全部楼层 |阅读模式
为什么我的VBA程序会很慢,对象创建后要清除吗?如何清除呢?
发表于 2006-4-4 11:29:00 | 显示全部楼层

具体点说。。。。。。

 楼主| 发表于 2006-4-4 12:35:00 | 显示全部楼层
我是先建一个表格头部,然后画线,每画一条线就在表格增加一行记录这条张两点的坐标和长度,当我画到20条左右的时候,就会很慢了,不知是为什么?
发表于 2006-4-4 13:11:00 | 显示全部楼层

把你的程序也贴上来吧。。。。。

 楼主| 发表于 2006-4-4 13:54:00 | 显示全部楼层
  1.          Dim iPoint As Variant
  2.          iPoint = ThisDrawing.Utility.GetPoint(, "Please specify table insert point:")
  3.          Dim MyModelSpace As IAcadModelSpace2
  4.          Set MyModelSpace = ThisDrawing.ModelSpace
  5.          Dim tb As AcadTable
  6.          Set tb = MyModelSpace.AddTable(iPoint, 2, 5, txtHeight * 2, txtHeight * 1.2)
  7.          tb.HorzCellMargin = txtHeight / 2
  8.          tb.VertCellMargin = txtHeight / 2
  9.          tb.SetTextHeight acDataRow, txtHeight * 2
  10.          tb.SetTextHeight acHeaderRow, txtHeight * 2
  11.          tb.SetTextHeight acTitleRow, txtHeight * 2
  12.          tb.SetAlignment acDataRow, acMiddleCenter
  13.          tb.SetAlignment acHeaderRow, acMiddleCenter
  14.          tb.SetAlignment acTitleRow, acMiddleCenter
  15.          'tb.SetTextStyle acDataRow, "iStyle"
  16.          'tb.SetTextStyle acHeaderRow, "iStyle"
  17.          'tb.SetTextStyle acTitleRow, "iStyle"
  18.          
  19.          tb.SetRowHeight 0, txtHeight * 8
  20.          tb.SetRowHeight 1, txtHeight * 8
  21.         
  22.          tb.SetColumnWidth 0, txtHeight * 2 * 5
  23.          tb.SetColumnWidth 1, txtHeight * 2 * 12
  24.          tb.SetColumnWidth 2, txtHeight * 2 * 12
  25.          tb.SetColumnWidth 3, txtHeight * 2 * 10
  26.          tb.SetColumnWidth 4, txtHeight * 2 * 10
  27.          tb.SetText 0, 0, "WIRE LIST"
  28.          tb.SetText 1, 0, "NO."
  29.          tb.SetText 1, 1, "START POINT"
  30.          tb.SetText 1, 2, "END POINT"
  31.          tb.SetText 1, 3, "DISTANCE"
  32.          tb.SetText 1, 4, "LENGTH"
  33. Do While Num > 0
  34.         ThisDrawing.Utility.InitializeUserInput 0, "D E"
  35.         On Error Resume Next
  36.         pt1 = ThisDrawing.Utility.GetPoint(, "Please specify first point[or (D=Delete last wire) or (E=Exit)]:")
  37.         If Err.Number = -2145320928 Then
  38.             Dim Sel As String
  39.             Sel = ThisDrawing.Utility.GetInput
  40.             If LCase(Sel) = "e" Then
  41.                 Exit Do
  42.             ElseIf LCase(Sel) = "d" Then
  43.                 No = No - 1
  44.                 objPline.Delete
  45.                 objHatch.Delete
  46.                 ThisDrawing.SendCommand "Erase" + vbCr + CStr(pt2(0)) + "," + CStr(pt2(1)) + vbCr + vbCr
  47.                 tb.DeleteRows tb.Rows - 1, 1
  48.                 pt1 = ThisDrawing.Utility.GetPoint(, "Please specify first point:")
  49.             End If
  50.         End If
  51.         
  52.         pt2 = ThisDrawing.Utility.GetPoint(pt1, "Please specify second point:")
  53.            tb.InsertRows tb.Rows, txtHeight * 1.75, 1
  54.             
  55.             tb.SetText tb.Rows - 1, 0, CStr(No)
  56.             
  57.             Txt = CStr(Round(pt1(0), 5)) + " , " + CStr(Round(pt1(1), 5))
  58.             If Left(Txt, 1) = "." Then Txt = "0" + Txt
  59.             If tb.GetColumnWidth(1) < txtHeight * 2.5 * Len(Txt) Then
  60.                 tb.SetColumnWidth 1, txtHeight * 2.5 * Len(Txt)
  61.             End If
  62.             tb.SetText tb.Rows - 1, 1, Txt
  63.             
  64.             Txt = CStr(Round(pt2(0), 5)) + " , " + CStr(Round(pt2(1), 5))
  65.             If Left(Txt, 1) = "." Then Txt = "0" + Txt
  66.             If tb.GetColumnWidth(2) < txtHeight * 2.5 * Len(Txt) Then
  67.                 tb.SetColumnWidth 2, txtHeight * 2.5 * Len(Txt)
  68.             End If
  69.             tb.SetText tb.Rows - 1, 2, Txt
  70.             
  71.             Txt = CStr(Round(objPline.Length, 5))
  72.             If Left(Txt, 1) = "." Then Txt = "0" + Txt
  73.             If tb.GetColumnWidth(3) < txtHeight * 2 * Len(Txt) Then
  74.                 tb.SetColumnWidth 3, txtHeight * 2 * Len(Txt)
  75.             End If
  76.             tb.SetText tb.Rows - 1, 3, Txt
  77. No = No + 1
  78. Loop
发表于 2006-4-5 19:36:00 | 显示全部楼层
2007里试过了,挺正常的:)
发表于 2006-4-6 10:14:00 | 显示全部楼层

2006里也试过了,挺正常的:)


 

 楼主| 发表于 2006-4-7 12:57:00 | 显示全部楼层
可我在2005运行时,当我画了15条线后就变慢,越来越慢啊,我的机器是P42.8+512MB的HP原装机。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-27 04:13 , Processed in 0.190806 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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