jx矩形对齐参考线
(defun c:JX (/ W H P1 P2 P3 P4 ANG PT1 PT2 RECT_CENTER OFFSET_X OFFSET_Y)(setq PI0 (* 0.5 pi))
(setq PI1 (* 1.5 pi))
(setq W (getdist "\n输入矩形长度: "))
(setq H (getdist "\n输入矩形宽度: "))
(setq OSM (getvar "osmode"))
(setvar "osmode" 0)
(setq E1 (entsel "\n选择参照线: "))
(while (null E1)
(setq E1 (entsel "\n选择参照线: ")))
(setq PT1 (osnap (cadr E1) "mid"))
(setq PT2 (osnap (cadr E1) "end"))
(setvar "osmode" OSM)
(setq ANG (angle PT1 PT2))
(setq OFFSET_X (/ W 2))
(setq OFFSET_Y (/ H 2))
(setq P1 (polar PT1 ANG (- OFFSET_Y (/ H 2))))
(setq P1 (polar P1 ANG (- OFFSET_X)))
(setq P2 (polar P1 ANG W))
(setq P3 (polar P2 (+ ANG PI0) H))
(setq P4 (polar P1 (+ ANG PI0) H))
(setq SS (entmake (list
'(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
'(90 . 4)
'(70 . 1)
'(43 . 0.0)
'(38 . 0.0)
'(39 . 0.0)
(cons 10 P1)
(cons 10 P2)
(cons 10 P3)
(cons 10 P4))))
(entnext SS)
(entupd SS)
(princ)
)
适合知道桩基坐标,绘制承台、桥台,盖梁等,就是矩形中心和参考线中心不完全重合 有学习的意义 (defun c:tt ()
(or w (setq w 1000.))
(or h (setq h 500.))
(setq w(udist 7 "" "矩形长度<输入或鼠标直接量取>" w nil)
h(udist 7 "" "矩形宽度<输入或鼠标直接量取>" h nil)
os (getvar "osmode")
)
(setvar "osmode" 0)
(while (not (setq e1 (entsel "\n选择参照线: "))))
(setq p1 (osnap (cadr e1) "mid")
p2 (osnap (cadr e1) "end")
r(angle p1 p2)
p1 (polar p1 r (* w -0.5))
p2 (polar p1 r w)
p3 (polar p2 (+ r (* 0.5 pi)) h)
p4 (polar p1 (+ r (* 0.5 pi)) h)
)
(command "pline" p1 p2 p3 p4 "c")
(setvar "osmode" os)
(princ)
) (defun c:tt ();矩形中心和参考线中心重合
(or w (setq w 1000.))
(or h (setq h 500.))
(setq w(udist 7 "" "矩形长度<输入或鼠标直接量取>" w nil)
h(udist 7 "" "矩形宽度<输入或鼠标直接量取>" h nil)
os (getvar "osmode")
)
(setvar "osmode" 0)
(while (not (setq e1 (entsel "\n选择参照线: "))))
(setq p1 (osnap (cadr e1) "mid")
p2 (osnap (cadr e1) "end")
r(angle p1 p2)
p1 (polar p1 r (* w -0.5))
p2 (polar p1 r w)
p1 (polar p1 (- r (* 0.5 pi)) (* h 0.5))
p2 (polar p2 (- r (* 0.5 pi)) (* h 0.5))
p3 (polar p2 (+ r (* 0.5 pi)) h)
p4 (polar p1 (+ r (* 0.5 pi)) h)
)
(command "pline" p1 p2 p3 p4 "c")
(setvar "osmode" os)
(princ)
) (defun c:jx (/ w h os e1 p1 p2 r p3 p4)
(or (boundp 'w) (setq w 1000.0))
(or (boundp 'h) (setq h 500.0))
(setq w (getdist (strcat "\n矩形长度<" (rtos w) ">: ")))
(if (not w) (setq w 1000.0))
(setq h (getdist (strcat "\n矩形宽度<" (rtos h) ">: ")))
(if (not h) (setq h 500.0))
(setq os (getvar "osmode"))
(setvar "osmode" 0)
(while (not (setq e1 (entsel "\n选择参照线: "))))
(setq p1 (osnap (cadr e1) "mid")
p2 (osnap (cadr e1) "end")
r (angle p1 p2)
)
(setq p1 (polar p1 (+ r (* pi 0.5)) (* h 0.5))
p1 (polar p1 r (* w -0.5))
p2 (polar p1 (+ r (* pi 0.5)) (* h -1))
p3 (polar p1 r w)
p4 (polar p3 (+ r (* pi 0.5)) (* h -1))
)
(command "_.pline" "_non" p1 "_non" p3 "_non" p4 "_non" p2 "_close")
(setvar "osmode" os)
(princ)
) (defun c:jx (/ os e1 p1 p2 r w h p3 p4)
(setq os (getvar "osmode"))
(setvar "osmode" 512)
(while (not (setq e1 (entsel "\n选择参照线: "))))
(setq p1 (osnap (cadr e1) "mid")
p2 (osnap (cadr e1) "end")
r (angle p1 p2)
)
(setvar "osmode" os)
(or (boundp 'w) (setq w 12))
(or (boundp 'h) (setq h 2))
(setq w (getdist (strcat "\n矩形长度<" (rtos w) ">: ")))
(if (not w) (setq w 12))
(setq h (getdist (strcat "\n矩形宽度<" (rtos h) ">: ")))
(if (not h) (setq h 2))
(setvar "osmode" 0)
(setq p1 (polar p1 (+ r (* pi 0.5)) (* h 0.5))
p1 (polar p1 r (* w -0.5))
p2 (polar p1 (+ r (* pi 0.5)) (* h -1))
p3 (polar p1 r w)
p4 (polar p3 (+ r (* pi 0.5)) (* h -1))
)
(command "_.pline" p1 p3 p4 p2 "_close")
(setvar "osmode" os)
(princ)
)
页:
[1]