乐筑天下

搜索
欢迎各位开发者和用户入驻本平台 尊重版权,从我做起,拒绝盗版,拒绝倒卖 签到、发布资源、邀请好友注册,可以获得银币 请注意保管好自己的密码,避免账户资金被盗
查看: 61|回复: 1

学习心得-统一修改标高值

[复制链接]

15

主题

34

帖子

6

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
94
发表于 2012-3-16 16:38:00 | 显示全部楼层 |阅读模式
请老大提修改意见
Public Sub cxb_bg()
        '统一修改标高值
        Dim acDbobject As DBObject
        Dim acText As DBText
        Dim acValue As Double
        Dim acPromptEntityOptions As PromptEditorOptions = New PromptEntityOptions(vbLf & "选择将改变数值以层为标准的标准文字:")
        Dim acPromptEntityResult As PromptEntityResult = acDocEd.GetEntity(acPromptEntityOptions)
        If acPromptEntityResult.Status = PromptStatus.OK Then
            Using acTrans As Transaction = acdoc.TransactionManager.StartTransaction()
                acDbobject = acTrans.GetObject(acPromptEntityResult.ObjectId, OpenMode.ForRead)
                If TypeOf (acDbobject) Is DBText Then
                    acText = acDbobject
                Else
                    Exit Sub
                End If
                If acText.TextString Like "*#.##*" Then
                    '' 创建一个 TypedValue 数组,用于定义过滤条件    Create a TypedValue array to define the filter criteria
                    Dim acTypValAr(1) As TypedValue
                    acTypValAr.SetValue(New TypedValue(DxfCode.Start, "Text"), 0)
                    acTypValAr.SetValue(New TypedValue(DxfCode.LayerName, acText.Layer), 1)
                    '' 赋值过滤条件给 SelectionFilter 对象    Assign the filter criteria to a SelectionFilter object
                    Dim acSelFtr As SelectionFilter = New SelectionFilter(acTypValAr)
                    '' 要求在图形区域中选择对象    Request for objects to be selected in the drawing area
                    Dim acSSPrompt As PromptSelectionResult
                    acDocEd.WriteMessage(vbLf & "选择将改变数值的文字:")
                    acSSPrompt = acDocEd.GetSelection(acSelFtr)
                    '' 如果提示状态是 OK,对象就被选择了    If the prompt status is OK, objects were selected
                    If acSSPrompt.Status = PromptStatus.OK Then
                        Dim acSSet As SelectionSet = acSSPrompt.Value
                        Dim acPromptDoubleOptions As PromptDoubleOptions = New PromptDoubleOptions(vbLf & "输入标高差值:")
                        Dim acPromptDoubleResult As PromptDoubleResult = acDocEd.GetDouble(acPromptDoubleOptions)
                        If Not IsDBNull(acPromptDoubleResult) Then
                            acValue = acPromptDoubleResult.Value
                        Else
                            Exit Sub
                        End If
                        '' 遍历选择集中的对象   Step through the objects in the selection set
                        For Each acSSObj As SelectedObject In acSSet
                            '' 检查以确定返回的 SelectedObject 对象是有效的     Check to make sure a valid SelectedObject object was returned
                            If Not IsDBNull(acSSObj) Then
                                '' 以写的方式打开选择的对象   Open the selected object for write
                                'Dim acEnt As Entity = acTrans.GetObject(acSSObj.ObjectId, OpenMode.ForWrite)
                                acText = acTrans.GetObject(acSSObj.ObjectId, OpenMode.ForWrite)
                                If Not IsDBNull(acText) Then
                                    acText.TextString = Format(Val(acText.TextString) + acValue, "0.00")
                                End If
                            End If
                        Next
                    End If
                End If
                acTrans.Commit()
            End Using
        End If
    End Sub
回复

使用道具 举报

0

主题

192

帖子

11

银币

初露锋芒

Rank: 3Rank: 3Rank: 3

铜币
190
发表于 2021-6-7 09:44:00 | 显示全部楼层
学习一下
回复

使用道具 举报

发表回复

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

本版积分规则

  • 微信公众平台

  • 扫描访问手机版

  • 点击图片下载手机App

QQ|关于我们|小黑屋|乐筑天下 繁体中文

GMT+8, 2024-11-22 00:23 , Processed in 0.155321 second(s), 56 queries .

© 2020-2024 乐筑天下

联系客服 关注微信 帮助中心 下载APP 返回顶部 返回列表