科目二考试直线行驶的详细步骤 怎样在cad中画出所有点到一条线的垂线,一条一条话太麻烦了?

[更新]
·
·
分类:贸易
1164 阅读

科目二考试直线行驶的详细步骤

怎样在cad中画出所有点到一条线的垂线,一条一条话太麻烦了?

怎样在cad中画出所有点到一条线的垂线,一条一条话太麻烦了?

以下方法直接利用CAD自带的AutoLisp,不使用第三方软件。将以下代码另存为后缀名为lsp的文件,如。然后将该文件导入到AutoCAD中。如何导入lsp文件,参照在cad中如何创建lisp程序?以及大神们所说的lisp解决重复性劳动问题是怎么回事? - 余同的回答。在AutoCAD的命令行中运行quickVertical命令(不区分大小写),会提示你先选择多段线,再选择直线,最后按回车或空格就行了。垂足坐标和垂线长度是输出在命令行中的,由于行数较多,可以按F2打开命令行文本窗口。(defun C:quickVertical() ;加载Visual Lisp函数。 (vl-load-com) ;关闭捕捉。 (setq os (getvar osmode)) (setvar osmode 0) ;提示选择对象. (setq mPolyline (car (entsel 选择多段线:))) (setq mLine (car (entsel 选择直线:))) ;将对象转换为Visual Lisp对象。 (setq plineobj (vlax-ename-vla-object mPolyline)) (setq lineObj (vlax-ename-vla-object mLine)) ;获取多段线(PolyLIne)的各个顶点的坐标,并转换为列表(List)。 ;该列表的元素是各个点的X、Y坐标,形如(x1 y1 x2 y2 x3 y3 x4 y4 )。 (setq plineCoordinates (vlax-get-property plineObj Coordinates)) (setq plineList (vlax-safearray-list (variant-value plineCoordinates))) (setq n 0) ;初始化用于输出的字符串。 (setq outputDistance
垂线距离分别为:) ;进如Repeat循环,每次步进2,读出各个点的坐标、画出直线、计算出距离。 (repeat (/ (length plineList ) 2) ;读取X坐标。 (setq xval (nth n plineList)) (setq n (1 n)) ;读取X坐标。 (setq yval (nth n plineList)) (setq n (1 n)) ;将坐标合并成点列表,该点列表就是多段线顶点的二维坐标。 (setq mPoint1 (list xval yval)) ;mPoint2是直线上离mPoint1最近的一点,由几何关系可知mPoint2是垂足。 (setq mPoint2 (vlax-curve-getClosestPointTo lineObj mPoint1)) ;画出垂线。 (command ._line mPoint1 mPoint2 ) ;计算两点间距离,并合并到输出字符串中。 (setq outputDistance (strcat outputDistance

垂足坐标( (rtos xval) , (rtos yval)
) 垂线长度
(rtos (distance mPoint1 mPoint2)))) ) ;end Repeat. ;按从左到右的顺序,输出垂线的距离。 (princ outputDistance) ;重新恢复捕捉 (setvar osmode os) (prin1) ) (prompt 由一条多段线向直线做多条垂,并导出垂足坐标和垂线长度。
) (prin1)