本帖最后由 江南十笑 于 2020-8-18 09:16 编辑
 - ;轴线等分梁; 目前问题线只能是直线
- (defun c:666 ()
- (LWWCSH)
- ;(setq PL1 (entsel "\n请选取第一条轴线[必须是直线]:")
- (setq PL1 (nentsel "\n请选取第一条轴线[必须是直线]:")
- PL2 (nentsel "\n请选取第二条轴线[必须是直线]:")
- j-j (GETREAL "\n请输入梁宽:")
- OFW (GETINT "\n请输入等分数量(梁根数+1):")
- n 1)
-
- (lwwsctc "S-GRID" 14 "DOTE" 1 t)
- (lwwsctc "S-BEAM" 4 "DASHED" 1 t)
-
- (if (< j-j 0)(progn (princ "输入梁宽小于0,按0计算") (setq j-j 0)))
- (if (< OFW 2)(progn (princ "指定等分数量小于2,按2计算") (setq OFW 2)))
- (Setq pl1p1 (cdr (assoc 10 (entget (car pl1))))
- pl1p2 (cdr (assoc 11 (entget (car pl1))))
- pl2p1 (cdr (assoc 10 (entget (car pl2))))
- pl2p2 (cdr (assoc 11 (entget (car pl2))))
- )
- (if (< (DISTANCE pl1p1 pl2p1) (DISTANCE pl1p1 pl2p2))
- (setq jl (DISTANCE pl1p1 pl2p1)
- jd (ANGLE pl1p1 pl2p1))
- (setq jl (DISTANCE pl1p1 pl2p2)
- jd (ANGLE pl1p1 pl2p2))
- ) (while (< n ofw)
- (entmake (list '(0 . "line")'(62 . 256 )'(8 . "S-GRID" )(cons 10 (polar pl1p1 jd (* n (/ jl ofw)) )) (cons 11 (polar pl1p2 jd (* n (/ jl ofw)) )) ))
- (entmake (list '(0 . "line")'(62 . 256 ) '(8 . "S-BEAM" ) (cons 10 (polar pl1p1 jd (- (* n (/ jl ofw)) (/ j-j 2.))))(cons 11 (polar pl1p2 jd (- (* n (/ jl ofw)) (/ j-j 2.))))) )
- (if (/= j-j 0)
- (entmake (list '(0 . "line")'(62 . 256 ) '(8 . "S-BEAM" ) (cons 10 (polar pl1p1 jd (+ (* n (/ jl ofw)) (/ j-j 2.))))(cons 11 (polar pl1p2 jd (+ (* n (/ jl ofw)) (/ j-j 2.))))) )
- )
- (setq n (+ 1 n))
- )
- (LWWEND)
- (princ)
- )
如上所示 当所选轴线不在块内 程序运行无误 当所选直线在嵌套块内 生成的位置就跑了 如何修改 让生成的位置正确
|