天气与日历 切换到窄版

 找回密码
 立即注册
中国膜结构网
十大进口膜材评选 十大国产膜材评选 十大膜结构设计评选 十大膜结构公司评选
查看: 69|回复: 0

[函数] 【函数】curve:rectanglep 测试一个多段线是否为矩形

[复制链接]

该用户从未签到

主题

0

回帖

2912

积分

管理员

积分
2912
发表于 2024-6-22 09:46:18 | 显示全部楼层 |阅读模式
(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)))
   (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)
      ))))

 

 

 

 

[函数] 【函数】curve:rectanglep 测试一个多段线是否为矩形
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|中国膜结构网|中国膜结构协会|进口膜材|国产膜材|ETFE|PVDF|PTFE|设计|施工|安装|车棚|看台|污水池|中国膜结构网_中国空间膜结构协会

GMT+8, 2024-11-1 12:27 , Processed in 0.137730 second(s), 28 queries .

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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