【函数】curve:rectanglep 测试一个多段线是否为矩形
本帖最后由 vitalgg 于 2023-1-12 14:59 编辑【函数】curve:rectanglep 测试一个多段线是否为矩形
本函数源码:
https://gitee.com/atlisp/atlisp- ... urve/rectanglep.lsp
@lisp函数库
https://gitee.com/atlisp/atlisp-lib
函数库问题讨论,建议及意见交流区
https://gitee.com/atlisp/atlisp-lib/issues
@lisp开源项目
https://gitee.com/atlisp
(defun curve:rectanglep (ent)
"测试一个多段线是否为矩形"
"T or nil"
(and
(= 'ename (type ent))
(wcmatch (entity:getdxf ent 0) "*POLYLINE") ;; 是多段线
(or ;; 4点且闭合 或 5点首尾点相同
(and (= (entity:getdxf ent 90) 4)
(= (entity:getdxf ent 70) 1))
(and (= (entity:getdxf ent 90) 5)
(= (entity:getdxf ent 70) 0)))
(apply '= (entity:getdxf ent 42))
(progn
(setq pts (curve:get-points ent))
(setq ang
(abs
(- (angle (nth 0 pts)(nth 1 pts))
(angle (nth 1 pts)(nth 2 pts)))))
(if (> ang pi)(setq ang (- ang pi)))
;; 邻边垂直且对角长度相等
(and
(equal ang (* pi 0.5) 1e-6)
(equal (distance (nth 0 pts)(nth 1 pts))
(distance (nth 2 pts)(nth 3 pts))
1e-6)
(equal (distance (nth 0 pts)(nth 2 pts))
(distance (nth 1 pts)(nth 3 pts))
1e-6)
(if (nth 4 pts) ;; 存在第5点时,第5点同第1点
(< (distance (nth 0 pts)(nth 4 pts)) 1e-6)
t)
))))
公众号:CAD应用云 中寻求帮助
CAD命令行中寻求帮助
CAD命令行中聊天寻求帮助
VScode 中寻求帮助
本帖最后由 77077 于 2023-1-12 09:55 编辑
我有强迫症,我认为顶点数不为4的不能算矩形,不闭合的不能算矩形,带凸度的不能算矩形。
不知道对不对?
(and
(setq curve(car(entsel "\n选择对象:")))
(= (vlax-curve-getEndParam curve) 4)
(vlax-curve-isClosed curve)
(setq d1 (vlax-curve-getDistAtParam curve 1))
(setq d2 (- (vlax-curve-getDistAtParam curve 2) d1))
(equal (vlax-curve-getArea curve) (* d1 d2) 1e-6)
) 77077 发表于 2023-1-12 09:53
我有强迫症,我认为顶点数不为4的不能算矩形,不闭合的不能算矩形,带凸度的不能算矩形。
不知道对不 ...
你说的对。
万一超过一个点有重合呢? kozmosovia 发表于 2023-1-12 22:34
万一超过一个点有重合呢?
先用 killover 处理一下 "contributes.grammars.language" 中包含未知语言。提供的值: autolisp-injection
命令“autolisp.loadActiveFile”在 `commands` 部分重复出现。
看看用@lisp函数库经常用不了,出现这个是怎么回事。 本帖最后由 vitalgg 于 2023-2-11 09:23 编辑
哆啦A梦_oELxg 发表于 2023-2-10 23:15
"contributes.grammars.language" 中包含未知语言。提供的值: autolisp-injection
命令“autolisp.loadAct ...
应该是需要安装 markdown 相关扩展才行。
我把这段删了吧。请更新扩展版本到 1.4.18 试一下。
{
"language": "autolisp-injection",
"scopeName": "markdown.autolisp.codeblock",
"path": "./syntaxes/cl_codeblock.tmLanguage.json",
"injectTo": [
"text.html.markdown"
],
"embeddedLanguages": {
"meta.embedded.block.autolisp": "autolisp"
}
}
vitalgg 发表于 2023-2-11 09:20
应该是需要安装 markdown 相关扩展才行。
我把这段删了吧。请更新扩展版本到 1.4.18 试一下。
给力,安装markdown all in one扩展后,没问题了。:victory:
页:
[1]