cjf160204 发表于 2025-2-6 17:36:47

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)
)

cjf160204 发表于 2025-2-6 17:40:31

适合知道桩基坐标,绘制承台、桥台,盖梁等,就是矩形中心和参考线中心不完全重合

zmzk 发表于 2025-11-27 18:55:56

有学习的意义

xyp1964 发表于 2025-11-27 23:36:34

(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)
)

xyp1964 发表于 2025-11-27 23:39:40

(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)
)

cjf160204 发表于 2025-11-28 08:49:53

(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)
)

cjf160204 发表于 2025-11-28 10:35:47

(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]
查看完整版本: jx矩形对齐参考线