本章主要介绍一些常用的几何运算功能函数的使用。
一、角度计算(angle)
函数名 | 函数功能 |
---|
angle | 以弧度为单位返回两点之间连线与当前用户坐标系下 X 轴之间的夹角。 |
参数 | 说明 |
---|
point | 端点(起点) |
point | 端点(终点) |
返回值 | 说明 |
---|
angle | 实型数据,当前坐标系下参数两点间连线与X轴之间的夹角(弧度值)。 |
(angle (getpoint) (getpoint))
二、距离计算(distance)
函数名 | 函数功能 |
---|
distance | 计算当前坐标系下两点间的直线距离。 |
参数 | 说明 |
---|
point | 端点(起点) |
point | 端点(终点) |
返回值 | 说明 |
---|
distance | 实型数据,当前坐标系下参数两点间距离。 |
(distance (getpoint) (getpoint))
三、点坐标偏移计算(polar)
函数名 | 函数功能 |
---|
polar | 在当前用户坐标系下,求某点的指定角度和指定距离处的点,并返回该点。 |
参数 | 说明 |
---|
point | 基点(起点) |
angle | 偏移角度(弧度制) |
distance | 与基点point之间的距离 |
返回值 | 说明 |
---|
point | 根据参数point指定点的类型,返回二维或三维点。 |
(polar (getpoint) (angle (getpoint) (getpoint)) (distance (getpoint) (getpoint))) ;; 这行代码可能过于敷衍,但是你没有看错,这是一条没有任何问题的AutoLisp代码
;; OK,为了看起来方便,还是将他分解一下吧。
(setq #ptBase (getpoint "\n请指定偏移基点:"))
(prompt "\n请指定偏移角度:")
(setq #dAngle (angle (getpoint) (getpoint)))
(prompt "\n请指定偏移距离:")
(setq #dDistance (distance (getpoint) (getpoint)))
(setq #ptRes (polar #ptBase #dAngle #dDistance))
;; 这样一来就清晰的多了
四、计算两直线交点(inters)
参数 | 说明 |
---|
point | 直线1起点。 |
point | 直线1终点。 |
point | 直线2起点。 |
point | 直线2终点。 |
onseg | 如果指定为 nil,则由四个 pt 参数定义的两条线被认为是无限长的。如果省略 onseg 参数或其值不为 nil,则交点必须同时位于两条线上,否则 inters 返回 nil。 |
返回值 | 说明 |
---|
point | 如果 onseg 参数存在且为 nil,则 inters 返回交点坐标,即使这个交点不在其中的一条线(或者两条线)的端点范围之内。如果忽略 onseg 参数或其值不为 nil,则交点必须同时位于两条线上,否则 inters 返回 nil。如果两条直线不相交,inters 函数返回 nil。 |
(inters (getpoint) (getpoint) (getpoint) (getpoint) nil) ;; 用法简单,不做过多解释,示例依旧敷衍,因为我觉得都能看得懂
五、获取捕捉点(osnap)
函数名 | 函数功能 |
---|
osnap | 将某种对象捕捉模式作用于指定点而获得一个点,并返回该点。 |
参数 | 说明 |
---|
point | 点 |
osmode | 字符串,其中包含了一个或多个有效的对象捕捉模式标志符(如 mid、cen 等),各标志符之间用逗号隔开。 |
返回值 | 说明 |
---|
point | 点。如果拾取没有返回对象(如在拾取框内没有几何对象,或几何对象不能用于选定的对象捕捉模式),则返回 nil。osnap 函数返回的点取决于当前三维视图和系统变量 APERTURE 的设置。 |
(setq #ptRes (osnap (getpoint) "_end,_int")) ;; 捕捉到端点和交点,虽然AutoLisp提供了这种方法,但是个人建议还是在代码中将捕捉模式关闭,之后通过几何计算得到精确定坐标更靠谱。当然,有些特殊情况需要处理的时候,这个东西也是真的好用的。