多线段老是画零长度线,高手给看看,(angle (nth i pp) (nth (+ i 1) pp)),二维三维点错误(polar pt (+ (/ pi 4) ang) (* 1.5 *bl))单数类型错误。
- (defun C:zqc-jdx ()
- ;(cmdla0)
- (setq pt1 (getpoint "\n选取点:")
- pp '() dd '() ang '()
- i 0 n 0 j 0
- *bl 100)
- (command "_.pline" "" "w" (* 0.5 *bl) "" pt1)
- (while pt1
- (setq pp (cons (3d->2d pt1) pp)
- pt1 (getpoint pt1 "\n选取点:")
- )
- (command pt1)
- )
- (setq pp (reverse pp))
- (setq n (length pp))
- (while (< i (- n 1))
- (setq dd (cons (mapcar '- (nth (+ i 1) pp) (nth i pp)) dd)
- ang (cons (angle (nth i pp) (nth (+ i 1) pp)) ang)
- i (+ i 1))
- )
- (setq ddl (reverse (mapcar '2pdist dd)))
- (setq ang (reverse ang))
- (setq ddn (mapcar '(lambda(x) (fix(/ x (* 11.25 *bl)))) ddl)) ;等分数
- (setq fuzz (mapcar '(lambda(x) (/ (rem x (* 11.25 *bl)) 2)) ddl));偏移量
- (while (< j (- n 1))
- (setq ddn1 (nth j ddn))
- (setq ang1 (nth j ang))
- (setq pts (polar (nth j pp) ang1 (nth j fuzz)))
- (zqc-L45 pts ang1)
- (repeat ddn1
- (setq pts (polar pts ang1 (* 11.25 *bl)))
- (zqc-L45 pts ang1)
- )
- (setq j (+ j 1))
- )
- ;(cmdla1)
- )
- (defun zqc-L45 (pt ang / pt1 pt2)
- ;(setq pt (3d->2d(getpoint "\n选取点:"))
- ;ang (getangle "\n角度:")
- (setq pt1 (polar pt (+ (/ (* 5 pi) 4) ang) (* 1.5 *bl)) ;*bl比例
- pt2 (polar pt (+ (/ pi 4) ang) (* 1.5 *bl))
- )
- (command "_.line" pt1 pt2 "")
- )
- ;;52.2 [功能] 3D点->2D点
- (defun 3d->2d (3dpt / 2dpt)
- (setq 2dpt (list (car 3dpt) (cadr 3dpt)))
- )
- (defun 2pdist (pt);求距离
- (sqrt(apply '+(mapcar '(lambda (x) (* x x)) pt)))
- )
|