明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1540|回复: 2

角平分线

[复制链接]
发表于 2009-6-8 15:35:00 | 显示全部楼层 |阅读模式

角平分线

(defun c:t6()
(defun vertexs (ename / plist pp n)
  (setq obj (vlax-ename->vla-object ename))
  (setq plist (vlax-safearray->list (vlax-variant-value (vla-get-coordinates obj))))
  (setq n 0)
  (repeat (/ (length plist) 2)
    (setq pp (append pp (list (list (nth n plist) (nth (1+ n) plist)))))
    (setq n (+ n 2))
  )
  pp
)
(setq ptsp (vertexs (car (entsel))))
(setq ptsp (cons (last ptsp) (reverse(cons (car ptsp)(reverse ptsp)))))
(while (> (length ptsp) 2)
(setq ang (/ (+ (angle (cadr ptsp) (car ptsp)) (angle (cadr ptsp) (caddr ptsp))) 2))
(setq ptsp (cdr ptsp))
)
)

"觉得好,就打赏"
还没有人打赏,支持一下
 楼主| 发表于 2009-6-8 15:50:00 | 显示全部楼层
(defun c:t6()
(setq ptsp (vertexs (car (entsel))))
(setq ptsp (cons (last ptsp) (reverse(cons (car ptsp)(reverse ptsp)))))
(while (> (length ptsp) 2)
(setq ang1 (angle (cadr ptsp) (car ptsp))
      ang2 (angle (cadr ptsp) (caddr ptsp)))
(if (> ang1 ang2)
    (setq ang (+ (/ (+ (- (* 2 pi) ang1) ang2) 2) ang1))
    (setq ang (+ (/ (- ang2 ang1) 2) ang1)))
(setq pp1 (polar (cadr ptsp) ang 200))
(command "line" pp1 (cadr ptsp) "")
(setq ptsp (cdr ptsp))
)
)
发表于 2009-6-8 18:59:00 | 显示全部楼层
;;;=======================================;;;功能:角平分线
(vl-load-com)
(defun   C:TT4   (/   SS1   ENT1   SS2   ENT2   PT0   PT1   PT2   PT3)
    (and   (setq   SS1   (entsel   "\n点取直线段1: "))
  (setq   ENT1   (entget   (car   SS1)))
  (=   (cdr   (assoc   0   ENT1))   "LINE")
  (setq   SS2   (entsel   "\n点取直线段2: "))
  (setq   ENT2   (entget   (car   SS2)))
  (=   (cdr   (assoc   0   ENT2))   "LINE")
  (setq   PT0   (inters         (cdr   (assoc   10   ENT1))
         (cdr   (assoc   11   ENT1))
         (cdr   (assoc   10   ENT2))
         (cdr   (assoc   11   ENT2))
         NIL
     )
  )
  ;;最近的线上的点
  (setq   PT1   (vlax-curve-getclosestpointto
         (vlax-ename->vla-object   (car   SS1))
         (cadr   SS1)
     )
        PT2   (vlax-curve-getclosestpointto
         (vlax-ename->vla-object   (car   SS2))
         (cadr   SS2)
     )
  )
  (setq   PT2   (polar   PT0   (angle   PT0   PT2)   (distance   PT0   PT1)))
  (setq   PT3   (polar   PT1   (angle   PT1   PT2)   (*   0.5   (distance   PT1   PT2))))
  (entmake      (list   (cons   0   "LINE")   (cons   10   PT0)
   (cons   11   PT3))
  )
    )
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-10-1 05:37 , Processed in 0.192797 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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