文档库 最新最全的文档下载
当前位置:文档库 › VBA转换多段线

VBA转换多段线

VBA转换多段线
VBA转换多段线

CAD VBA源码实例(2)多段直线构筑多段线

'多条直线来代替多段线:

Sub myl()

Dim p1 As Variant '申明端点坐标

Dim p2 As Variant

p1 = ThisDrawing.Utility.GetPoint(, "输入点:") '获取点坐标

z = 0 '用户输入Z坐标值

p1(2) = z '将Z坐标值赋予点坐标中

On Error GoTo Err_Control '出错陷井

Do '开始循环

p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & "输入下一点:") '获取下一个点的坐标

' z = ThisDrawing.Utility.GetReal("Z坐标:") '用户输入Z坐标值

p2(2) = 0 '将Z坐标值赋予点坐标中

Call ThisDrawing.ModelSpace.AddLine(p1, p2) '画直线

p1 = p2 '将第二点的端点保存为下一条直线的第一个端点坐标

Loop

Err_Control:

End Sub

'***右键可以退出

'总结:1.鼠标获得第一点

'p1 = ThisDrawing.Utility.GetPoint(, "输入点:") '获取点坐标

' 2.鼠标获得第二点

'p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & "输入下一点:") '获取下一个点的坐标

'' 3.说明

''鼠标选取点坐标,并把坐标值赋给p1、p2两个变量

''ThisDrawing.Utility.GetPoint()在ACAD中这是最常用的方法之一,它需要两个参数,

''在逗号前面的参数应该是一个点坐标,它的作用是在屏幕上画一条线,前一个端点位于点坐标位置,

''后一个端点跟随鼠标移动,逗号之前可以什么都不填,这时没有线条会跟随鼠标移动,但逗号必须保留。

''逗号后面使用一串字符,程序在命令行显示这串字符,这不难理解。

''VbCr通常代表一个回车符,而在这个语句中,它的作用是在命令行不显示"命令:"

''&的作用是连接字符。

'

'z = ThisDrawing.Utility.GetReal("Z坐标:") '用户输入Z坐标值

'由用户输入一个实数

'

'人为控制跳出循环,可以在代码中用Exit Do语句跳出循环。

'在For 变量和Next 变量之间如果要跳出循环,

'那么只要在循环体内加一个Exit for 就可以跳出循环

'

'Call ThisDrawing.ModelSpace.AddLine(p1, p2) '画直线

'画直线方法也是很常用的,它的两个参数是点坐标变量

----------------------------------------------多段线

'AddLightweightPolyline后面需一个参数,存放顶点坐标的数组

'

'画三维多段线语句这样写:

'Set lobj = ThisDrawing.ModelSpace.Add3DPoly(fitpoint)

'Add3dpoly后面需一个参数,就是顶点坐标数组

'

'画二维样条线语句这样写:

'Set lobj = ThisDrawing.ModelSpace.AddSpline(FitPoints, startT, endT) 'Addspline后需要三个参数,第一个是拟合点数组,后面两个分别是起点切向和终点切向。

'

'下面看例题?这个程序是第三课例程的改进版?原题是这样的:

'绘制三维多段线时X、Y值在屏幕上用鼠标选取,Z值用键盘输入。

'细心的读者是否还记得这个小程序已经在第三课的回贴中发布了?先分析一下编程细路:

'用动态数组存放多段线的所有顶点坐标,获得新坐标后就把前一次画的多段线删除,画出多段线,并将线段第二点的端点保存为下一条线段的第一个端点坐标,以下是源码:

Sub myl()

Dim p1 As Variant '申明端点坐标

Dim p2 As Variant

Dim l() As Double '声明一个动态数组

Dim templ As Object

ReDim l(0 To 2) '定义动态数组

l(0) = 4867

l(1) = 3481

l(2) = 0

On Error GoTo Err_Control '出错陷井

Do '开始循环

p2 = ThisDrawing.Utility.GetPoint(p1, vbCr & "输入下一点:") '获取下一个点的坐标

z = 0

p2(2) = z '将Z坐标值赋予点坐标中

lub = UBound(l) '获取当前l数组中元的元素个数

ReDim Preserve l(lub + 3)

For i = 1 To 3

l(lub + i) = p2(i - 1)

Next i

If lub > 3 Then

templ.Delete '删除前一次画的多段线

End If

Set templ = ThisDrawing.ModelSpace.Add3DPoly(l) '画多段线p1 = p2 '将第二点的端点保存为下一条直线的第一个端点坐标Loop

Err_Control:

End Sub

多线多段线云线样条曲线AutoC基础教程

多线多段线云线样条曲线A u t o C基础教程 集团标准化工作小组 #Q8QGGQT-GX8G08Q8-GNQGJ8-MHHGN#

第六课时绘图命令----多线、多段线、修订云线、样条曲线 本课重点与难点: ??多线的绘制及编辑。 ??多段线的绘制。 ??修订云线的绘制及设置。 ??样条曲线的绘制。 一、多线命令(快捷键为ML):多条平行线称为多线,创建的线是整体,可以保存多样样式,或者使用默认的两个元素样式。还可以设置每个元素的颜色、线型。 绘制多线的步骤 1. 从“绘图”菜单中选择“多线”。 1. 在命令提示下,输入 st,选择一种样式。 1. 要列出可用样式,请输入样式名称或输入。 直接输入己有多线样式名,也可以输入,来显示己有的多线样式, 1. 要对正多线,请输入 j 并选择顶端对正、零点对正或底端对正。 上对正:该选项表示当从左向右绘制多线时,多线上位于最顶端的线将随着光标进行移动零对正:零对正,该选项表示绘制多线时,多线的中心线将随着光标移动 下对正:下对正,该选项表示当从左向右绘制多线时,多线最底端的线将随着光标进行移动 5、要修改多线的比例,请输入 s 并输入新的比例。 确定多线宽度相对于多线定义宽度的比例因子,该比例不影响线型的比例, 开始绘制多线。 1. 指定起点。 1. 指定第二点。 1. 指定第三点。 1. 指定第四点或输入 c 以闭合多线,或按 ENTER 键。 编辑多线样式的步骤 1. 从“格式”菜单中选择“多线样式”。 1. 在“多线样式”对话框中,从列表里输入多线名称,单击添加按纽。(添加一个多线类型)

1. 选择“元素特性”。 1. 在“元素特性”对话框的“元素”下,可以单击添加按纽,在两条线之间添加直线。 5.在列表中选中不同的线,并改变其颜色,线型. 1. 在“多线样式”对话框中选择“保存”,将对样式的修改保存到 MLN 文件中。 1. 选择“确定”,退出对话框。 编辑多线:在修改菜单中→对象中→多线 1.添加和删除多线顶点 可以在多线中添加或删除任何顶点。 2.编辑多线交点 如果图形中有两条多线,则可以控制它们相交的方式。多线可以相交成十字形或T字形,并且十字形或T字形可以被闭合、打开或合并。 3.单个剪切 剪切多线上的选定元素。选择样例图像后,AutoCAD 显示以下提示: AutoCAD 将多线上的选定点用作第一个剪切点并显示以下提示:

多段线编辑命令快捷键

工作学习中,经常会有对线条的处理,这个也已经成为AutoCAD操作的一种常态。其中,有一些操作非常必要,但是不熟悉的朋友又会感觉非常生涩。譬如说,如何将多段线与样条曲线进行互相转换呢? 这,牵涉到了两个部分: 一,是如何将多段线转换为样条曲线 二,是如何将样条曲线转换为多段线 将多段线转换为样条曲线的方法如下: 要将多段线转换为样条曲线,首先就先要生成多段线。 生产多段线的方法不少,最普遍的就是pline命令和pedit命令。 pline命令是用于创建多段线的,此处不作介绍。 这里,重点介绍的是pedit命令。 pedit——多段线编辑,别名pe。可将直线、圆弧、多段线进行合并。 生成了多段线后,就要将对象转换成样条曲线了。 首先,运行pe,选择[M]选项,再选择要进行转换的那些多段线。

之后,选择“样条曲线[S]”选项。 此时,你会发现,那些对象发生了很大的变化。 至此,肯定有朋友已经开始庆贺了:“我终于成功了!” 其实,如果你看看这些对象的特性,你就会发现,它的特性仍然是“多段线”。 郁闷了不是? 其实,你还差最后一步没有完成了而已。 最后一步就是—— 运行spline(样条曲线)命令,选择“对象[O]”选项,再选择那些已经处理过的多段线就OK了。 但是,通过这种方法转换出的样条曲线和一般使用spline命令创建出的样条曲线,在形状上还是有一些区别的。 区别如下:

[快车下载]: 以上的两条样条曲线,洋红色的是通过pe命令转换成的,白色的是通过spline命令绘制成的,使用的是同样的控制点,结果却是不同的。 所以,请大家注意这两者的区别。 说完了将多段线转换成样条曲线的方法,也该说明一下逆过程了。 首先,要说明的是,在AutoCAD中,没有某个命令是可以直接将样条曲线转换成多段线的。 要得到这个结果的话,其原理,其实是用多段线来拟合样条曲线。

CAD中如何一次性统计多条直线(曲线)的长度

CAD中如何一次性统计多条直线(曲线)的长度 1、打开记事本记录以下代码 (defun c:tj_l (/ p n e e1 e2 l s x1 x2 y1 y2 xx yy ll lll) (setq ln 0 lll 0) (setq p (ssget)) ; Select objects (if p (progn ; If any objects selected (setq l 0 n (sslength p)) (while (< l n) ; For each selected object... (if (= "LINE" (cdr (assoc 0 (setq e (entget (ssname p l)))))) (progn (setq e1 (assoc 10 e) e2 (assoc 11 e)) (setq x1 (cadr e1) y1 (caddr e1)) (se tq x2 (cadr e2) y2 (caddr e2)) (setq xx (abs (- x2 x1)) yy (abs (- y2 y1))) (setq ll (sqrt (+ (* xx xx) (* yy yy))) ) (setq lll (+ lll ll)) (setq ln (+ ln 1)) ) ) (setq l (1+ l)) ) ) ) (print "total line number= ") (princ ln) (print "total line length= ") (princ lll) (terpri) ) 2、另存为cdtj.lsp cdtj自己命名,之后将能作为快捷方式使用,示例cdtj为长度统计拼音首字母 3、打开CAD或天正建筑 4、点击“管理”→“加载应用程序”→选择“cdtj.lsp”→ “加载”→“关闭”

AutoCAD中将样条曲线转多段线和经典高效使用技巧.

样条曲线转换成多段线 方法:输入“FLATTEN”转换后,即可以用PE或BO命令进行编辑多段线了; CAD使用技巧 在AutoCAD中如何准确选择重叠的线条?(中望CAD不适用) ☆对于在不同图层的线条,关闭影响线条编辑的图层即可。 ☆同一图层的线条,鼠标停留在重叠的线条上(线条加亮显示),按住SHIFT+空格切换要编辑的线条选择即可。 CAD快速高效绘图秘诀 1.经常存盘 注意:不要把时间间隔设得太短,那样会浪费系统资源,一般设10分钟就可以了。 2.多看提示 多看提示的好处:可以学习从未用过的命令,学习同一命令的多种用法。 3.巧用命令 用键盘输入命令是最快的。一定要记住常用的。如直线“L”、多段线“PL”、复制“CO”、删除“E”、移动“M”、镜像“MI”等。 4.良好习惯 养成良好的作图习惯,作品的可移植性和可读性会大大提高。 ①能用多段线(PL)作图就不要用直线(L),选择或二次加工时会很方便。 ②用好图层(LA)功能,把不同类型的对象分配到不同的图层中,以便以后分

类加工。 ③灵活运用分组(G)及块定义(B)功能,力求把同一组一次选中,以防编辑时漏掉某一部分。 ④常用的作图界限、尺寸、标注样式、文字样式等要做好模板,以便快速调用。 ⑤不要轻易炸开(X)系统生成的填充样式、标注等。 ⑥尽量不要使用系统以外的字体,以防传输至其他电脑里时产生乱码。 ⑦模型空间只用来作图,图纸空间只用来放置图框。 5.精确作图 精确作图(1:1)在CAD中尤其重要。精确作图对标注、打印输出、图像调入调出和与他人分享非常重要。注意以下几点: ①作图时严格按1:1比例,在最后打印输出时再调整比例。 ②灵活运用点捕捉功能。 ③该闭合的线一定要用命令闭合(CLOSE)。 ④对于已知的长度,用键盘直接输入。 ⑤灵活运用正交模式、栅格与捕捉。 6.用“心”作图 只有用心作图,才能作出正确、规范、漂亮的图纸,效率才能真正提高。 记住“二十四字秘诀”,经常练习,CAD水平一定会在短时间内提高一个台阶。

CAD064.1 绘制多线、多段线、修订云线、样条曲线

本课重点与难点: ●多线的绘制及编辑。 ●多段线的绘制。 ●修订云线的绘制及设置。 ●样条曲线的绘制。 一、多线命令(快捷键为ML):多条平行线称为多线,创建的线是整体, 可以保存多样样式,或者使用默认的两个元素样式。还可以设置每个元素的颜色、线型。 绘制多线的步骤 1.从“绘图”菜单中选择“多线”。 2.在命令提示下,输入 st,选择一种样式。 3.要列出可用样式,请输入样式名称或输入 ?。 直接输入己有多线样式名,也可以输入?,来显示己有的多线样式, 4.要对正多线,请输入 j 并选择顶端对正、零点对正或底端对正。 上对正:该选项表示当从左向右绘制多线时,多线上位于最顶端的线将随着光标进行移动 零对正:零对正,该选项表示绘制多线时,多线的中心线将随着光标移动 下对正:下对正,该选项表示当从左向右绘制多线时,多线最底端的线将随着光标进行移动 5、要修改多线的比例,请输入 s 并输入新的比例。 确定多线宽度相对于多线定义宽度的比例因子,该比例不影响线型的比例, 开始绘制多线。 6.指定起点。 7.指定第二点。 8.指定第三点。 9.指定第四点或输入 c 以闭合多线,或按 ENTER 键。 编辑多线样式的步骤

1.从“格式”菜单中选择“多线样式”。 2.在“多线样式”对话框中,从列表里输入多线名称,单击添加按纽。(添 加一个多线类型) 3.选择“元素特性”。 4.在“元素特性”对话框的“元素”下,可以单击添加按纽,在两条线之间 添加直线。 5.在列表中选中不同的线,并改变其颜色,线型. 8.在“多线样式”对话框中选择“保存”,将对样式的修改保存到 MLN 文 件中。 9.选择“确定”,退出对话框。

如何将多段线与样条曲线进行互相转换

如何将多段线与样条曲线进行互相转换 2009-11-06 17:25 工作学习中,经常会有对线条的处理,这个也已经成为AutoCAD操作的一种常态。其中,有一些操作非常必要,但是不熟悉的朋友又会感觉非常生涩。譬如说,如何将多段线与样条曲线进行互相转换呢? 这,牵涉到了两个部分: 一、是如何将多段线转换为样条曲线 二、是如何将样条曲线转换为多段线 将多段线转换为样条曲线的方法如下: 要将多段线转换为样条曲线,首先就先要生成多段线。 生产多段线的方法不少,最普遍的就是pline命令和pedit命令。 pline命令是用于创建多段线的,此处不作介绍。 这里,重点介绍的是pedit命令。 pedit——多段线编辑,别名pe。可将直线、圆弧、多段线进行合并。生成了多段线后,就要将对象转换成样条曲线了。 首先,运行pe,选择[M]选项,再选择要进行转换的那些多段线。 之后,选择“样条曲线[S]”选项。 此时,你会发现,那些对象发生了很大的变化。 至此,肯定有朋友已经开始庆贺了:“我终于成功了!” 其实,如果你看看这些对象的特性,你就会发现,它的特性仍然是“多段线”。 郁闷了不是? 其实,你还差最后一步没有完成了而已。 最后一步就是—— 运行spline(样条曲线)命令,选择“对象[O]”选项,再选择那些已经处理过的多段线就OK了。 但是,通过这种方法转换出的样条曲线和一般使用spline命令创建出的样条曲线,在形状上还是有一些区别的。 但是,通过这种方法转换出的样条曲线和一般使用spline命令创建出的样条曲线,在形状上还是有一些区别的。

区别如下: 以上的两条样条曲线,洋红色的是通过pe命令转换成的,白色的是通过spline命令绘制成的,使用的是同样的控制点,结果却是不同的。所以,请大家注意这两者的区别。 说完了将多段线转换成样条曲线的方法,也该说明一下逆过程了。 首先,要说明的是,在AutoCAD中,没有某个命令是可以直接将样条曲线转换成多段线的。 要得到这个结果的话,其原理,其实是用多段线来拟合样条曲线。 说白了,就是“描图”。 当然了,如果使用手工去一条一条地去描的话,就浪费了AutoCAD本身的功能了。 在此,介绍一个Express的方法。 将样条曲线转换为多段线的方法如下: 首先,先要确保你的AutoCAD已经安装了Express工具包。 之后,选中要进行转换的样条曲线。 然后运行flatten命令。 进入命令后,再回车一下就好了。 之后,选中这个对象,你就会发现上面多了好多蓝色的夹点,而对象的特性也已经变成了“多段线”。 命令介绍:

样条曲线转成多段线方法

样条曲线是可以转成多段线的安装CAD的时候有个Etools,扩展工具,安装了就可以用它里面提供的工具来转,没有安的话,把安装光盘找到,在里面找到Express文件夹,复制到CAD的安装文件夹下,重启动后就会显示扩展工具项了,然后用flatten命令转就可以转成多段线 首先,先要确保你的AutoCAD已经安装了Express工具包。 之后,选中要进行转换的样条曲线(可以同时选择多条)。 然后运行flatten命令。 进入命令后,再回车一下就好了。 之后,选中这个对象,你就会发现上面多了好多蓝色的夹点,而对象的特性也已经变成了“多段线”。 lisp程序解决 defun vertexs (ename / plist pp n) (setq obj (vlax-ename->vla-object ename)) (setq plist (vlax-safearray->list (vlax-variant-value (vla-get-coordinates obj)))) (setq n 0) (repeat (/ (length plist) 2) (setq pp (append pp (list (list (nth n plist)(nth (1+ n) plist))))) (setq n (+ n 2)) ) pp ) 功能 返回多段线的各顶点 语法 (vertexs ename) 参数 ename:图元名

返回值 各顶点形成的列表 (entmake (llist (0 . "LWPOLYLINE") ((vertexs ename))) 生成各顶点的多段线

相关文档
相关文档 最新文档