明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2202|回复: 2

请教,批量改变文本内容出错

[复制链接]
发表于 2012-3-24 23:24:38 | 显示全部楼层 |阅读模式
以前,一直用使用vba编程,最近刚刚学习.net,vs2010+AutoCAD2012
编制一个命令,文本内容批量加1000,结果调试错误
vs2010的信息是“在 System.AccessViolationException 中第一次偶然出现的“AcdbMgd.dll”类型的异常”
代码如下

  1.     ' 加法Temp
  2.     <CommandMethod("ADT")> Public Sub ADT()
  3.         On Error Resume Next
  4.         '定义过滤条件
  5.         Dim value1 As TypedValue = New TypedValue(0, "TEXT")
  6.         Dim values() As TypedValue = {value1}
  7.         Dim sfilter As New SelectionFilter(values)
  8.         '定义一个选择集交互类
  9.         Dim optSel As New PromptSelectionOptions
  10.         '选择操作时的提示文本
  11.         optSel.MessageForAdding = "单行文本"
  12.         Dim resSel As PromptSelectionResult = ed.GetSelection(optSel, sfilter)
  13.         If resSel.Status = PromptStatus.Cancel Then Return
  14.         '返回选择集的用户提示类
  15.         Dim sSet As SelectionSet = resSel.Value
  16.         '得到选择集中所有对象的objectId集合
  17.         Dim ids As ObjectId() = sSet.GetObjectIds()
  18.         Using trans As Transaction = db.TransactionManager.StartTransaction()
  19.             '总和
  20.             '遍历选择集
  21.             For Each sSetEndId As ObjectId In ids
  22.                 Dim ent As DBText= trans.GetObject(sSetEndId, OpenMode.ForWrite)
  23.                 strK1 = ent.TextString
  24.                 dblK2 = Val(strK1)
  25.                 ent.TextString = CStr(Format(dblK2 + 1000, "#"))
  26.                 trans.Commit()
  27.             Next
  28.         End Using
  29.     End Sub


貌似是第二遍提取ent的时候出错,不知原因,请高手赐教,非常感谢
发表于 2012-3-25 12:30:21 | 显示全部楼层
trans.Commit() 放到循环外面。
 楼主| 发表于 2012-3-25 16:13:43 | 显示全部楼层
昨晚发帖以后发现问题了,呵呵,多谢多谢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 18:24 , Processed in 0.179092 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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