设为首页收藏本站

晓东CAD家园-论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

返回列表
查看: 73|回复: 1

[几何] (XD::Geom:isArc)判断SPLINE或者点表是否组成弧线(ARC)

[复制链接]

签到天数: 339 天

连续签到: 1 天

[LV.8]以坛为家I

已领礼包: 51个

财富等级: 招财进宝

发表于 2017-8-25 19:34:26 | 显示全部楼层 |阅读模式

函数发布
函数名称: XD::Geom:isArc
调用格式: (XD::Geom:isArc pts fuzz)
参数说明: pts ---- spline实体名 或 点表
fuzz ---- 精度值
返回值: (圆心 半径 起始角 终止角) 或 nil
函数简介: 判断SPLINE或者点表是否组成弧线(ARC)
函数来源: 原创
函数作者: Lispboy
适用版本: XDRX API 
最后更新时间: 2017-08-25
备注: -
演示图片:

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
  1. (defun xd::Geom:isArc (pts fuzz / #center #endang #normal #radius #refvec #startang ang g lst normal ret tf x)
  2.   (if (= (type pts) 'ENAME)
  3.     (progn
  4.       (setq lst (xdrx_getsamplept pts 3)
  5.             normal (xdrx_getpropertyvalue pts "normal")
  6.             g (xdge::constructor "kcircarc3d")
  7.       )
  8.       (xdge::setpropertyvalue g "set" (car lst) (cadr lst) (last lst))
  9.       (if (equal (xdrx_getpropertyvalue pts "area")
  10.                  (xdge::getpropertyvalue g "area") fuzz
  11.           )
  12.         (progn
  13.           (setq tf t)
  14.         )
  15.       )
  16.     )
  17.     (progn
  18.       (setq lst (list (car pts) (nth (fix (/ (length pts) 2.0)) pts)
  19.                       (last pts)
  20.                 )
  21.             normal (getvar "viewdir")
  22.             g (xdge::constructor "kcircarc3d")
  23.       )
  24.       (xdge::setpropertyvalue g "set" (car lst) (cadr lst) (last lst))
  25.       (if (vl-every '(lambda (x)
  26.                        (equal (xdge::getpropertyvalue g "distanceto" x) 0.0
  27.                               fuzz
  28.                        )
  29.                      ) pts
  30.           )
  31.         (progn
  32.           (setq tf t)
  33.         )
  34.       )
  35.     )
  36.   )
  37.   (if tf
  38.     (progn
  39.       (setq ret (xdge::getpropertyvalue g "center" "radius" "startang"
  40.                                         "endang" "refvec" "normal"
  41.                 )
  42.             ang (xdrx_vector_angleonplane #refvec #normal)
  43.             ret (list #center #radius (+ #startang
  44.                                          ang
  45.                                       ) (+ #endang
  46.                                            ang
  47.                                         )
  48.                 )
  49.       )
  50.     )
  51.   )
  52.   (xdge::free g)
  53.   ret
  54. )





上一篇:;递归处理子表,所有子表元素放在第一层
下一篇:(XD::Geom:isCircle)判断SPLINE或者点表是否构成圆(CIRCLE)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复
百度谷歌雅虎搜狗搜搜有道360奇虎

使用道具 举报

签到天数: 394 天

连续签到: 7 天

[LV.9]以坛为家II

已领礼包: 550个

财富等级: 财运亨通

发表于 2017-8-26 09:22:54 | 显示全部楼层
谢谢楼主分享!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|小黑屋|Archiver|手机版|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )  

辽公网安备 21040202000005号

GMT+8, 2018-2-25 00:23 , Processed in 0.410612 second(s), 63 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表