VBA操作AUTOCAD扩展实体数据开发零部件序号标注及明细表关联生成系统

VBA操作AutoCAD扩展实体数据开发零部件序号标注及明细表关联生成系统摘要:基于对扩展实体数据(Xdata)技术分析,提出开发零部件序号标注及明细表关联生成系统扩展实体数据的使用方法和程序设计思路,并给出了关键代码。

关键词:AutoCAD零件序号标注明细表扩展数据引言:从AutoCAD11.0引入扩展数据(Xdata)和扩展记录对象(Xrecord)概念以来,利用"块"属性存取非图形数据不再是唯一方法,而且扩展实体数据的应用使得存取非图形数据更加灵活、方便。

从AutoCAD14.0开始VBA集成到AutoCAD,它具有大多数的VB语言功能,通过ActiveXAutomation可以操纵几乎所有Auto CAD对象,以其好懂易学而得到广大工程设计人员的青睐。

本文阐述了采用VBA操纵AutoCAD扩展实体数据开发零部件序号标注及明细表关联生成系统的实践方法,为后续的零件信息自动提取、统计及工艺设计(CAPP)与产品数据管理(PDM)、企业资源计划(ERP)等软件平台之间实现信息共享奠定基础。

一.扩展实体数据(Xdata)概述1.扩展实体数据的结构实体的扩展数据由应用程序所建立,跟随在该实体常规的实体数据之后,它与常规实体数据一起构成内容更加广泛的实体数据。

VBA、Visual Lisp、ObjectARX等应用程序都可以为实体附着扩展数据(Xdata),它可以附着在任何实体上,包含一个或多个1001组。

每一组均以一个互不相同的应用类型名开头,扩展数据的组码在1000至1071之间,按应用类型分组存取不同的数据以适应需要。

其结构形式为:(-3("AppName"(组码.数据)(…)(…))("AppName"(组码.数据)(…))(…))),-3表示扩展数据开始;AppName为登记的应用类型名。

应用类型名是存取扩展实体数据的标识,为最大长度为31字节的字符串。

附着扩展数据必须指定应用类型名,用户在定义应用类型名时最好具备一定的意义,便于对其进行维护应用。

附着了扩展数据的”TEXT”实体数据如下:((-1.<图元名:7efc2400>)(0."TEXT")(330.<图元名:7ef54cc0>)(5."1158")(100."AcDbEntity")(67.0)(410."Model")(8."01粗实线层")(100."AcDbText")(10947.229131.7540.0)(40.4.0)(1."1")(50.0.0)(41.0.618)(51.0.0)(7."FSDBHZ")(71.0)(72.1)(11950.663133.7540.0)(2100.00.01.0) (100."AcDbText")(73.2)(-3("LISTSN"(1000."SeqNum")(1070.1)(1071.3))("Material"(1000."12Cr1MoVG")(1000."15CrMoG"))))它包含"LISTSN"和"Material"两个应用类型的扩展数据。

其中,(-1.)…(73.0)是常规实体数据,(-3(…))是扩展实体数据,扩展数据中("LISTSN"(1000."SeqNum")(1070.1)(1071.3))是属于"LISTSN"应用类型的数据块,("Material"(1000."12Cr1MoVG")(1070.1)(1071.3))是属于"Material"应用类型的数据块。

属于"LISTSN"应用类型的数据有三个,分别是:(组码1000.字符串”Se qNum")、(组码1070.实数"1")和(组码1071.实数”3”);属于"Material"应用类型的数据有两个:(组码1000.字符串”12Cr1MoVG")和(组码1000.字符串”15CrMoG")另外,扩展实体数据与常规实体数据有所不同,在扩展实体数据块中,同样代码的数据可以出现多次,每组数据的次序和含义则由使用者自行约定。

比如上例中,属于"Material"应用类型的数据:(组码1000.字符串”12Cr1MoVG")和(组码1000.字符串”15CrMoG"),两个数据的组码相同,均为1000。

2.扩展实体数据的附着与提取VBA、Visual Lisp、ObjectARX等应用程序均提供了函数来附着和访问扩展实体数据,在本文中介绍VBA的附着与提取函数:SetXdata和GetXdata。

SetXdata语法:object.SetXdata XdataType,XdataGetXdata语法:object.GetXdata XdataType,Xdata其中:object—需要附着扩展数据的实体对象,所有图形对象实体均看应用XdataType—组码数组,变体短整数数组,一般声明为IntegerXdata—扩展数据数组,其类型须与对应组码类型一致,一般声明为Variant 下面给出使用SetXdata和GetXdata来附着和提取扩展数据的子过程。

a.扩展数据附着子过程ListSNSetXdataPublic Sub ListSNSetXdata(EntObj As Object,NameAs String,SortAs String,NumberAs Integer,Item As Integer,RowNum as Integer)Dim XType(0To4)As IntegerDim XData(0To4)As VariantXType(0)=1001:XData(0)=NameXType(1)=1000:XData(1)=SortXType(2)=1070:XData(2)=NumberXType(3)=1071:XData(3)=ItemXType(4)=1040:XData(4)=RowNumEntObj.SetXdata XType,XDataEnd Subb.扩展数据提取子过程ListSNGetXdataPublic Sub ListSNSetXdata(EntObj As Object)Dim XTypeOut(0To3)As IntegerDim XDataOut(0To3)As VariantDim Name,Sort As StringDim Sort As StringDim Number,Item,RowNum As IntegerEntObj.SetXdata XTypeOut,XDataIf VarType(xtypeOut)>vbNull ThenFor i=LBound(xtypeOut)To UBound(xtypeOut)If XTypeOut(i)=1001ThenName=XDataOut(i)ElseIf XTypeOut(i)=1000ThenSort=XDataOut(i)ElseIf XTypeOut(i)=1070ThenNumber=XDataOut(i)ElseIf XTypeOut(i)=1071ThenItem=XDataOut(i)ElseIf XTypeOut(i)=1040ThenRowNum=XDataOut(i)End IfNext iEnd IfEnd Sub二.装配图标题栏、零部件序号标注及明细表关联生成系统建立1.实体扩展数据附着方法设计装配图特征信息主要由两部分组成,图纸特征(标题栏信息)和零部件特征(序号和明细表信息)。

在程序设计中将这两部分特征信息分为三类实体:标题栏实体、序号标注实体和明细表实体,其应用类型名统一为:”ListSN”)。

组码1000数据分别以SeqNumber 、List 、TitleBar 将实体分为三类;组码1070数据Number 记录序号标注和对应该序号的明细表实体的所属序号;组码1071数据Item 记录约定的某类实体编码(1、2、3…)。

这样针对三类实体仅定义一个扩展数据应用类型名,利用组码1000和组码1071数据实现数据分类,利用组码1000和组码1070数据实现数据关联。

下表为实现零部件序号标注及明细表自动生成系统采用实体扩展数据附着方法。

标题栏信息和明细栏信息相对独立,而零件序号引出标注和明细录入则通过其所属序号进行相互关联,下表按上面的方法示出序号标注及明细表实体扩展数据附着实例:注:1.明细表中的空行序号标识为“9999”或者其他,由程序编制者任意自定义特殊标识。

2.ELQ —明细表中的空行数量2.零部件序号标注及明细表程序设计序号标注实体明细表实体标题栏实体应用类型(1001)ListSN ListSN ListSN 实体类别(1000)SeqNumber List TitleBar所属序号(1070)NumberNumber 数据种类(1071)Item引线(LINE)1序号(TEXT)4图号(TEXT)1圆框(CIRCLE)2图号(TEXT)5名称(TEXT)2文本(TEXT)3名称(TEXT)6材料(TEXT)3数量(TEXT)7版本(TEXT)4材料(TEXT)8重量(TEXT)5单重(TEXT)9比例(TEXT)6总重(TEXT)10产品型号(TEXT)7备注(TEXT)11组件名称(TEXT)8线框(LINE)12明细行号(1040)RowNumRowNum程序具备如下的功能模块:零部件序号明细关联标注(包括序号标注和明细表编辑)、序号明细关联修改、序号明细关联插入、序号明细关联删除、明细表空行插入、明细表头绘制及分栏、明细和序号对应完整性检查、无序号标注明细编辑、不带明细序号标注绘制、多序号明细序号补充标注。

要求程序设计做到:序号标注方便智能,插入序号或删除序号,序号随着插入或删除操作自动重排,方便输入零部件数据,方便数据移动、复制等。

(1)独立操作转为关联操作以往的零部件序号引出标注和编辑录入明细两项工作是完全独立分开的,序号和明细的对应完全依靠设计人员的仔细认真,实际工作中序号和明细不对应,漏编序号或漏编明细等低级错误频繁发生,另外如果删除或插入序号,其他序号和明细编号均需手工逐个修改,不仅速度慢、效率低、劳动强度大,而且极易漏改而造成错误。

合集下载

基于VBA的AutoCAD二次开发在图纸明细表中的应用

基于VBA的AutoCAD二次开发在图纸明细表中的应用
时 间 而 且 不 能保 证 10 准 确 。 0% 成 块 , 方 便 程 序 调 用 插 入 。 明 细 表 表
解 决 上 述 问 题 成 为 构 建 应 用 项 制 作 成 属 性 块 , 程 序 调 用 插 入 时 , 程 序 的 关 键 , 应 用 程 序 设 计 的 基 根 据 用户 输 入 的表 项 内容 ,程 序 自动
关键 词 : 总装 图 ; 明细 表 ;A t C D u o A ;二 次 丌 发 ;V A B
O引 言
图 纸 文 件 中 总 装 图 是 产 品 必 不 可
多 条 表 项 时 , 需 要 手 工 调 整 表 项 位 置 F r p i a o )、O e t R 等 , o A pl c ti n bj c A X 并 重 新 编 辑 表 项 的 序 号 值 : 3 明 细 ) 利 用 这 些 开 发 工 具 用 户 可 以方 便 地 自
间 , 而 且 易 出 错 。A t C D 于 T g 建 uo A 中 ., J 装 图 中 引 用 了 子 部 件 , 子 部 件 同样 有
述 的手 工 操 作 完 成 的 种 种 不 足 之 处 。
明 细 表 的 一 般 方 法 是 表 项 采 用 属 性 块
生成 ,指 引线采 用L a e 命令 生成 , edr
对 象 的 关 键 不 是 如 何 创 建 、 编 辑 对 象 表 头 、 明 细 表 表 项 等 对 象 。 指 引 线 由 及 其 后 处 理 , 问题 的关 键 在 于 : 1 明 点 、 直 线 或 圆 单 行 文 字 等 组 成 , ) 、 用 札 + D + 细 表 对 象 创 建 后 如 何 存 储 在 图 形 文 件 户 选 择 点 后 由程 序 自动 生 成 , 生 成 后

应用扩展实体数据开发明细表自动生成系统

应用扩展实体数据开发明细表自动生成系统
Auo AD 之 所 以 得 到 如 此 广 泛 的 应 用 , 了 它 具 有 tC 除
扩展 实 体数 据 的方 法 , 以及 使 用 扩展 实 体 数 据 开 发
装 配 图明细 表 自动生 成程 序 。运用 扩展 数据 技术 很 好地 解决 了程 序 开发 时 的数据 传递 时需 要更 新 的问 题 , 零 件 ( 件 ) 息Re e v d ar h 2 0;r v s d 0 A pr l201 cie 4 M c 01 e ie 1 i 0; a c ptd a 2 0 c e e 9 M y 01 Ab ta t s r c : T h t u t ea a a a c s e ho fe a e s r c ur nd d t c e s m t d o xp nde ntt a a i d e iy d t n Aut CA D e e a l z d. The a o atc ly bor o w r na y e ut m ial n s t m s e bl a i t ld t t m e ih e hn c bo e pa de ntt d t w a it o yse ofa s m y dr w ng deaie s a e ntw t t c i a ut x n d e iy a a s n r duc d. T h i o m a i e e nf r ton of e c p r a ti s em bl a ng i r ty ke p t xp nd d e iy d t n t e fs r r so d n um be . So i a a h s a e p r n a s y dr wi sdiecl e o e a e ntt a ai het xto pa epa t r i aln r tc n a oi os t nd s a epa t r i a v d l e da a a p r rs o d n lnum be n t ie t t m e tt n r s ons i g ot rwa .T hewor fd t ie ra d de a ld s a e ntno o i e p e usn he ys k o e a ld s a e e a i ur d i if t t m ntdr w S t ne n bre . Ke r s A u oCAD ;Exp nd d t A s e bl igr m ;D e ald s a e e y wo d : t a a a; s m e da a t i t t m nt e

AutoCAD扩展数据在产品明细表自动填写中的应用

AutoCAD扩展数据在产品明细表自动填写中的应用

Internal Combustion Engine&PartsAutoCAD扩展数据在产品明细表自动填写中的应用Application of AutoCAD Extended Data in Automatic Filling Product Parts List代艳霞DAI Yan-xia(宜宾职业技术学院现代制造工程系,宜宾644003)(Department of Modem Manufacturing Engineering,Yibin Vocational&Technical College,Yibin644003,China)摘要:本文以机械产品明细表自动填写为例,介绍了利用AutoCAD扩展数据功能,在序号绘制时将对应明细表内容作为非图形信息存入该序号图元的扩展数据中。

填写明细表时遍历当前图形中所有图元信息,找出所有序号及对应的明细表内容按序号从小到大构造一个填写明细表内容的数据表,通过循环读取该数据表并自动填写明细表,实现了零件序号绘制与明细表信息的关联。

该方法可大大提高明细表的填写效率,具有较好的实际应用意义。

Abstract:This paper takes the automatic filling of mechanical product parts list as an example,introduces how to use extended data function of AutoCAD and how to store the corresponding parts list content as non-drawing information in the extended data of serial number entity when the serial number is drawn.When you fill out parts list,traverse all the entity information in the current drawing,and find out all the serial numbers and the corresponding parts list contents to construct a data table that fills in the parts list contents from small to large.By reading the data table and filling in the parts list automatically,the relationship between drawing part serial number and detailed list information is realized.This method can greatly improve the filling efficiency of the parts list,and has a good practical significance.关键词:扩展数据;明细表;AutoCAD二次开发Key words:extended data;parts list;AutoCAD redevelopment0引言CAD技术在产品设计中普遍使用,对企业提高产品设计效率与质量极其重要。

CAD中的VBA简介

CAD中的VBA简介

CAD中的VBA简介当用VBA开发基于AutoCAD的应用程序时,几乎总是在重复下面的几种工作:(1)创建和编辑实体。

作为计算机设计软件,AutoCAD最主要的工作时完成设计目标并为下一阶段的实际制造提供参考。

图纸仍然时其主要的工作产品,因而大部分的二次开发应用程序最终都要将结果用图形实体表现出来,这时AutoCAD二次开发的一个基础。

(2)和用户交互。

应用程序本身可以通过窗体或者命令行完成和用户交互。

比较特殊的时与图形相关的用户交互,列如提示用户选择一条多段线、输入一个整数、输入一个角度值等。

(3)利用队形特性来组织实体。

AutoCAD作为一种CAD软件,其内在的特点决定了所有的图形实体不具有属性特征。

也就是说,如果绘制一条直线来作为一条道路,在AutoCAD中是无法标识出他是一条道路的,通常的解决方法是创建一个名为“道路”的图层,然后将所有的代表道路的线都放在这个图层中统一管理。

(4)处理图形文件,在文件之间交换数据。

在进行设计是,把所有的图形元素放在一个图形文件中并不总是个好主意,最常见的后果就是图形文件太大导致操作起来太慢。

解决这个问题的办法就是按某种法则将图形元素分布到几个图形文件中,在需要的时候交换图形文件之间的数据。

(5)视图管理。

在AutoCAD中绘图时,为了便于计算和观察图形,人们总时会很频繁地改变视图,列如缩放、平移或改变视点。

而在开发VBA应用程序时,这方面的要求相对来说会低一点,一般只需在创建实体之后给出一个合适的观察角度即可。

(6)文字。

在AutoCAD的基本图形元素中,文字是比较简单的一个,但是在实际使用中它的可变性最大。

列如,不同类型的说话需要不同的文字样式,还有一些特殊的符号以及行为公差都是通过文字来表现的。

(7)管理块的属性。

块是将若干个图形对象定义成一个组,在需要的地方可以多次引用它。

这带来两个好处,一是减小图形的尺寸,二是修改起来方便,只需要修改块的定义便可以更新所有引用。

VBA中的功能扩展与插件开发技巧

VBA中的功能扩展与插件开发技巧

VBA中的功能扩展与插件开发技巧VBA(Visual Basic for Applications)是一种用于自动化操作Microsoft Office套件(如Excel、Word和PowerPoint等)的编程语言。

在使用VBA进行开发时,我们经常会遇到需要扩展现有功能或开发自定义插件的需求。

本文将介绍一些在VBA中实现功能扩展和插件开发的技巧。

1. 使用VBA引用外部库在VBA中,可以通过引用外部库来使用其他语言的功能。

通过引用外部库,我们可以使用更多的函数和类,从而扩展VBA的功能。

例如,我们可以引用Microsoft XML库来处理XML数据,或引用Windows Script Host库来执行Shell脚本等。

要引用外部库,首先打开VBA编辑器,然后选择“工具”菜单中的“引用”。

在弹出的“引用”对话框中,勾选对应的库并点击“确定”按钮。

接下来就可以在VBA代码中使用外部库中的函数和类了。

2. 创建自定义对象类在VBA中,我们可以创建自定义的对象类,以实现更灵活和复杂的功能。

通过创建自定义对象类,我们可以封装一些任务相关的属性和方法,并在需要的时候实例化这个类来调用其中的方法。

要创建自定义对象类,需要在VBA编辑器的“插入”菜单中选择“类模块”。

然后在类模块中定义类的属性和方法。

例如,我们可以创建一个名为“Customer”的类来表示一个客户信息,包括姓名、地址等属性,以及一些操作这些属性的方法。

3. 使用事件处理程序VBA支持事件处理程序,允许我们在特定事件发生时执行相应的操作。

通过使用事件处理程序,我们可以实现对用户操作的响应,从而扩展VBA的功能。

例如,在Excel VBA中,我们可以使用“Worksheet_Change”事件处理程序来在工作表发生变化时执行一些操作。

在VBA编辑器中,选择相应的工作表,然后在“对象”下拉列表中选择“Worksheet”,接下来在右侧的事件下拉列表中选择“Change”。

AutoCad与Excel的连接及明细表的输出

AutoCad与Excel的连接及明细表的输出

AutoCad与Excel的连接及明细表的输出一、Excel 的ActiveX对象模型:1.WorkBooks集合对象一个WorkBook对象实际上就是一个Excel文件,Excel应用程序可以同时打开或创建多个文件,它们被保存在WorkBooks集合对象中,可以通过索引号或名称访问集合中的任何一个工作簿,如下语句所示:'该语句激活WorkBooks集合中的第一个工作簿,使其成为当前工作簿WorkBooks(1).Activate'该语句激活WorkBooks集合中的Mybook.xls工作簿,使其成为当前工作簿WorkBooks("Mybook.xls"). Activate2.Worksheets对象每个工作簿对象上可以有多个工作表WorkSheet。

在默认情况下, Excel的当前工作簿上有名为Sheet1, Sheet2,Sheet3三个工作表,并且Sheet1为当前工作表。

如果想使Sheet2成为当前工作表,则可使用下列语句:ExcelApp.Worksheets("Sheet2").Activate3.Range对象该对象用来指定工作表上的区域。

将单元格A1的值赋给单元格A5的语句说明如下:Worksheets("sheet1").range("A5").value=worksheets("sheet1").range("A1").value]上述语句将Sheet1工作表上的A1(第1行第1列)单元格中的值,赋给Sheet1工作表上的A5(第5行第1列)单元格。

再看下面的语句:…将单元格A1和D26构成的区域选中worksheets("sheet1").range("a1:d26").select这条语句中的Select方法所产生的效果,与我们平时用鼠标在屏幕上将A1:D26区域上的单元格进行刷黑选择是一样的。

VBAForAutoCAD开发手册范本

VBA For AutoCAD开发手册作者:郑立楷目录第一章VBA入门了解嵌入和全局VBA工程用VBA管理器组织工程处理宏用VBA IDE编辑工程更多的信息回顾AutoCAD VBA 工程术语回顾AutoCAD VBA 命令第二章理解ActiveX自动操作基础..理解AutoCAD对象模型访问对象层次通过集合对象操作理解属性和方法理解父对象定位类型库在数据库中返回第一个图元在方法和属性中使用变体使用其它程序语言第三章控制AutoCAD环境打开、保存和关闭图形设定AutoCAD参数控制应用程序窗口控制图形窗口重置活动对象设定和返回系统变量精确制图提示用户输入访问AutoCAD命令行工作于无打开文档状态输入其它文件格式输出到其它文件格式第四章创建和编辑AutoCAD图元创建对象确定容器对象创建直线创建曲线对象创建点对象创建实体填充区域创建面域创建阴影创建实体填充区域创建面域创建阴影编辑对象工作于命名的对象选择对象复制对象移动对象删除对象比例缩放对象转换对象延伸和修剪对象分解对象编辑多段线编辑样条曲线编辑阴影使用图层、颜色和线型使用图层使用颜色使用线型分配图层、颜色和线型给对象添加文本到图形中处理文字样式使用单行文字使用多行文字使用Unicode字符、控制代码和特殊字符替换字体拼写检查第五章标注与公差标注的概念创建标注编辑标注利用标注样式在模型空间和图纸空间中标注创建引线及注解创建形位公差第六章定义菜单和工具栏理解MenuBar和MenuGroups集合加载菜单组改变菜单条创建和编辑下拉菜单和快捷菜单建立并编辑工具栏建立宏对菜单项和工具栏项增加状态栏帮...在右键菜单中增加条目第七章使用事件了解AutoCAD中的事件编写事件处理器的方法处理应用程序级事件处理文档级事件处理对象级事件第八章在三维空间下工作指定三维坐标定义用户坐标系统坐标转换建立三维对象在三维中编辑编辑三维实体第九章定义布局及打印了解模型空间和图纸空间了解布局了解布局与块的关系了解打印配置决定布局设置了解视口切换至图纸空间布局切换至模型空间布局建立图纸空间视口改变视口视图及内容在图纸空间中缩放线型样式在被打印视口中的消隐线打印图纸执行基本打印在模型空间中打印从图纸空间打印第十章-高级绘图与组织技术使用光栅图像附着和缩放光栅图像管理光栅图像修改图像和图像边界剪裁图像使用块和属性使用块使用属性第一章VBA入门本章将为你介绍AutoCADVBA工程及VBA交互开发环境(VBA IDE)。

装配图中零部件序号标注及明细表的自动生成

机械设计与制造MACHINERY DESIGN MANUFACTURE1999年 第3期 NO.3 1999装配图中零部件序号标注及明细表的自动生成霍海宁 摘要:利用Auto LISP语言,采用参数化设计方法设计出了装配图中零部件指引线标注及明细表的自动生成程序,提出了一种明细表的自动生成方法。

关键词:CAD/CAM二次开发 明细表自动生成 程序设计 近年来,CAD/CAM技术得到了迅猛发展。

它具有可以极大缩短设计周期,提高设计质量,增强产品竞争力的巨大优越性和先进性。

然而,在运用CAD进行机械设计时,由于目前流行的大多数软件都是通用平台,仅提供了一种底层的支持环境,只能用于进行绘图,并不宜直接用于产品的二次开发、设计,尤其是专业性较强的机械行业的产品开发、设计。

其中装配图中零部件序号标注及其属性信息输入、明细表的设计等,一般的CAD软件均未直接提供。

常规的做法是:在装配图的各视图设计好后,其零件序号需要一件一件用画线(Line)命令逐件去画,然后再用文字输入(Text)命令逐件写入其件号,不仅速度慢、效率低、劳动强度大,而且件号的最终位置不易控制,画出的图形不美观;其明细表的设计就更加困难,一般都是先做好一个明细表图块如图1所示式样,然后再用插入(Insert)命令插入,用“Text”命令逐件输入其序号(件号)、代号(图号)、名称、数量、材料……其所有工件都是人工操作,要输入的数据既多又繁,容易出错误,且其输入的文字位置、大小等不易对齐,一张图一个样,每一个设计者一个样,很不统一、规范,最终导致画出的明细表不美观漂亮。

笔者在实际工作中,通过对CAD进行二次开发,利用AutoCAD内部嵌入的Auto LISP语言,采用参数化方法设计出了几个小LISP程序,很好地解决了这一问题。

具体做法是:表1 零部件明细表序号代号(图号)名称数量材料单重总重备注198-6-8-1机体1HT20035.535.5 298-6-8-2轴1458.58.5 398-6-8-3机盖1HT20018.3518.35 4GB5783-86螺栓M20×1008450.1561.248 1 装配图中零部件序号标注及其属性信息输入程序设计 该程序的主要任务是完成装配图中各零部件序号指引线的标注及其代号(图号、标准件号)、名称、数量、材料、重量(单重、总重)、备注等属性信息的输入。

利用AutoCAD VBA编写自动标高标注程序

39ZHIHUAI 2019.10雷达的监测范围为水库中南部库湾集中水域。

两处雷达点由巡查执法人员24h 轮流值守,收到雷达报警信号后,立即向水库视频监控中心报告目标位置及移动轨迹,监控中心根据目标所在位置向最有利值班点下达指令,前往目标区域开展执法行动。

2.取得的成效该模式将传统人员巡查同现代电子探测监控技术有机结合,在实现违法行为及时发现、执法队伍快速反应、违法现场抓捕等方面展现了巨大优势。

雷达技术的应用还为组织开展精准定向巡查和远程调度指挥提供了重要技术支撑,在近年的水库渔业资源开发利用、“清四乱”和清违清障等工作中,发挥了举足轻重的作用。

加强水域的管理也产生了可观的经济和生态效益。

目前,库域水事案件的破获率升至90%以上。

2017年和2018年,渔业生产经营利润分别实现同比增长13%、7.6% 。

水库水环境持续改善,水质稳定保持在地表Ⅲ类以上标准,有力保障了城市居民生活用水安全。

四、结语对雷达探测系统作为水域管理方式的创新之举,该应用模式对构建“无违河湖”,维护好水库洁净面貌均具有重要意义。

尽管在雷达技术应用方面进行了初步探索,积累了一定经验,尤其是将雷达结合视频监控系统用于水域管理,达到了增强水域监管工作机动性、灵活性的目标。

但雷达站点之间、雷达站与视频监控中心之间,仍依赖对讲机、电话等传统通讯手段,未能实现电子信号的互联和信息实时共享。

在利用视频监控进行证据搜集时,仅限于枢纽工程管护区及南部中心库面范围,对于库湾河岔区域,因有较多监控盲区,更多还是依靠巡查执法人员利用摄像机进行现场取证,易被违法人员发现而逃逸,破解取证难问题还需要作进一步研究,有待改进和提高■(作者单位:山东省滕州市马河水库管理服务中心 277533 山东省枣庄市鸿禹工程监理有限公司 277000 山东省滕州市水利建筑安装公司 277500)利用AutoCAD VBA 编写自动标高标注程序易 宁1 昌志敏1 陈晓峰2AutoCAD 作为工程设计人员必不可少的设计工具之一,在工程制图中发挥了重要的作用。

通过CADVBA生成坐标表(原创)

通过CADVBA生成坐标表(原创)Public Sub xy()Dim ENT As AcadEntityDim pickpoint As VariantDim PL_ent As AcadLWPolylineThisDrawing.Utility.GetEntity ENT, pickpoint, "请选择要生成坐标表的线:"If TypeOf ENT Is AcadLWPolyline ThenSet PL_ent = ENTDim pointXY() As DoubleDim point() As Doublepoint = ThisDrawing.Utility.GetPoint(, "请拾取表格放置点:")pointXY = PL_ent.CoordinatesDim i As Integer, n As Integern = (UBound(pointXY) - 1) / 2Dim PL_biao As AcadLWPolylineDim PL_xy(0 To 3) As DoublePL_xy(0) = point(0)PL_xy(1) = point(1)PL_xy(2) = point(0)PL_xy(3) = point(1) - 0.5 * (n + 2)Set PL_biao =ThisDrawing.ModelSpace.AddLightWeightPolyline(PL_xy) PL_xy(0) = point(0) + 1PL_xy(2) = point(0) + 1Set PL_biao = ThisDrawing.ModelSpace.AddLightWeightPolyline(PL_xy) PL_xy(0) = point(0) + 4PL_xy(2) = point(0) + 4Set PL_biao = ThisDrawing.ModelSpace.AddLightWeightPolyline(PL_xy) PL_xy(0) = point(0) + 7PL_xy(2) = point(0) + 7Set PL_biao = ThisDrawing.ModelSpace.AddLightWeightPolyline(PL_xy)PL_xy(0) = point(0)PL_xy(1) = point(1)PL_xy(2) = point(0) + 7PL_xy(3) = point(1)Set PL_biao = ThisDrawing.ModelSpace.AddLightWeightPolyline(PL_xy)For i = 0 To n + 1PL_xy(1) = point(1) - 0.5 * (i + 1)PL_xy(3) = point(1) - 0.5 * (i + 1)Set PL_biao = ThisDrawing.ModelSpace.AddLightWeightPolyline(PL_xy) Next iDim Inserpoint(0 To 2) As Double, inserpoint_X(0 To 2) AsDouble, inserpoint_Y(0 To 2) As DoubleDim TEXT_id As AcadText, TEXT_X As AcadT ext, TEXT_Y As AcadTextDim X As String, Y As StringInserpoint(0) = point(0) + 0.5Inserpoint(1) = point(1) - 0.25Inserpoint(2) = 0inserpoint_X(0) = point(0) + 2.5inserpoint_X(1) = point(1) - 0.25inserpoint_X(2) = 0inserpoint_Y(0) = point(0) + 5.5inserpoint_Y(1) = point(1) - 0.25inserpoint_Y(2) = 0Set TEXT_id = ThisDrawing.ModelSpace.AddText("序号", Inserpoint, 0.36)Set TEXT_X = ThisDrawing.ModelSpace.AddT ext("X 坐标", inserpoint_X, 0.36)Set TEXT_Y = ThisDrawing.ModelSpace.AddT ext("Y 坐标", inserpoint_Y, 0.36)TEXT_id.Alignment = acAlignmentMiddleTEXT_id.TextAlignmentPoint = InserpointTEXT_id.Alignment = acAlignmentLeftTEXT_X.Alignment = acAlignmentMiddleTEXT_X.TextAlignmentPoint = inserpoint_XTEXT_X.Alignment = acAlignmentLeftTEXT_Y.Alignment = acAlignmentMiddleTEXT_Y.TextAlignmentPoint= inserpoint_YTEXT_Y.Alignment = acAlignmentLeftInserpoint(0) = point(0) + 0.5Inserpoint(1) = point(1) - 0.75Inserpoint(2) = 0inserpoint_X(0) = point(0) + 2.5inserpoint_X(1) = point(1) - 0.75inserpoint_X(2) = 0inserpoint_Y(0) = point(0) + 5.5inserpoint_Y(1) = point(1) - 0.75inserpoint_Y(2) = 0Dim QZ As StringQZ = InputBox(" 请输入界址点前缀:")For i = 0 To nY = Format(Round(pointXY(2 * i), 3), "###.000")X = Format(Round(pointXY(2 * i + 1), 3), "###.000")Set TEXT_id = ThisDrawing.ModelSpace.AddText(QZ & (i + 1), Inserpoint, 0.36)Set TEXT_X = ThisDrawing.ModelSpace.AddT ext(X,inserpoint_X, 0.36)Set TEXT_Y = ThisDrawing.ModelSpace.AddT ext(Y, inserpoint_Y, 0.36)TEXT_id.Alignment = acAlignmentMiddleTEXT_id.TextAlignmentPoint = InserpointTEXT_id.Alignment = acAlignmentLeftTEXT_X.Alignment = acAlignmentMiddleTEXT_X.TextAlignmentPoint = inserpoint_XTEXT_X.Alignment = acAlignmentLeftTEXT_Y.Alignment = acAlignmentMiddleTEXT_Y.TextAlignmentPoint = inserpoint_YTEXT_Y.Alignment = acAlignmentLeftInserpoint(1) = Inserpoint(1) - 0.5inserpoint_X(1) = inserpoint_X(1) - 0.5inserpoint_Y(1) = inserpoint_Y(1) - 0.5Next iElseMsgBox "所选的对象不是多段线,请重新选择!"Exit SubEnd IfEnd Sub。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
相关文档
最新文档