yjr111 发表于 2013-3-11 22:17:15

将非直角四边形转化成直角矩形

如题,如图要求:点击任意一条边,转化成被该四边形包围的最大矩形


阿然 发表于 2013-3-11 23:35:28

本帖最后由 阿然 于 2013-3-11 23:43 编辑

试一试
(defun c:tt (/ BASEPT BBOX ENT MAXPT MINPT PT1 PT2 PTLST SEG TMPENT X)(vl-load-com)
(if (and (setq ent (entsel "\n选择四边形:"))
         (setq basept (osnap (cadr ent) "_nea"))
         (setq ent (car ent))
      )
    (progn      (setq ptlst
             (vl-remove-if '(lambda (x) (/= (car x) 10)) (entget ent))
      )
      (setq ptlst (mapcar '(lambda (x) (append (cdr x) (list 0.)))
                        (append ptlst (list (car ptlst)))
                  )
      )
      (setq seg (fix (vlax-curve-getparamatpoint ent basept)))
      (setq pt1 (nth seg ptlst))
      (setq pt2 (nth (1+ seg) ptlst))
      (setq
      tmpent (vlax-invoke-method (vlax-ename->vla-object ent) 'copy)
      )
      (vlax-invoke-method
      tmpent
      'Rotate
      (vlax-3d-point pt1)
      (* -1 (angle pt1 pt2))
      )
      (vlax-invoke-method tmpent 'GetBoundingBox 'minpt 'maxpt)
      (setq minpt (vlax-safearray->list minpt)
            maxpt (vlax-safearray->list maxpt)
      )
      (command "_rectang" "_non" minpt "_non" maxpt)
      (setq bbox (entlast))
      (vlax-invoke-method
      (vlax-ename->vla-object bbox)
      'Rotate
      (vlax-3d-point pt1)
      (angle pt1 pt2)
      )
      (vla-erase tmpent)
      (princ)
    )
)
)
可以不局限边数


成仔 发表于 2013-3-12 10:10:32

阿然 发表于 2013-3-11 23:35 static/image/common/back.gif
试一试

可以不局限边数

可以修改成打散的不规则四边形或多边形吗?谢谢!

阿然 发表于 2013-3-12 14:46:59

哦,是我看错题目了,我再想想

weiqi 发表于 2013-3-15 00:29:27

围观围观围观围观

oistre 发表于 2018-8-21 19:52:14

狂顶
用力顶
我用力顶
我很用力顶
再加上千斤顶
总之把它顶到顶

young-yi 发表于 2018-8-22 08:06:08

围观围观围观围观
页: [1]
查看完整版本: 将非直角四边形转化成直角矩形