马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?立即注册
×
 - ;;;线段在下方
- (defun c:cheng_downline(/ e0 ss ss2 e1 e2 p0 p1 p2 p3 p4 p5 p6 loop i ii x y x1 x2 r)
- (setq e0 (entsel "\n选择在下方的线段:"))
- (setq ss (ssget "x" '((0 . "LINE"))))
- (ssdel (car e0) ss)
- (setq loop (sslength ss))
- (setq p1 (cdr (assoc 10 (entget (car e0)))))
- (setq p2 (cdr (assoc 11 (entget (car e0)))))
- (setq width (getreal "\n输入打断间距<50>:"))
- (if (or (= "" width) (= nil width)) (setq width 100))
- (setq i 0)
- (setq m 0)
- (setq r (angle p1 p2))
- (repeat loop
- (setq e1 (ssname ss i))
- (setq i (+ i 1))
- (setq p3 (cdr (assoc 10 (entget e1))))
- (setq p4 (cdr (assoc 11 (entget e1))))
- (setq p0 (inters p1 p2 p3 p4))
- ;(if (= i 1) (command "zoom" "e"))
- (setq ss3 (ssadd))
- (if (and (/= p0 nil) (> i 1))
- (progn
- (setq ss2 (ssget p0 '((0 . "LINE"))))
- (setq qq p0)
- (if ss2 (setq loop2 T) (setq loop2 nil))
- (while loop2
- (setq e2 (ssname ss2 0))
- (setq loop2 nil)
- (if (and (not (ssmemb e2 ss)) (/= e1 e2))
- (progn
- (setq p5 (cdr (assoc 10 (entget e2))))
- (setq p6 (cdr (assoc 11 (entget e2))))
- (setq p0 (inters p3 p4 p5 p6))
- )
- (progn
- (if ss3 (ssadd e2 ss3) (setq ss3 (ssadd e2)) )
- (if e2 (command "move" e2 "" "0,0" "100"))
- )
- )
- )
- )
- )
-
- (if (/= p0 nil)
- (progn
- (setq x (car p0))
- (setq y (car(cdr p0)))
- (setq x1 (- x (* width (cos r))))
- (setq x2 (+ y (* width (sin r))))
- (setq p5 (list x1 x2 0.0))
- (setq x1 (+ x (* width (cos r))))
- (setq x2 (- y (* width (sin r))))
- (setq p6 (list x1 x2 0.0))
- (if (or (equal p1 p3) (equal p1 p4) (equal p2 p3) (equal p2 p4))
- (princ)
- (progn
- (if (<= i 1) (command "break" e0 p5 p6) (command "break" e2 p5 p6))
- (setq m (+ m 1))
- )
- )
- )
- )
- )
- ;(command "zoom" "p")
- (if (> (sslength ss3) 0) (command "move" ss3 "" "0,0" "-100.0"))
- (princ "\n总共完成") (princ m) (princ "项。")
- (princ)
- )
一个问题:
该程序和cheng_upline有同样的问题,
如果选择线段的时候,zoom不同得到的结果也不同,甚至相反!!!
????help!!! |