flyinglfp 发表于 2007-1-30 21:13:00
从本人的工作出发 希望直接能画出缓和曲线 ,直接查询需要的坐标 工作省好多事 还能检测计算的准确性hzw27 发表于 2007-2-3 21:24:00
ThisDrawing.Utility.GetEntity objText,ptPick,"拾取文字:"可以在CAD中拾取文字,但不知拾取到的文字怎样在Excel的单元格显示??我是搞测量的,还在网站买了一本《 AutoCAD VBA二次开发教程》,平时每天上工地,看了半年多的书也没能解决这个问题,我真诚的希望哪一位同仁能帮我指点一下,感激不尽!!莫名 发表于 2007-2-13 11:51:00
<p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;">12楼请仔细看如下介绍:</p><h2 style="MARGIN: 0cm 0cm 0pt 28.8pt; mso-list: l0 level2 lfo1; mso-list-change: "%1:2:0:.%2:1:0:" w 20040918T0934;"><span class="msoIns"><ins cite="mailto:w" datetime="2004-09-18T09:34"><span style="mso-list: Ignore;"><font size="3"><font face="Arial">1.1</font></font><span style="FONT: 7pt "Times New Roman";"> </span></ins></span></span><font size="3"><font face="Arial">EXCEL ActiveX</font>对象模型</font></h2><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman">AutoCAD</font>与<font face="Times New Roman">EXCEL</font>之间的数据交换,需要加载<font face="Times New Roman">EXCEL ActiveX</font>对象模型。在<font face="Times New Roman">ACAD VBA</font>编辑器中选择“工具”菜单的“引用”,选择加载<font face="Times New Roman">Microsoft Excel Object Library</font>。</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;">与<font face="Times New Roman">ACAD</font>的<font face="Times New Roman">ActiveX</font>对象模型一样,<font face="Times New Roman">EXCEL</font>的<font face="Times New Roman">ActiveX</font>对象模型的顶层对象也是<font face="Times New Roman">Application</font>对象。下面代码声明并新建一个<font face="Times New Roman">EXCEL.Application</font>对象。</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;"> Dim ExcelApp As New Excel.Application </font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;">新建<font face="Times New Roman">EXCEL</font>对象,也可以调用<font face="Times New Roman">VB</font>库函数<font face="Times New Roman">CreateObject()</font>:</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 26.25pt; mso-char-indent-count: 2.5;"><font face="Times New Roman"> Dim ExcelApp As Excel.Application </font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 26.25pt; mso-char-indent-count: 2.5;"><font face="Times New Roman"> Set ExcelApp = CreateObject("Microsoft Excel")</font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;">对<font face="Times New Roman">EXCEL</font>进行读写操作后,要关闭<font face="Times New Roman">EXCEL</font>工作簿、退出<font face="Times New Roman">EXCEL</font>应用程序对象并释放<font face="Times New Roman">EXCEL</font>应用程序对象变量:</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;"> ExcelApp.Workbooks.Close</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;"> ExcelApp.Quit</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;"> Set ExcelApp = Nothing </font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman">EXCEL.Application</font>对象提供的<font face="Times New Roman">Workbooks</font>工作簿集合对象包含有全部已经启动的<font face="Times New Roman">EXCEL</font>工作簿对象,我们可以使用<font face="Times New Roman">Application</font>对象的<font face="Times New Roman">ActiveWorkbook</font>来获取当前活动的工作簿对象,也可以使用<font face="Times New Roman">Workbooks(Index)</font>方法来得到指定的工作簿对象。获取要操作的工作簿后,需要获取工作簿中的指定工作表<font face="Times New Roman">(Worksheet)</font>才能访问到其中指定单元格的内容。</p>莫名 发表于 2007-2-13 11:51:00
<h2 style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; mso-list: l0 level2 lfo1; tab-stops: list 18.0pt; mso-list-change: '%1:2:0:.%2:2:0:' w 20040918T0934;"><span class="msoIns"><ins cite="mailto:w" datetime="2004-09-18T09:34"><span style="mso-list: Ignore;"><font size="3"><font face="Arial">1.2</font></font><span style="FONT: 7pt 'Times New Roman';"> </span></ins></span></span><font size="3">读取<font face="Arial">EXCEL</font>工作表中的数据</font></h2><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;">读取<font face="Times New Roman">EXCEL</font>工作表中数据,首先要打开工作簿。下面的代码调用<font face="Times New Roman">EXCEL</font>应用程序对象的<font face="Times New Roman">Workbooks</font>集合的<font face="Times New Roman">Open</font>方法以只读方式打开文件名为“<font face="Times New Roman">book1.xls</font>”的<font face="Times New Roman">EXCEL</font>文档。</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;"> ExcelApp.Workbooks.Open "d:\book1.xls", , True</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;">下面的代码获取工作簿中的名称为“<font face="Times New Roman">sheet1</font>”的工作表:</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt 21pt; TEXT-INDENT: 10.5pt; mso-char-indent-count: 1.0; mso-para-margin-left: 2.0gd;"><font face="Times New Roman">Set WkSheet = ExcelApp.ActiveWorkbook.Worksheets("sheet1")</font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman">EXCEL</font>的单元格位置由行和列唯一指定。通常<font face="Times New Roman">EXCEL</font>文档第<font face="Times New Roman">1 </font>行是表头说明,我们从第<font face="Times New Roman">2</font>行开始读数据(行号为<font face="Times New Roman">1</font>)。根据上述的数据组织模式,第<font face="Times New Roman">1</font>列是对象类型标志,程序首先读取它的值,确定后面列的数据类型,读取一个对象(表格中一行)数据后,进行相应的绘图操作。下面的的代码将第<font face="Times New Roman">i</font>行第<font face="Times New Roman">2</font>列的内容取出赋给变量<font face="Times New Roman">mCode</font>。</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; mso-char-indent-count: 3.0;"><font face="Times New Roman">mCode = WkSheet..Range("B" & i)</font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;">取出<font face="Times New Roman">EXCEL</font>表格中的数据后,可以在<font face="Times New Roman">ACAD</font>模型空间中绘制出相应的图形实体。下面的代码在模型空间中绘制线或面对象:</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; mso-char-indent-count: 3.0;"><font face="Times New Roman">Set LWPl = ThisDrawing.ModelSpace.AddLightWeightPolyline(Pts)</font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;">若是面对象还要用下面的语句使它闭合:<span style="mso-spacerun: yes;"><font face="Times New Roman"> </font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; mso-char-indent-count: 3.0;"><font face="Times New Roman">LWPl.Closed = True</font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;">程序中,循环判断第<font face="Times New Roman">1</font>列的对象类型标志,直到读出并绘制了所有对象。</p><h2 style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 0cm; mso-list: l0 level2 lfo1; tab-stops: list 18.0pt; mso-list-change: '%1:2:0:.%2:3:0:' w 20040918T0934;"><span class="msoIns"><ins cite="mailto:w" datetime="2004-09-18T09:34"><span style="mso-list: Ignore;"><font size="3"><font face="Arial">1.3</font></font><span style="FONT: 7pt 'Times New Roman';"> </span></ins></span></span><font size="3">写数据到<font face="Arial">EXCEL</font>工作表中</font></h2><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;">要写数据到<font face="Times New Roman">EXCEL</font>工作表,首先须添加<font face="Times New Roman">EXCEL</font>工作簿:</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;"> Dim ExcelWkbk As Excel.Workbook</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman"><span style="mso-spacerun: yes;"> Set ExcelWkbk = ExcelApp.Workbooks.Add</font></span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;"><font face="Times New Roman">EXCEL</font>会自动建立名称为“<font face="Times New Roman">sheet</font><chmetcnv wst="on" unitname="”" sourcevalue="1" hasspace="False" negative="False" numbertype="1" tcsc="0"><font face="Times New Roman">1</font><span lang="EN-US" style="FONT-FAMILY: 宋体; mso-ascii-font-family: 'Times New Roman'; mso-hansi-font-family: 'Times New Roman';"><span lang="EN-US">”</span></chmetcnv>工作表,可以直接写数据到该工作表中。</span></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; mso-char-indent-count: 3.0;"><font face="Times New Roman">Set WkSheet = ExcelWkbk.Worksheets("sheet1")</font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;">接着,程序遍历<font face="Times New Roman">AutoCAD</font>模型空间中的图形对象,并提取对象中的数据。之后,将数据填充到<font face="Times New Roman">EXCEL</font>单元格中。下面的代码将对象的位置信息数据填充到工作表第<font face="Times New Roman">i</font>行第<font face="Times New Roman">7</font>列的单元格中:</p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 31.5pt; mso-char-indent-count: 3.0;"><font face="Times New Roman">WkSheet.Range("G" & i) = PosData</font></p><p class="MsoNormal" style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 21pt;">图形对象的数据填充到工作表中后,要用下面的语句保存成<font face="Times New Roman">EXCEL</font>文档文件:</p><span style="mso-spacerun: yes;"> ExcelApp.ActiveWorkbook.SaveAs "d:\book1.xls"</span>shzhzh123 发表于 2007-2-21 22:48:00
高手,我也进来学习学习caozuodong 发表于 2007-3-26 21:38:00
<p>哪请问如何把全站仪测出来的数据传输到上面去了。 我是个新手。</p>caozuodong 发表于 2007-7-14 06:31:00
11
我不知道你用的全站仪是哪种,但我现在用的是尼康的,只要把传输线连接到电脑上,开机从菜单里在点击"通讯",选择你要下载的项目,在回车就OK了.求助形字体 发表于 2007-9-28 09:24:00
<p>我有办法,南方绘图软件有这个功能,就是把cad中的数据下子可以转换到记事本格式上去,也可以点一下一个一个地转换上去,再用表格打开就可以编揖(加。乘等)qq349753121</p>2005lyf 发表于 2008-6-19 09:19:00
<p>我刚入门,好难啊。学习学习</p>hn2000qwas 发表于 2008-6-25 08:39:00
<p>谁有vlisp语言的教程 cad上的太难了</p><p> 我的邮箱happy__zz@126.com</p>