明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1899|回复: 1

vbnet cad内存增加到崩溃,高手帮忙看看!

[复制链接]
发表于 2012-10-13 10:33:16 | 显示全部楼层 |阅读模式
请高手帮忙看看,为什么这段代码运行过程中,cad内存一直增加,一直到崩溃?


  1. Dim doc As Document = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument
  2.         Dim db As Database = doc.Database
  3.         Dim ed As Editor = doc.Editor



  4.         '在交点周围选着点


  5.         Dim i As Integer = 0
  6.         For i = 0 To IDian_Num

  7.             Dim IPinFenNum As Integer = 8
  8.             For j As Integer = 0 To IPinFenNum - 1

  9.                 Dim acPoint3d As Point3d = New Point3d(IntersectPointX(i) + 2 * System.Math.Cos(j * 3.14 * 2 / IPinFenNum), IntersectPointY(i) + 2 * System.Math.Cos(j * 3.14 * 2 / IPinFenNum), 0)
  10.                 Dim Pt3dCOLL As New Point3dCollection
  11.                 Dim Ldis As Double = 20
  12.                 Dim acPoint3d1 As Point3d = New Point3d(acPoint3d.X - Ldis, acPoint3d.Y + Ldis, 0)
  13.                 Dim acPoint3d2 As Point3d = New Point3d(acPoint3d.X + Ldis, acPoint3d.Y + Ldis, 0)
  14.                 Dim acPoint3d3 As Point3d = New Point3d(acPoint3d.X + Ldis, acPoint3d.Y - Ldis, 0)
  15.                 Dim acPoint3d4 As Point3d = New Point3d(acPoint3d.X - Ldis, acPoint3d.Y - Ldis, 0)

  16.                 Pt3dCOLL.Add(acPoint3d1)
  17.                 Pt3dCOLL.Add(acPoint3d2)
  18.                 Pt3dCOLL.Add(acPoint3d3)
  19.                 Pt3dCOLL.Add(acPoint3d4)


  20.                 '获取创建边界的对象集合
  21.                 Dim objs As DBObjectCollection = ed.TraceBoundary(acPoint3d, False)

  22.                 If objs.Count > 0 Then
  23.                     Dim tr As Transaction = doc.TransactionManager.StartTransaction()
  24.                     Using doc.LockDocument
  25.                         Using tr
  26.                             '我们将对象添加到模型空间
  27.                             Dim bt As BlockTable = DirectCast(tr.GetObject(doc.Database.BlockTableId, OpenMode.ForRead), BlockTable)
  28.                             Dim btr As BlockTableRecord = DirectCast(tr.GetObject(bt(BlockTableRecord.ModelSpace), OpenMode.ForWrite), BlockTableRecord)

  29.                             '将每个边界对象添加到块记录中,其ObjectId集合到ids集合
  30.                             Dim ids As New ObjectIdCollection()

  31.                             '' 定义对象数组中   Adds the circle to an object array
  32.                             Dim acDBObjColl As DBObjectCollection = New DBObjectCollection()



  33.                             For Each obj As DBObject In objs
  34.                                 Dim ent As Entity = TryCast(obj, Entity)
  35.                                 If ent IsNot Nothing Then

  36.                                     acDBObjColl.Add(ent)

  37.                                     ids.Add(btr.AppendEntity(ent))
  38.                                     tr.AddNewlyCreatedDBObject(ent, True)
  39.                                 End If
  40.                             Next



  41.                             ''创建一个面域对象

  42.                             Dim myRegionColl As DBObjectCollection = New DBObjectCollection()
  43.                             myRegionColl = Autodesk.AutoCAD.DatabaseServices.Region.CreateFromCurves(acDBObjColl)

  44.                             Dim acRegion As Region


  45.                             acRegion = myRegionColl(0)

  46.                             '' 添加新对象到块表记录和事务中   Add the new object to the block table record and the transaction
  47.                             btr.AppendEntity(acRegion)
  48.                             tr.AddNewlyCreatedDBObject(acRegion, True)


  49.                             '提交事务
  50.                             tr.Commit()
  51.                         End Using
  52.                     End Using

  53.                 End If

  54.             Next
  55.         Next

发表于 2012-10-13 10:54:29 | 显示全部楼层
本帖最后由 huaxiamengqing 于 2012-10-13 10:59 编辑

将using tr 放在锁文档内部试试。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 16:52 , Processed in 0.253919 second(s), 27 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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