⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 cad世界__autocad vba初级教程 (第十课画多段线和样条线).htm

📁 cad二次开发中介绍vba
💻 HTM
📖 第 1 页 / 共 2 页
字号:
          <TD align=middle bgColor=#eeeeee height=40><FONT 
            style="FONT-SIZE: 16px"><B>Autocad VBA初级教程 
          (第十课:画多段线和样条线)</B></FONT></TD></TR>
        <TR>
          <TD align=right>作者:普天同庆 | 阅读次数:983 <FONT color=#999999>转自:<FONT 
            color=#cc0000>CAD世界网</FONT> 
      时间:2006年5月8日9:37</FONT></TD></TR></TBODY></TABLE><BR>
      <TABLE cellPadding=5 width=600 border=0>
        <TBODY>
        <TR>
          <TD class=c align=left>
            <P><FONT id=zoom style="FONT-SIZE: 14px">画二维多段线语句这样写:<BR>set lobj= 
            ThisDrawing.ModelSpace.AddLightweightPolyline(fitpoint)<BR>AddLightweightPolyline后面需一个参数,存放顶点坐标的数组 

            <P>画三维多段线语句这样写:<BR>Set lobj = 
            ThisDrawing.ModelSpace.Add3DPoly(fitpoint)<BR>Add3dpoly后面需一个参数,就是顶点坐标数组</P>
            <P>画二维样条线语句这样写:<BR>Set lobj = 
            ThisDrawing.ModelSpace.AddSpline(fitPoints,startT, 
            endT)<BR>Addspline后需要三个参数,第一个是拟合点数组,后面两个分别是起点切向和终点切向。</P>
            <P>下面看例题。这个程序是第三课例程的改进版。原题是这样的:<BR>绘制三维多段线时X、Y值在屏幕上用鼠标选取,Z值用键盘输入。<BR>细心的读者是否还记得这个小程序已经在第三课的回贴中发布了。先分析一下编程细路:<BR>用动态数组存放多段线的所有顶点坐标,获得新坐标后就把前一次画的多段线删除,画出多段线,并将线段第二点的端点保存为下一条线段的第一个端点坐标,以下是源码:</P>
            <P>Sub myl()</P>
            <P>Dim p1 As Variant '申明端点坐标<BR>Dim p2 As Variant<BR>Dim l() As 
            Double '声明一个动态数组<BR>Dim templ As Object</P>
            <P>p1 = ThisDrawing.Utility.GetPoint(, "输入点:") '获取点坐标<BR>z = 
            ThisDrawing.Utility.GetReal("Z坐标:") '用户输入Z坐标值<BR>p1(2) = z 
            '将Z坐标值赋予点坐标中</P>
            <P>ReDim l(0 To 2) '定义动态数组<BR>l(0) = p1(0)<BR>l(1) = p1(1)<BR>l(2) = 
            z</P>
            <P>On Error GoTo Err_Control '出错陷井<BR>Do '开始循环<BR>&nbsp; p2 = 
            ThisDrawing.Utility.GetPoint(p1, vbCr &amp; "输入下一点:") 
            '获取下一个点的坐标<BR>&nbsp; z = ThisDrawing.Utility.GetReal("Z坐标:") 
            '用户输入Z坐标值<BR>&nbsp; p2(2) = z '将Z坐标值赋予点坐标中<BR>&nbsp; <BR>&nbsp; lub 
            = UBound(l) '获取当前l数组中元的元素个数<BR>&nbsp; ReDim Preserve l(lub + 
            3)<BR>&nbsp; For i = 1 To 3<BR>&nbsp;&nbsp;&nbsp; l(lub + i) = p2(i 
            - 1)<BR>&nbsp; Next i<BR>&nbsp; If lub &gt; 3 
            Then<BR>&nbsp;&nbsp;&nbsp; templ.Delete '删除前一次画的多段线<BR>&nbsp; End 
            If<BR>&nbsp; Set templ = ThisDrawing.ModelSpace.Add3DPoly(l) 
            '画多段线<BR>&nbsp; p1 = p2 
            '将第二点的端点保存为下一条直线的第一个端点坐标<BR>Loop<BR>Err_Control:</P>
            <P>End Sub</P>
            <P><BR>我们学一学动态数组,这是非常有用的。所谓动态数组,简单讲就是数组元素可以改变的特殊数组。<BR>这样定义数组:Dim l( 
            ) As Double <BR>赋值语句:<BR>ReDim l(0 To 2) <BR>l(0) = p1(0)<BR>l(1) = 
            p1(1)<BR>l(2) = z<BR>重新定义数组元素语句:<BR>&nbsp; lub = UBound(l) 
            '先要获取当前l数组中元的元素个数,用ubount函数计算。<BR>&nbsp; ReDim Preserve l(lub + 
            3)<BR>重定义时数组中要加三个元素,用以存放坐标值,所以定义元素为lub+3。给数值赋值的语句是一样的。</P>
            <P>再看画多段线语句:<BR>Set templ = ThisDrawing.ModelSpace.Add3DPoly(l) 
            '画多段线<BR>在最后面括号中的l就是存放点坐标的动态数组,这条语句在画多段线的同时把多段线作为对象赋值给templ 
            变量,这样下面的删除语句就可以直接引用这个变量了。</P>
            <P>删除语句:<BR>templ.Delete<BR>因为已经知道对象是templ,所以只要在对象后面用delete方法就可以了。</P>
            <P>下面的例程更加实用些,它的功能是把样条线转化为多段线。编程思路:用户选择一根样条线,计算样条线的拟合点,然后把所有的拟合点存放到数组中,最后用这个数组画多段线。</P>
            <P>Sub sp2pl()</P>
            <P>Dim getsp As Object ‘获取样条线的变量<BR>Dim newl() As Double ‘多段线数组</P>
            <P>Dim p1 As Variant ‘获得拟合点点坐标</P>
            <P>ThisDrawing.Utility.GetEntity getsp, po, 
            "本程序将样条曲线转为多段线。请选择样条曲线"</P>
            <P>sumctrl = getsp.NumberOfControlPoints ‘计算样条线中一共有多少拟合点</P>
            <P>ReDim newl(0 To sumctrl * 3 - 1) ‘重定义数组<BR>&nbsp; <BR>&nbsp; For 
            i = 0 To sumctrl - 1 ‘开始循环,<BR>&nbsp; p1 = getsp.GetControlPoint(i) 
            ‘把拟合点坐标存到p1变量中<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; For j = 0 To 
            2<BR>&nbsp;&nbsp;&nbsp; newl(i * 3 + j) = p1(j)<BR>&nbsp; Next j</P>
            <P>Next i<BR>Set templ = ThisDrawing.ModelSpace.Add3DPoly(newl) 
            ‘画样条线</P>
            <P>End Sub</P>
            <P>下面的语句是让用户选择样条线:<BR>ThisDrawing.Utility.GetEntity getsp, po, 
            "本程序将样条曲线转为多段线。请选择样条曲线"<BR>ThisDrawing.Utility.GetEntity 
            后面需要三个参数:<BR>第一个getsp用于存放获得用户选择的对象变量,第二个po是用户鼠标点下时的位置,第三个是一段字符串,显示在提示栏。</P><STRONG>
            <P><STRONG>其他课程回顾:</STRONG></P>
            <P><A 
            href="http://www.icad.com.cn/html/2005-4-25/2005425163833.asp"><U><FONT 
            color=#0000ff>Autocad VBA初级教程 (第一课:入门)</FONT></U></A></P>
            <P><A 
            href="http://www.icad.com.cn/html/2005-4-25/2005425163954.asp"><U><FONT 
            color=#0000ff>Autocad VBA初级教程 (第二课 编程基础)</FONT></U></A></P>
            <P><A 
            href="http://www.icad.com.cn/html/2005-4-26/2005426112553.asp"><U><FONT 
            color=#0000ff>Autocad VBA初级教程 (第三课 编程基础二)</FONT></U></A></P>
            <P><A 
            href="http://www.icad.com.cn/html/2005-4-26/2005426112638.asp"><U><FONT 
            color=#0000ff>Autocad VBA初级教程 (第四课 程序的调试和保存)</FONT></U></A></P>
            <P><A 
            href="http://www.icad.com.cn/html/2005-5-8/20055893119.asp"><U><FONT 
            color=#0000ff>Autocad VBA初级教程 (第五课 画函数曲线)</FONT></U></A></P>
            <P><A 
            href="http://www.icad.com.cn/html/2005-5-8/20055893328.asp"><U><FONT 
            color=#0000ff>Autocad VBA初级教程 (第六课 数据类型的转换)</FONT></U></A></P>
            <P><A 
            href="http://www.icad.com.cn/html/2005-5-9/200559102708.asp"><U><FONT 
            color=#0000ff>Autocad VBA初级教程 (第七课 写文字)</FONT></U></A><BR><BR><A 
            href="http://www.icad.com.cn/html/2005-5-30/2005530154133.asp"><FONT 
            color=#0000ff><U>Autocad VBA初级教程 (第八课:图层操作)</U></FONT></A><BR><BR><A 
            href="http://www.icad.com.cn/html/2005-6-2/200562132544.asp"><U><FONT 
            color=#0000ff>Autocad VBA初级教程 (第九课:创建选择集)</FONT></U></A></P>
            <P>&nbsp;</P></STRONG></FONT><BR>(编辑:zhaozh)
            <P></P>
            <P><B><FONT 
            color=#ff0000>CAD世界网编者注:</FONT></B>若您有关于制造业信息化的文章,欢迎您积极投稿。无论是关于技术 
            、管理方面,还是资讯、信息方面,我们将会为您提供一个交流、互动的平台,让您充分展示自己的观点、见解、理论…… </P>
            <P>技术类文章请投往<FONT color=#0000cc><A 
            href="mailto:zhaozh@icad.com.cn"><FONT 
            color=#0000ff>zhaozh@icad.com.cn</FONT></A></FONT>邮箱,其它相关文章请投往<A 
            href="mailto:jiangyx@icad.com.cn"><FONT 
            color=#0000ff>jiangyx@icad.com.cn</FONT></A>邮箱。</P></TD></TR>
        <TR>
          <TD align=right>
            <SCRIPT language=JavaScript>
<!-- Begin
if (window.print) {
document.write('【<a href="#" onClick="javascript:window.print()"><font color=cc0000>打印本文</font></a>】 ');
}
// End -->
</SCRIPT>
            【<A 
            href="http://old.icad.com.cn/review/index.asp?article=20065892707" 
            target=_blank><FONT color=#cc0000>发表评论</FONT></A>】【<A 
            href="javascript:window.close()"><FONT 
          color=#cc0000>关闭窗口</FONT></A>】</TD></TR></TBODY></TABLE>
      <TABLE align=left>
        <TBODY>
        <TR>
          <TD align=left>上一篇:<A 
            href="http://old.icad.com.cn/html/2006-4-30/2006430101243.asp" 
            target=_blank>Sub-Zero:创造“食物储存的里程碑之作”</A><BR>下一篇:<A 
            href="http://old.icad.com.cn/html/2006-5-8/20065893439.asp" 
            target=_blank>Autocad VBA初级教程 
    (第十一课:动画基础)</A><BR></TD></TR></TBODY></TABLE></TD><!--中间通栏结束--><!--<td width="2" background="../../image/lbg1.gif"></td>--><!--右侧通栏开始--></TR></TBODY></TABLE></TBODY></TABLE>
<SCRIPT language=JavaScript 
src="CAD世界__Autocad VBA初级教程 (第十课画多段线和样条线).files/endA.js"></SCRIPT>
</DIV></BODY></HTML>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -