pimgu 发表于 2014-3-13 21:56:48

两点等分,圆改XLINE怎么写

(defun c:tt()
(setvar "CMDECHO" 0)
(setqp1 (getpoint "\n第一点:")
p2 (getpoint p1 "\n第二点:")
)
;;;两点距离
(princ
    (strcat "\n****两点距离:" (rtos (distance p1 p2) 2 3))
)
;;;等分数量:
(setq n (getint "\n等分数量:"))
;;;等分子函数,根据两点点及等分数量得出等分点列表
(defun tt-df (p1 p2 n)
    (if(> (1- n) 0)
      (cons (polar p1 (angle p1 p2) (/ (distance p1 p2) n 1.0))
      (tt-df (polar p1 (angle p1 p2) (/ (distance p1 p2) n 1.0))
       p2
       (1- n)
      )
      )
    )
)
;;;等分点列表
(setq lst (tt-df p1 p2 n))
;;; 起点、终点、等分点处画园
(mapcar '(lambda (x) (vl-cmdf "CIRCLE" x 1.0))
    (append (list p1) lst (list p2))
)
(prin1)
)

yefei812678 发表于 2025-1-5 08:30:38

感谢分享感谢分享感谢分享

pimgu 发表于 2014-3-13 21:57:59

路过的大师请帮忙,谢谢!

pimgu 发表于 2014-3-17 23:59:41

;;; 起点、终点、等分点处画园
(mapcar '(lambda (x) (vl-cmdf "CIRCLE" x 1.0))
    (append (list p1) lst (list p2))
)
(prin1)
)

pimgu 发表于 2014-3-18 00:03:07

现在等分后的标记是圆,想改成等分后的标记是XLINE,怎么改呀,请大侠帮忙!

pimgu 发表于 2014-3-18 00:09:11

示意图片!

hooboxu 发表于 2014-7-13 15:54:37

有解决了么?

xyp1964 发表于 2014-7-13 16:38:49

(defun c:tt ()
(setvar "CMDECHO" 0)
(defun tt-df (p1 p2 nn / dd rr ptn)
    (setq dd (/ (distance p1 p2) nn 1.0)
          rr (angle p1 p2)
    )
    (repeat (1- nn)
      (setq p1 (polar p1 rr dd)
          ptn (cons p1 ptn)
      )
    )
    (reverse ptn)
)
(setq p1 (getpoint "\n第一点: ")
        p2 (getpoint p1 "\n第二点: ")
        nn (Uint 7 "" "等分数量" nn)
        rr (angle p1 p2)
)
(foreach x (tt-df p1 p2 nn)(vl-cmdf "xline" x (polar x (+ rr (* pi 0.5)) 1.0) ""))
(princ)
)

hooboxu 发表于 2014-7-21 02:07:17

跳出错误!!!!!

hooboxu 发表于 2014-11-23 23:39:03

有人帮忙看看吗?谢谢了

ZZXXQQ 发表于 2014-11-24 08:06:40

(defun c:tt ()
(setvar "CMDECHO" 0)
(defun tt-df (p1 p2 nn / dd rr ptn)
    (setq dd (/ (distance p1 p2) nn 1.0)
          rr (angle p1 p2)
          ptn (list p1)
    )
    (repeat (1- nn)
      (setq p1 (polar p1 rr dd)
            ptn (cons p1 ptn)
      )
    )
    (reverse(cons p2 ptn))
)
(setq p1 (getpoint "\n第一点: ")
      p2 (getpoint p1 "\n第二点: ")
      nn (getint "\n等分数量")
      rr (angle p1 p2)
)
(foreach x (tt-df p1 p2 nn)(vl-cmdf "xline" x (polar x (+ rr (* pi 0.5)) 1.0) ""))
(princ)
)
页: [1] 2
查看完整版本: 两点等分,圆改XLINE怎么写