26楼的兄弟程序也不错,但是少了一个自定义函数没给全
32楼的兄弟把26楼缺失的函数补上来了,综合两位兄弟的程序
我下面贴出完整版,这个程序比9楼的处理速度更快。。值得推荐!
那么问题来了,我该采纳哪位为最佳答案呢?为难啊!
![](source/plugin/imc_colorcode/images/loading.gif) - (defun c:tt (/ ss n ent para p1 p2 p3)
- (if (setq ss (ssget '((0 . "LWPOLYLINE"))))
- (repeat (setq n (sslength ss))
- (setq ent (ssname ss (setq n (1- n)))
- para (vlax-curve-getEndParam ent)
- p1 (vlax-curve-getPointAtParam ent 0)
- p2 (vlax-curve-getPointAtParam ent (fix (* para 0.33)))
- p3 (vlax-curve-getPointAtParam ent (fix (* para 0.66)))
- )
- (pt3a p1 p2 p3)
- (entdel ent)
- )
- )
- (princ)
- )
- (defun pt3a (pt1 pt2 pt3) ;pt1以及pt3为起始点,pt2为中间的一点.
- ;;;==================================
- ;;; (setq pt1 (list (nth 0 pt1) (nth 1 pt1) 0.0)
- ;;; pt2 (list (nth 0 pt2) (nth 1 pt2) 0.0)
- ;;; pt3 (list (nth 0 pt3) (nth 1 pt3) 0.0)
- ;;; )
- (if
- (setq cent
- (Inters
- (polar pt1 (angle pt1 pt2) (* 0.5 (distance pt1 pt2)))
- (polar (polar pt1 (angle pt1 pt2) (* 0.5 (distance pt1 pt2)))
- (+ (* 0.5 pi) (angle pt1 pt2))
- 1.0
- )
- (polar pt3 (angle pt3 pt2) (* 0.5 (distance pt3 pt2)))
- (polar (polar pt3 (angle pt3 pt2) (* 0.5 (distance pt3 pt2)))
- (+ (* 0.5 pi) (angle pt3 pt2))
- 1.0
- )
- nil
- )
- ) ;假如有交点,则可以做园,否则做直线
- (entmake (list (cons 0 "circle")
- (cons 8 "ok")
- (cons 10 cent)
- (cons 40 (distance cent pt1))
- (cons 62 102)
- )
- ) (entmake (list (cons 0 "line")
- (cons 8 "ok")
- (cons 10 pt1)
- (cons 11 pt2)
- (cons 62 102)
- )
- )
- )
- (princ)
- )
|