通过CADVBA生成坐标表(原创)
cad中如何使用vba
第一课:入门1.为什么要写这个教程市面上ACAD VBA的书不多,它的帮助是英文版的,很多人看不懂。
其实我转行已经好几年了,而且手艺也慢慢生疏了,写个教程对自己来说也是一次复习。
2.什么是Autocad VBA?VBA是Visual Basic for Applications的英文缩写,它是一个功能强大的开发工具,学好VBA可以成倍甚至成百、成万倍提高工作效率,在工作中,有很多任务仅用ACAD命令不可能完成的,只要学好VBA就可以做到,相信到时候您一定会得到同事的佩服、老板的器重。
3、VBA有多难?相信大家都知道Basic是的含义。
应该承认,我的水平还不高,错误之处在所难免,如果大家发现错误一定要提出批评,以便及时更正。
4、怎样学习VBA?介绍大家一个学习公式:信心+恒心=开心。
仔细阅读本教程,完成例题,在学习的过程中一定要多思考,多想一些是什么、为什么。
本教程将陆续发布在CAD世界论坛上,您不需要付费就可以学习。
本作者在此郑重承诺:关于本教程中有任何疑问,可以跟贴提问,只要有时间,本人一定会耐心解答。
我不会发到任何人的邮箱中,您自己在论坛上找就可以了,请不要再向我索要这份教程。
5、现在我们开始编写第一个程序:画一百个同心圆第一步:复制下面的红色代码第二步:在模型空间按快捷键Alt+F8,出现宏窗口第三步:在宏名称中填写C100,点“创建”、“确定”第四步:在Sub c100()和End Sub之间粘贴代码第五步:回到模型空间,再次按Alt+F8,点击“运行”Sub c100()Dim cc(0 To 2) As Double '声明坐标变量cc(0) = 1000 '定义圆心座标cc(1) = 1000cc(2) = 0For i = 1 To 1000 Step 10 '开始循环Call ThisDrawing.ModelSpace.AddCircle(cc, i * 10) '画圆Next iEnd Sub也许您还看不懂上面的代码,这没有关系,只要能把同心画出来就可以了,祝您成功。
AutoCAD VBA函数---坐标展点
Next
If blnLyr = False Then
yers.Add ("mPointCode")
End If
blnLyr = False
For Each mLyr In yers
dblPnt(1) = CDbl(strOperate(strLine, ",").Data(3))
dblPnt(2) = CDbl(strOperate(strLine, ",").Data(4))
Set objPnt = ThisDrawing.Application.ActiveDocument.ModelSpace.AddPoint(dblPnt)
End If
blnLyr = False
For Each mLyr In yers
If = "mPointID" Then
blnLyr = True
Exit For
dblTxt(2) = dblPnt(2)
Set objTxt = ThisDrawing.Application.ActiveDocument.ModelSpace.AddText(strOperate(strLine, ",").Data(0), dblTxt, 3.5)
If strOperate(strLine, ",").Count = 5 Then
intCnt = intCnt + 1
dblPnt(0) = CDbl(strOperate(strLine, ",").Data(2))
Exit Sub
End If
(施工经验)提取cad点坐标生成表格并至excel
提取cad点坐标生成表格并至excel CAD坐标数据批量导出小工具(defun c:md()(setvar "cmdecho" 0)(COMMAND ".UNDO" "BE")(command "-units" "2" "3" "2" "3" "" "")(setq fp (open "d:/放样坐标值.xls" "a") s (getvar "cmdecho") n (getint "\n请输入总放样坐标点数目! "))(princ "放样坐标点" fp)(princ "\t" fp)(princ "X坐标值" fp)(princ "\t" fp)(princ "Y坐标值" fp)(princ "\n" fp)(repeat n(setq k (getstring "\n输入放样坐标点编号(如:K1)!")p (getpoint "\n选取节点!")x (strcat "X=" (rtos (nth 0 p)))y (strcat "Y=" (rtos (nth 1 p))))(princ k fp)(princ "\t" fp)(princ x fp)(princ "\t" fp)(princ y fp)(princ "\n" fp))(close fp)(setvar "cmdecho" s))(princ "\n提示:输入 MD 命令来运行本程序!")(princ)1、打开记事本,粘贴以上代码,然后保存成 md.lsp2、打开CAD并加载这个小程序(在命令行输入appload,选择加载md.lsp 程序),将md.lsp复制在support文件夹下后可自动加载。
cad平台上测绘中VBA展野外点点号和方位角
下面就是自动在AutoCAD中画点的Visual Basic程序代码(部分),最后将其制作成可执行文件(e: \展点.exe)供AutoCAD菜单宏调用。
假若数据采集格式为:点号,X坐标,Y坐标, Z(高程)Open数据文件名For Input As #1set Points = yers.Add(/点0)-增加/点0图层Points.Color = acBlueSet Heights = yers.Add(/高程0)-增加/高程0图层Heights.Color = acGreenSet nos = yers.Add(/点号0)-增加/点号0图层nos.Color = acRedDo While Not EOF(1)Input #1, NO, x, y, z -将文件中数据分别附值给这几个变量Pt(0) = y: Pt(1) = x: Pt(2) = 0 -测量坐标系与AutoCAD坐标系的区别Set AdPoint = modelobj.AddPoint(Pt) -在模型空间中画点yer =/点0SetAdNO = modelobj.AddText(Str(NO), Pt, 1#)-在模型空间中绘制点号yer =/点号0Ht(0) = y + 0.9: Ht(1) = x: Ht(2) = 0Set AdHeight = modelobj.AddText(Str(z), Ht, 2#) yer =/高程0LoopClose #1acapp1.Application.ZoomExtentsForm1.Visible = FalseEnd Sub将展成的点连线的VBA代码为:Set PtLine = yers.Add(/点连线0) PtLine.color = acCyanDim kDim Coord As VariantFor Each entry In ThisDrawing.ModelSpaceIf entry.EntityType = acPoint Theni = i + 1End IfNext -获取模型空间中的点数目ReDim entrycopys(i -1, 2) -根据获得的点数目重新定义数组维数k = 0For Each entry In ThisDrawing.ModelSpaceIf entry.EntityType = acPoint ThenCoord = entry.Coordinates -获取实体坐标entrycopys(k, 0) = Coord (0)entrycopys(k, 1) = Coord (1)entrycopys(k, 2) = Coord (2)k = k + 1End IfNextDim StPt(0 To 2) As DoubleDim EtPt(0 To 2) As DoubleFor j = 1 To i -1StPt(0) = entrycopys(j -1, 0)StPt(1) = entrycopys(j -1, 1)StPt(2) = entrycopys(j -1, 2)EtPt(0) = entrycopys(j, 0)EtPt(1) = entrycopys(j, 1)EtPt(2) = entrycopys(j, 2)Set Lines = ThisDrawing.ModelSpace.AddLine(StPt, EtPt)-将当前点与前一个点连线yer =/点连线0Next jThisDrawing.Application.ZoomExtents如果要在Visual Basic环境中写入程序,则只要将VBA中的ThisDrawing对象改为AutoCAD对象的活动文件对象,就可以执行相同的操作,但由于是外部程序,执行速度将会慢一些。
基于VBA在AutoCAD中自动绘图的应用
基于VBA在AutoCAD中自动绘图的应用------李广亚随着电脑技术的飞速发展,目前大多数企业都采用AutoCAD制图、绘图,在工程施工领域也是采用AutoCAD进行二维工程绘图。
GPS的应用使的施工现场坐标的采集非常方便,通常便于直观,监理、业主会要求将GPS采集的坐标绘制在CAD图上。
对于一个熟悉CAD的人来说,将10几个坐标数据手工录入坐标绘制到CAD中是比较容易的,但如果是几十个点,上百个点,甚至几百个点,对于一个施工技术员来说一个一个坐标的手工录入,就成了一个比较有难度的工作,主要因为手工录入会比较繁琐、耗费时间长还特别容易出错。
在这方面如何能提高技术人员的工作效率?基于此,我们采用AtuoCAD中的VBA技术,进二次开发,可以方便的将大量的坐标自动绘制到CAD图中。
下面通过一个简单事例来说明AtuoCAD中VBA技术的二次开发自动绘图程序的过程: 事件介绍:2012年业主在场区开挖一不规则多边形鱼塘,要求我单位将鱼塘进行测量并标注在总平面图上。
1、数据采集:使用GPS现场进行数据采集,在鱼塘周边从一点开始,顺时针方向进行,在不规则鱼塘的所有角点拐点均采集坐标,并保存在GPS中。
2、导出坐标:将GPS中采集的坐标导出到文本文档,如下图:3、数据处理:将导入的坐标使用EXCEl文档打开并编辑处理,高程全设为0,表单重命名为“SJ”,保存EXCEl文档到D盘,文档名称为“GPS导入坐标绘图”如下图:4、VBA跨平台技术二次开发:(1)、打开AutoCAD,选择工具->宏->VBA编辑器,打开VBA编辑器。
在VBA编缉器中插入用户窗体,在窗体上插入按钮组件,如图:(2)、双击按钮,打开代码编辑窗口,编缉代码如下:Private Sub CommandButton1_Click()Dim xlapp As Excel.ApplicationDim xlbook As Excel.workbookDim xlsheet As Excel.worksheetSet xlapp = CreateObject("excel.application")Set xlbook = xlapp.workbooks.Open("D:\GPS导入坐标绘图.xls")'打开的EXCEL路径xlapp.Visible = FalseSet xlsheet = xlbook.worksheets("sj") '打开EXCEL中的sj工作表i = xlsheet.Cells(1, 2) 'i为线条线数For p = 0 To i - 2 Step 1p = pk1 = xlsheet.Cells(3 + p, 3) '将表格第3行第3列内数值赋值给K1,X坐标值h1 = xlsheet.Cells(3 + p, 2)k3 = xlsheet.Cells(3 + p, 4)k2 = xlsheet.Cells(4 + p, 3)h2 = xlsheet.Cells(4 + p, 2)h3 = xlsheet.Cells(4 + p, 4)Dim 点 As AcadLineDim 起点(2) As DoubleDim 端点(2) As Double起点(0) = k1 '将K1值贱赋值给起点数组内第一个值,即起点X坐标。
利用VBA自动提取CAD图纸明细表并进行数据库管理
自动提取CAD图纸明细表及数据库管理的研究与实践本文TAG:工程图明细表自动提取AutoCAD数据库管理2008-10-21作者:尹胜安出处:e-works阅读:1582推荐:0本文详细介绍了如何开发应用AutoCAD来自动提取CAD图纸明细表及管理数据库,其切切实实的为设计工作节约了大量的时间。
制造企业工程技术人员在利用CAD进行产品设计时产生大量的DWG文件,每一个DWG文件中包含一张或数张图纸,设计的基础资料如:工程项目、图号、设备(物料)名称、型号规格、材质、数量、重量、备注等等文本信息都记录在图纸标题栏明细表中。
设计工作完成后,工艺编制、成本预算、物料消耗、物流采购、计划调度、车间生产等项管理业务都将依据图纸进行操作。
在通常的管理中,各业务部门往往通过人工的方式从CAD图纸或纸质图纸明细表中获取技术文件数据,再利用WORD或EXCEL进行手工二次录入,编制各自需要的明细表、经过汇总,生成相应的报表,并在此基础上产生工艺技术文件通俗简称为(工单),按不同的用途也有的称之为物料消耗单、物料清单BOM等。
这种单页面的文本制作方式虽然使用了电脑操作,但并未能摆脱繁重的手工录入和编辑工作,不能进行数据的自动处理,存在图纸与制表数据不一致、差错率高、工作量大、编制周期长、效率低下、查询繁琐、数据不能共享等多种弊端。
因此,采用自动提取CAD明细表与进行数据库管理的方法是克服以上弊端提高企业设计、技术、管理效率和工作质量的有效途径。
AutoCAD是AutoDesk公司开发的通用CAD工作平台,在机械、造船、电子、汽车、测绘、建筑等许多行业中得到广泛的应用,其完善的图形绘制和编辑功能,多种接口文件,较强的数据交换能力,特别是开放的二次开发功能给用户提供了有力的技术支撑。
Microsoft VBA (Visual Basic for Application) 是一个面向对象的可视化编程环境,它是由Visu al Basic派生而来,AutoCAD内嵌的VBA提供了与Visual Basic相似的丰富的开发能力。
CAD导出坐标数据方法
C A D导出坐标数据的方法A u t o C A D、E X C E L电子表格和记事本联合导出坐标数据步骤一:用AutoCAD绘图软件打开坐标定位图,把要坐标的点编号(1--无数)。
步骤二:在命令行输入命令“id”,按所编顺序依次点击所需坐标的点位,可以一次点完,也可分次点完。
步骤三:在文本窗口点击右键,选择“复制历史”,然后将复制的结果粘贴在记事本里,除坐标点数据外,其他均删掉,然后保存文件到自建“数据”文件夹。
步骤四:打开Excel电子表格,点击表格上方的数据菜单—“导入外部数据”—“导入数据”打开文本“数据”,根据文本导入向导步骤设置。
将数据导入到所需要的位置。
步骤五:点击菜单“编辑”—“定位”—“定位条件”—“空值”,点击确定,将选中的空格即多余的文字删去只保留坐标数据。
步骤六:制作“坐标定位数据表格”将整理好的坐标数据粘贴到对应位置(AutoCAD坐标系与测量坐标相反的把X改成Y,Y改成X)。
自己根据需要进行调整。
此种方法结合了三种软件的各自独特的功能,能快速的从CAD图形文件里将各特征点的坐标导入EXCEL电子表格里,将数据整理后运用EXCEL的制表功能快速编号整理。
但它的编辑顺序要求高,在采集数据前,一定要将采集点合理编号,这样才能有利于区别点位,且便于自检。
还有一种方法:步骤一:用AutoCAD绘图软件打开坐标定位图,把要坐标的点编号(1--无数)。
步骤二:然后用多段线依次按顺序把每个点连接。
可以一次点完,也可分次点完。
步骤三:点击多段线,然后在命令栏输入LIST确定,屏幕出现文本窗口,复制历史记录,然后将复制的结果粘贴在记事本里,除坐标点数据外,其他均删掉,然后保存文件到自建“数据”文件夹。
步骤四:打开Excel电子表格,点击表格上方的数据菜单—“导入外部数据”—“导入数据”打开文本“数据”,根据文本导入向导步骤设置。
将数据导入到所需要的位置。
步骤五:点击菜单“编辑”—“定位”—“定位条件”—“空值”,点击确定,将选中的空格即多余的文字删去只保留坐标数据。
CAD VBA代码
一、基本操作 (1)1、块操作 (1)1.1、定义块方法: (1)1.2、把选择集加入块中的方法 (1)1.3、插入块方法: (1)1.4、画块属性方法 (1)1.5、编程思路: (1)2、画直线 (单段线) (3)3、画多段线 (4)3.1、修改出线点的位置 (4)4、画圆 (4)5、获取鼠标指定的坐标点 (4)6、旋转 (4)7.插入文字(单选) (5)(1)、左边对齐: (5)(2)、中间对齐: (5)(3)、右边对齐 (5)8.插入文字(多行) (5)9、画圆弧 (6)10、画图椭圆 (6)11、CAD打开读取数据 (6)12、绘制圆弧 (6)二、CAD VBA程序答 (7)1. VBA写的宏,可否编译成象ARX一样的程序,经加载后,在命令行打入命令后就可运行 (7)2. VB中可以生成可执行文件,而在VBA中却不行 (7)5.有时文字是从别的图中复制-粘贴的,如果不打破的话,能否直接得到文字内容. (8)GetSubEntity 方法 (8)6. 想必河伯对Excel/ActiveX有研究, 能否请教如何获得Excel文件最后一行的信息? .8可以用CurrentRegion属性计算最后一行 (8)7. 如何调用vba命令对多义线进行fit(拟合)处理 (9)8. 块属性值编辑 (9)9.如何用程序控制对象捕捉 (10)10. 如何从VBA到VB? (10)11.IntersectWith 方法 (10)12.绘制多边形并显示多边形顶点坐标 (10)13.Private Sub AcadDocument_BeginDoubleClick(ByVal pPoint As Variant) (11)14. 现有Handpoint = acadApp.ActiveDocument.Utility.GetPoint(, "请输入套料的插入点") (12)希望用户在捕捉点或输入点坐标动作时,如何避免用户因其他操作如缩放、PAN引起的系统报错 (12)15.在VBA中如何传送一个参数给Vlisp? (12)17.我想知道vb中的那个函数或者对象的方法可以代替在cad中按esc键取消命令 (12)18点击菜单项就在该菜单上打对号是怎么实现的? (13)20请问版主,如何实时获得当前光标的X,y,z坐标值,如同状态栏上显示坐标值13 21可以设置图块中的块属性值,如内 (13)22我的选择集中有Block和PLine,我想能使用该函数 (14)23我的机器里装有cad14和cad2000,用vb写了一个程序调用cad,如何让程序每次都调用cad2000呢? (14)24我只是想判断一下 (14)25SendCommand "_line" 没有返回值,怎么知道是否添加了line (15)26为什么修改文字的对方正式后辩证文字会移回到零点? (15)27删除块前,应先删除块的引用,怎样查找块的引用?(VBA) (15)28使用ADO的方法如何存取ACCESS数据库? (15)30如何将类似".5"数值改为"0.5"显示 (16)31请问,如何将图上所有的数字(成千上万个数值)减去同一个常数? (17)34 把选择的对象放大几倍,VBA怎么实现? (20)35怎样提取图形的视图左下角、右上角和图形左下角,右上角的坐标? (20)1. 怎么查找某一个group是否存在?- (21)3. 在编程中,我遇到以下问题: (21)5. Sheets("检测报告").Select (22)6. 请问如何让form.hide后form.show时能保持form先前移动后的位置? (22)9怎样计算一个多边形的中心点? (23)10如何返回在命令行中输入的字符,是指在没有按下回车和空格下 (24)11当我插入块时,鼠标的click_point为两个图块的公共插入点,即同时插入两个块 24 12如何把168.235642度分解成度,分,秒?我没有办法判别小数点? (24)13. 请问在VBA中怎么使一个选择集只选中模型空间中可见图元? (25)14. windows安装了几个打印机,如何用vb指定打印机。
CAD导入和导出坐标步骤详细说明
CAD导入和导出坐标步骤详细说明导入和导出坐标是CAD软件中常用的功能之一,它们可以使用户方便地将坐标数据从一个文件导入到CAD软件中,或者将CAD中的坐标数据导出到其他文件中使用。
下面将详细说明CAD中的导入和导出坐标的步骤。
1.导入坐标步骤一:打开CAD软件,并选择想要导入坐标的文件。
大多数CAD软件支持的导入格式包括文本文件(如TXT、CSV格式)、Excel文件(如XLS、XLSX格式)以及其他CAD软件的文件格式(如DXF、DWG格式)。
步骤二:选择菜单中的“文件”或“导入”选项,并选择“导入坐标”选项。
不同CAD软件可能会有不同的菜单名称和选项名称,但一般都会提供导入坐标的功能。
步骤三:在弹出的对话框中,选择合适的导入选项和设置。
这些选项和设置可能包括导入文件的格式和类型、坐标系的选择、坐标字段的匹配等。
根据导入文件的实际情况,进行相应的设置。
步骤四:点击“导入”按钮或确认按钮,开始导入坐标。
CAD软件会根据设置的参数,读取导入文件中的坐标数据,并将其加载到CAD软件中。
导入坐标的速度和结果会因导入文件的大小和复杂度而有所不同。
2.导出坐标步骤二:选择菜单中的“文件”或“导出”选项,并选择“导出坐标”选项。
与导入坐标类似,不同CAD软件可能会有不同的菜单名称和选项名称,但一般都会提供导出坐标的功能。
步骤三:在弹出的对话框中,选择合适的导出选项和设置。
这些选项和设置可能包括导出文件的格式和类型、坐标系的选择、坐标字段的匹配等。
根据导出文件的实际需求,进行相应的设置。
步骤四:点击“导出”按钮或确认按钮,开始导出坐标。
CAD软件会根据设置的参数,将所选文件中的坐标数据导出到指定的文件中。
导出的速度和结果会因导出文件的大小和复杂度而有所不同。
步骤五:完成坐标导出后,可以在导出文件中查看导出的坐标数据。
根据导出文件的格式和类型,可以使用相应的软件或工具打开和处理导出的坐标数据。
导出的坐标数据可以用于其他CAD软件或其他应用程序中使用。
通过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。
利用VBA自动提取CAD图纸明细表并进行数据库管理
自动提取CAD图纸明细表及数据库管理的研究与实践本文TAG:工程图明细表自动提取AutoCAD数据库管理2008-10-21 作者:胜安出处:e-works 阅读:1582 推荐:0本文详细介绍了如何开发应用AutoCAD来自动提取CAD图纸明细表及管理数据库,其切切实实的为设计工作节约了大量的时间。
制造企业工程技术人员在利用CAD进行产品设计时产生大量的DWG文件,每一个DWG文件中包含一或数图纸,设计的基础资料如:工程项目、图号、设备(物料)名称、型号规格、材质、数量、重量、备注等等文本信息都记录在图纸标题栏明细表中。
设计工作完成后,工艺编制、成本预算、物料消耗、物流采购、计划调度、车间生产等项管理业务都将依据图纸进行操作。
在通常的管理中,各业务部门往往通过人工的方式从CAD图纸或纸质图纸明细表中获取技术文件数据,再利用WORD或EXCEL进行手工二次录入,编制各自需要的明细表、经过汇总,生成相应的报表,并在此基础上产生工艺技术文件通俗简称为(工单),按不同的用途也有的称之为物料消耗单、物料清单BOM等。
这种单页面的文本制作方式虽然使用了电脑操作,但并未能摆脱繁重的手工录入和编辑工作,不能进行数据的自动处理,存在图纸与制表数据不一致、差错率高、工作量大、编制周期长、效率低下、查询繁琐、数据不能共享等多种弊端。
因此,采用自动提取CAD明细表与进行数据库管理的方法是克服以上弊端提高企业设计、技术、管理效率和工作质量的有效途径。
AutoCAD是AutoDesk公司开发的通用CAD工作平台,在机械、造船、电子、汽车、测绘、建筑等许多行业中得到广泛的应用,其完善的图形绘制和编辑功能,多种接口文件,较强的数据交换能力,特别是开放的二次开发功能给用户提供了有力的技术支撑。
Microsoft VBA (Visual Basic for Application) 是一个面向对象的可视化编程环境,它是由V isual Basic派生而来,AutoCAD嵌的VBA提供了与Visual Basic相似的丰富的开发能力。
基于VBAforAutoCAD的放样坐标自动批量采集
基于VBA for AutoCAD 的放样坐标自动批量采集李向民(广西建设职业技术学院土木工程系,南宁 530003)摘要:为了进一步提高在AutoC AD 图上获取放样测量所需的设计点位坐标的工作效率,本文探讨利用VBA for AutoC AD 编程工具开发程序,在AutoC AD 图上自动地批量采集放样点坐标的技术和方法。
实现了只需拾取一个含有放样点坐标属性的圆、图块符号或多段线作样本图元并确定采集范围,便可自动搜查所有与样本相同的图元并提取其点位坐标,在很短的时间内完成大量的放样坐标采集,并在图上标注点号。
坐标数据可选按不同的格式保存为文本文件,便于传输到各种不同型号的全站仪。
关键词:VBA ;AutoC AD ;放样;坐标;采集中图分类号:P209文献标识码:BAutomatic gathering of lofting coordinates in batches basedon VBA for Auto CADLi X iangmin(Guangxi institute o f construction pro fessional technology ,Nanning 530003,China )Abstract :In order to further enhance the w orking efficiency for gathering lofting survey coordinates on AutoC ADChart ,this article discusses the technology and the method of automatic gathering lofting coordinates in batches on VBA for AutoC AD programming tool.This method only needs to collect the circle ,the block or the multistage line as the sam ple to determine the gathering scope.Then it can search all chart members which are the same as the sam ple and get their position coordinates.And it can com plete massive lofting coordinates gathering in the very short time and label the point number on the chart.The coordinate data can select the different form to save as the text document that is easy to be transmitted to all kinds of total stations.K ey w ords :VBA ;AutoC AD ;lofting ;coordinate ;gathering 收稿日期:2008211209作者简介:李向民(1964-),男(汉族),广西藤县人,硕士,副教授.0 引言在进行工程施工放样测量时,经常需要在AutoC AD 图上获得所需的点位放样坐标,然后用全站仪按坐标将其测设到实地上。
坐标转换(AotuCAD VBA)
坐标转换(AotuCAD VBA)用TranslateCoordinates方法可以将一个点或一段位移由一个坐标系统转换到另一个坐标系统。
一个点变量,称为OriginalPoint,可以被视为一个三维点或一个三维位移矢量。
这个变量由Boolean变量- Disp来区分。
如果Disp变量被设为TRUE的话,OriginalPoint变量就被视为一个位移矢量;反之,则被视为一个点。
两个以上的变量可以决定这个OriginalPoint来自哪个坐标系统,也可以决定这个OriginalPoint要被转换到哪个坐标系统。
以下的AutoCAD坐标系统可以被指定为From和To变量。
WCS世界坐标系统即参照坐标系统。
其它所有的坐标系统都是相对WCS定义的,WCS是永远不改变的。
相对于WCS测量的值可以忽略其它坐标系统的变化。
除了特殊说明,所有传进或传出ActiveX方法和属性的点都用WCS表示。
UCS用户坐标系统即工作中的坐标系统。
用户指定一个UCS以便绘图更容易。
所有传到AutoCAD命令的点,包括那些从AutoLISP程序和外部功能返回的,都是当前UCS的点(除了在命令提示符后用户在前面加了个*的点)。
如果你想用程序将WCS、OCS或DCS坐标传到AutoCAD命令,你必须首先通过调用TranslateCoordinates方法将它们转换成UCS。
OCS对象坐标系统-由多义线和细多义线对象的某些方法和属性指定的点的值由这种坐标系统表达,与对象有关。
这些点通常根据对象的用途被转换成WCS、当前的UCS或当前的DCS。
相反的,在WCS、UCS或DCS中的点依靠相同的属性写进数据库之前,必须被转换成OCS。
要了解使用该坐标系统的方法和属性,请参看AutoCAD中的"ActiveX 和VBA 参考"。
当从OCS转换坐标或转换坐标到OCS时,你必须输入TranslateCoordinates方法中的最后一个参数OCS法线。
cad坐标生成表格
竭诚为您提供优质文档/双击可除cad坐标生成表格篇一:(施工经验)提取cad点坐标生成表格并至excel 提取cad点坐标生成表格并至excelcad坐标数据批量导出小工具(defunc:md()(setvar"cmdecho"0)(command".undo""be")(command"-units""2""3""2""3""""")(setqfp(open"d:/放样坐标值.xls""a")s(getvar"cmdecho")n(getint"\n请输入总放样坐标点数目!"))(princ"放样坐标点"fp)(princ"\t"fp)(princ"x坐标值"fp)(princ"\t"fp)(princ"y坐标值"fp)(princ"\n"fp)(repeatn(setqk(getstring"\n输入放样坐标点编号(如:k1)!")p(getpoint"\n选取节点!")x(strcat"x="(rtos(nth0p)))y(strcat"y="(rtos(nth1p))))(princkfp)(princ"\t"fp)(princxfp)(princ"\t"fp)(princyfp)(princ"\n"fp))(closefp)(setvar"cmdecho"s))(princ"\n提示:输入md命令来运行本程序!")(princ)1、打开记事本,粘贴以上代码,然后保存成md.lsp2、打开cad并加载这个小程序(在命令行输入appload,选择加载md.lsp程序),将md.lsp复制在support文件夹下后可自动加载。
利用ExcelVBA实现在AutoCAD中展绘坐标点
利用ExcelVBA实现在AutoCAD中展绘坐标点.txtゅ你不用一上线看见莪在线,就急着隐身,放心。
莪不会去缠你。
说好的不离不弃现在反而自己却做不到╮本文由geosouth贡献pdf文档可能在WAP端浏览体验不佳。
建议您优先选择TXT,或下载源文件到本机查看。
第 31 卷第 4 期 2008 年 8 月测绘与空间地理信息GEOMA T ICS & S PA T IAL IN FORMA T ION TECHNOLOGYVol 31, No. 4 . Aug , 2008 .利用 Excel VBA 实现在 AutoCAD 中展绘坐标点彭四清(中国有色金属工业长沙勘察设计研究院 , 湖南长沙 410011)摘要 : 测量技术人员常用的软件主要有 M icrosoft office, AutoCAD 等 ,如何充分利用软件的功能更好地服务于我们的测量工作 , 提高工作效率是测量技术人员努力的方向 .本文就 Excel软件中通过 VBA 编程实现了自动将测量坐标数据绘制在 CAD 图中 , 使测量工作变得轻松和快捷 , 为测量工作者如何更好地使用现有的软件提供了一种方法 . 关键词 : VBA; Excel; AutoCAD; 测量坐标数据中图分类号 : P209 文献标识码 : B 文章编号 : 1672 - 5867 ( 2008 ) 04 - 0195 - 02L oca tin g Coord ina te Po i t usi g Excel VBA i AutoCAD n n nPENG Si - qing( Changsha Explora tion D esign & Research In stitute of Ch ina Nonferrous M eta ls, Changsha 410011, Ch ina) Abstract: The softw are that often used by survey engineers includesM icrosoft office, AutoCad etc. How to full use the softw are's func2 alized the automaticly locating of coordinate points w ith Excel VBA in AutoCAD , to make surveying work much more p leasant and quick. It p rovided a kind of method for surveying engineer on how to well use the existed soft are. w Key words:VBA; Excel; AutoCAD; survey coordinate data0 引言目前 ,测绘技术人员使用的工具软件主要为 M icrosoft office, AutoCAD ,很多的数字化成图软件是 AutoCAD 的二次开发 .在测量工程师的电脑中 , 一般将测量坐标数据存放在 Excel表格中 ,而图形则以 AutoCAD dwg文件的格式保存 .当我们打开一个 Excel 表 , 想随时查看其图形时 ,利用数字化成图软件作图比较烦琐 , 此时利用自己制作的一个小工具软件来实现就显得非常快捷和方便 .基于此 ,利用 Excel VBA 编程 , 实现在AutoCAD 中展绘测量坐标点的小工具便诞生了 . M icrosoft Excel软件具有十分强大的制表 , 表格计算等功能 ,是人们常用的制表工具 ,通过其内嵌的 VBA 语言 [1] 可以控制 M icrosoft Excel 的整个操作过程 . AutoCAD 是由 AutoDesk 公司开发的工程绘图软件 , 是CAD 市场的主流产品 , 功能十分强大 , 是工程制图人员常用的软件之一 .AutoDesk 公司自从推出 R14 版以后 , 便为其提供了 [2] VBA 语言接口 .因此 , 可以通过在 Excel 中使用 VBA 编程 , 将测量坐标数据绘制成 CAD 图形 , 实现绘图自动tions, to better serve our surveying work, to imp rove our working efficiency is the endeavor direction for survey engineers This paper re2 .化.1程序功能要求测量的坐标数据包括 : 控制点坐标数据 , 界桩坐标 , 测量地形点等 , 程序必须能根据各种测量数据的绘图要求按照国家标准转换成相应的图形 .如 : 测量控制点 , 其符号和标注要求有点号和控制点高程 , 并且以分数的形式表示 ; 界桩点需绘制界桩点符号 , 界桩号 , 各界桩点间需连线 ; 地形点则仅注记高程 , 无需有点号 , 点与点之间可以连线 ,也可不连 .另外 ,数据格式也应灵活多变 ,有些数据只有坐标 , 无高程 ; 点号与坐标之间有无其他数据列均能处理 .对多种格式的处理采用的办法相当简单 , 只需采用对话框编程分别获取数据就可以了 , 这大大增强了程序的适应能力 .2程序实现方法因 Excel和 AutoCAD 都支持 ActiveX Automation 对象编程 ,在 Excel中通过 VBA 调用 AutoCAD 对象类型库进 [ 1, 3 ] 行绘图操作 ,具体步骤如下 :收稿日期 : 2007 - 12 - 05作者简介 : 彭四清 ( 1966 - ) , 男 ,湖南沅江人 , 工程师 , 学士 ,主要从事测绘技术工作 .1994-2009 China Academic Journal Electronic Publishing House. All rights reserved.196测绘与空间地理信息 2008 年2. 1 Excel中点击工具 , , isual B asic 编辑在宏 V器 ,新建一个宏 2. 2 插入用户窗体用户窗体的内容如图 1 所示 .前文档图名与 Excel 中的工作表名称是否一致 , 若不一致 ,则创建一个新的文档 ,并使之处于当前状态 .caddoc. Activate Else Set caddoc = cad. ActiveDocument End If End Sub2. 4 其他子过程的编写子过程有 6 个 ,包括绘制各控制点符号的函数 , 有三角点 , 小三角点 , 控制点 , GPS 导线点 , 图根控制点和界桩点等符号的绘制 .以上功能作成一个小的函数 , 供主程序调用 . 图 1 用户窗体F ig. 1 The form of user2. 5 程序保存和工具条自定义Excel提供了一个名为 Personal xls的个人宏工作簿 , . 它存储在 Excel Stratup 文件夹中 .每次启动 Excel时 , Per2 sonal xls以隐藏的形式打开 .由于个人宏工作簿是一直 . 打开的 , 为使程序在每一个工作簿中都能够使用 , 可以将该程序存储在个人宏工作簿中 . Excel工具条自定义 : 右击工具栏 , 自定义 , 在命令标签中找到宏 ,再找到自定义按纽 ,将按纽名称定为"Cad 绘图" .这样 ,以后需要绘图时 ,点击该按纽就可以了 .对窗体控件进行事件代码的编写 , 为程序的运行进行初始化操作 ,窗体初始化事件的代码如下 :Private Sub U serForm _ Initialize ( ) fh. Add Item "GPS控制点 "0 , fh. Add Item " 导线控制点□"1 , fh. Add Item " 三角控制点△"2 , fh. Add Item " 小三角点 "3 , fh. Add Item " 界桩符号ρ "5 , fh. Add Item " 无符号 "6 , bh. Enabled = False End Sub Private Sub qdcad ( ) Else End If cad. V isible = True End If fh. Add Item " 图根控制点⊙"4 ,3程序运行和绘图示例有一控制成果表如表 1 所示 , 控制数据为 Excel电子表格 ,需将控制数据绘制成CAD 图 ,现使用用本程序进行绘制 . 表 1 控制点成果表 Tab. 1 The results of con trol po in ts纵坐标344. 237. 018. 675. 797.If RefEdit1. Text = " " Then RefEdit2. Enabled =False: RefEdit3. Enabled = False2. 3 插入通用过程点名标石类型横坐标019. 752. 766. 638. 849.高程1 : 000 1 6 6 6 6 6 440 340 340 539 539此过程包含 cad 调用和图形绘制 , cad 调用的过程代码如下 :D im cadW asNotRunning A s Boolean 判断 cad 是 ' On Error Resume Next ) Set cad = GetO bject ( ,"AutoCAD. App lication" If Err Number < > 0 Then . cadW as NotRunning = True cadW as NotRunning = False图幅号否已运行的标志混凝土混凝土混凝土混凝土混凝土…… I I536 混凝土 A I I537 混凝土 AI I513 A I I514 A I I515 A I I519 A I I520 A28 28 28 27 27163 941 617 515 958112 111 111 112 112059 055 367 206 88597. 769 77. 728 78. 15 73. 048 68. 711…………27 127. 495 26 636. 633112 415. 464 89. 378 111 571. 508 115. 9336 438 6 337程序运行界面如图 2 所示 .If cadW as NotRunning = True Then 若 cad 未运 '行 ,启动 AutoCAD 软件) Set cad = CreateObject ( AutoCAD. App lication" "Name ThenIf Left ( cad. ActiveDocument Name, Len ( cad. Acti2 . veDocument Name ) - 4 ) < > App lication. ActiveSheet . . Set caddoc = cad. Documents Add 判断 cad 中当 . '图 2 运行界面F ig. 2 Runn in g in terface(下转第 199 页 )1994-2009 China Academic Journal Electronic Publishing House. All rights reserved.第 4期沈 : 浅谈如何选择野外工作的通讯产品忱199根据表 1 中的比较可以看出 ,全球星和亚星电话通讯质量较好 ,语音清晰 , 而且资费也相对便宜 , 但二者只覆盖有限区域 , 特别是在我国的新疆等偏远省份 , 信号不能做到完全覆盖 .另外 , 近年来全球星和亚星通讯公司经营状况不良 , 导致卫星系统的正常运行也受到很大影响 , 其通讯可靠性已大不如前 , 市场上也难以见到这两种卫星电话的销售 , 因此这两种卫星电话已不太适合野外作业单位使用 .铱星电话通讯质量也很好 , 信号覆盖全球区域 , 语音通讯设备也比较轻便 ; 海事卫星电话信号覆盖除两极外的区域 ,设备体积相对较大 ,重量约 2 kg,轻便性略差 ,但功能全面 , 除可提供语音通讯外 , 还可提供传真和网络服务 , 可满足多方面的需求 , 通讯语音也很清晰 , 但有明显的延时滞后感 .该公司在今年也开发了轻便型语音通讯设备 , 轻便性能和其他卫星电话基本相同 .铱星电话和海事卫星电话通讯费用相对较高 , 但都能够提供高可靠性的通讯保障 ,因此很适合野外作业单位选用 .较大 , 耗电量也较大 , 且远距离通讯可以由性能和可靠性都更好的卫星电话完成 , 所以建议不使用短波电台 .应选用对讲机 , 车载电台和卫星电话 3 种产品 .对讲机和车载电台选择合适频段 , 性能出色的业余机产品 , 使用相同频率 ,做到互通 , 对讲机为小组成员之间 , 以及组员和本组车辆之间提供约 5 ~8 km 范围内的通讯保障 ; 车载电台为小组之间提供约 15 ~20 km 范围内的通讯保障 ; 小组之间以及小组和基地之间的远距离通讯由铱星或海事卫星电话提供保障 .由这 3 种通讯产品梯次搭配 ,在近 , , 中远距离的通讯工作中 , 相互结合 , 分别提供高质量 , 高可靠性的服务 ,互相弥补不足 , 发挥各自优点 , 可以有效构建高质量的通讯网络 ,为野外工作提供有力的通讯保障 .参考文献 :[1 ] 童效勇 ,陈方 . 业余无线电通信 (修订本 ) [M ]. 北京 : 人民邮电出版社 , 2004.[2 ] 李文海 . 现代通信技术 (第二版 ) [M ]. 北京 : 人民邮电出5 结束语野外工作的通讯保障 , 不仅仅是工作的保障 , 更是安全的保障 ,生命的保障 , 必须保证足够的高性能 , 高可靠性和通讯距离 , 任何一种单一的通讯产品 , 都不能完全达到所有的要求 .因此 , 笔者认为 , 短波电台由于设备体积(上接第 196 页 )版社 , 2007.[3 ] 沈琪琪 . 短波通信 [M ]. 西安 : 西安电子科技大学出版社 , 1997.[编辑 : 王明曦 ]运行程序后 , 出现了对话框窗体 , 分别在 Excel 表中选取坐标数据列 , 高程数据列以及点号数据列中对应的数据 , 在符号列表框中选取控制点的符号类型 , 再确定绘图比例尺 ,按" 确定 "即绘出了 CAD 图形 , 图形文件自动 , 存为与 Excel工作表相同的文件名 .上面示例的运行结果如下图 3 所示 .4结束语本文通过对 VBA 编程示例的论述 , 说明 Excel VBA 编程可以实现对 AutoCAD 的控制 .将 Excel电子表中的测量数据转变为我们所需要的图形 , 其高效性和方便性是不言而喻的 . VBA 正在逐渐成为业界标准 , 许多软件包括测量软件 , 软件都集成了 VBA , 或提供 VBA 编程接口 , 说明 GIS 测量技术与现代计算机技术紧密相连 .测量技术人员应与时俱进 , 充分利用现代计算机技术的成果 , 改进测量方法 ,提高工作效率 .参考文献 :[1 ] 北京博彦科技发展有限责任公司 . Office VBA 编程高手 [M ]. 北京 : 北京大学出版社 , 2000. [2 ] 张帆 . AutoCAD VBA 二次开发教程 [M ]. 北京 : 清华大学出版社 , 2006.图 3 运行结果F ig. 3 Runn i g result n[ 3 ] 1 : 1 : 000 1 : 000 地形图图式 ( GB / T7929 - 1995 ) 500 1 2 [ S ]. 北京 : 中国标准出版社 , 1996.[编辑 : 王明曦 ]1994-2009 China Academic Journal Electronic Publishing House. All rights reserved.本TXT由“文库宝”下载:/wenkubao。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Inserpoint(2) = 0
inserpoint_X(0) = point(0) + 2.5
inserpoint_X(1) = point(1) - 0.75
PL_xy(1) = point(1)
PL_xy(2) = point(0) + 7
PL_xy(3) = point(1)
Set PL_biao = ThisDrawing.ModelSpace.AddLightWeightPolyline(PL_xy)
Set TEXT_X = ThisDrawing.ModelSpace.AddText(X, inserpoint_X, 0.36)
Set TEXT_Y = ThisDrawing.ModelSpace.AddText(Y, inserpoint_Y, 0.36)
Set PL_biao = ThisDrawing.ModelSpace.AddLightWeightPolyline(PL_xy)
PL_xy(0) = point(0) + 1
PL_xy(2) = point(0) + 1
If TypeOf ENT Is AcadLWPolyline Then
Set PL_ent = ENT
Dim pointXY() As Double
Dim point() As Double
point = ThisDrawing.Utility.GetPoint(, "请拾取表格放置点:")
inserpoint_X(0) = point(0) + 2.5
inserpoint_X(1) = point(1) - 0.25
inserpoint_X(2) = 0
inserpoint_Y(0) = point(0) + 5.5
PL_xy(0) = point(0) + 7
PL_xy(2) = point(0) + 7
Set PL_biao = ThisDrawing.ModelSpace.AddLightWeightPolyline(PL_xy)
PL_xy(0) = point(0)
Public Sub xy()
Dim ENT As AcadEntity
Dim pickpoint As Variant
Dim PL_ent As AcadLWPolyline
ThisDrawing.Utility.GetEntity ENT, pickpoint, "请选择要生成坐标表的线:"
TEXT_Y.Alignment = acAlignmentMiddle
TEXT_Y.TextAlignmentPoint = inserpoint_Y
TEXT_Y.Alignment = acAlignmentLeft
pointXY = PL_ent.Coordinates
Dim i As Integer, n As Integer
n = (UBound(pointXY) - 1) / 2
Dim PL_biao As AcadLWPolyline
Set PL_biao = ThisDrawing.ModelSpace.AddLightWeightPolyline(PL_xy)
PL_xy(0) = point(0) + 4
PL_xy(2) = point(0) + 4
Set PL_biao = ThisDrawing.ModelSpace.AddLightWeightPolyቤተ መጻሕፍቲ ባይዱine(PL_xy)
Next i
Dim Inserpoint(0 To 2) As Double, inserpoint_X(0 To 2) As Double, inserpoint_Y(0 To 2) As Double
Dim TEXT_id As AcadText, TEXT_X As AcadText, TEXT_Y As AcadText
inserpoint_X(2) = 0
inserpoint_Y(0) = point(0) + 5.5
inserpoint_Y(1) = point(1) - 0.75
inserpoint_Y(2) = 0
TEXT_X.Alignment = acAlignmentMiddle
TEXT_X.TextAlignmentPoint = inserpoint_X
TEXT_X.Alignment = acAlignmentLeft
TEXT_X.Alignment = acAlignmentMiddle
TEXT_X.TextAlignmentPoint = inserpoint_X
TEXT_X.Alignment = acAlignmentLeft
TEXT_Y.Alignment = acAlignmentMiddle
TEXT_Y.TextAlignmentPoint = inserpoint_Y
TEXT_Y.Alignment = acAlignmentLeft
Inserpoint(0) = point(0) + 0.5
TEXT_id.Alignment = acAlignmentMiddle
TEXT_id.TextAlignmentPoint = Inserpoint
TEXT_id.Alignment = acAlignmentLeft
X = Format(Round(pointXY(2 * i + 1), 3), "###.000")
Set TEXT_id = ThisDrawing.ModelSpace.AddText(QZ & (i + 1), Inserpoint, 0.36)
Dim X As String, Y As String
Inserpoint(0) = point(0) + 0.5
Inserpoint(1) = point(1) - 0.25
Inserpoint(2) = 0
TEXT_id.Alignment = acAlignmentMiddle
TEXT_id.TextAlignmentPoint = Inserpoint
TEXT_id.Alignment = acAlignmentLeft
Inserpoint(1) = Inserpoint(1) - 0.5
inserpoint_X(1) = inserpoint_X(1) - 0.5
inserpoint_Y(1) = inserpoint_Y(1) - 0.5
inserpoint_Y(1) = point(1) - 0.25
inserpoint_Y(2) = 0
Set TEXT_id = ThisDrawing.ModelSpace.AddText("序号", Inserpoint, 0.36)
Dim PL_xy(0 To 3) As Double
PL_xy(0) = point(0)
PL_xy(1) = point(1)
PL_xy(2) = point(0)
PL_xy(3) = point(1) - 0.5 * (n + 2)
For i = 0 To n + 1
PL_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 i
Else
MsgBox "所选的对象不是多段线,请重新选择!"
Exit Sub
End If
End Sub
Dim QZ As String
QZ = InputBox(" 请输入界址点前缀:")
For i = 0 To n
Y = Format(Round(pointXY(2 * i), 3), "###.000")
Set TEXT_X = ThisDrawing.ModelSpace.AddText("X 坐标", inserpoint_X, 0.36)
Set TEXT_Y = ThisDrawing.ModelSpace.AddText("Y 坐标", inserpoint_Y, 0.36)