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



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

网友答: 有学习的意义

网友答:
  1. (defun c:tt ()
  2.   (or w (setq w 1000.))
  3.   (or h (setq h 500.))
  4.   (setq w  (udist 7 "" "矩形长度<输入或鼠标直接量取>" w nil)
  5.         h  (udist 7 "" "矩形宽度<输入或鼠标直接量取>" h nil)
  6.         os (getvar "osmode")
  7.   )
  8.   (setvar "osmode" 0)
  9.   (while (not (setq e1 (entsel "\n选择参照线: "))))
  10.   (setq p1 (osnap (cadr e1) "mid")
  11.         p2 (osnap (cadr e1) "end")
  12.         r  (angle p1 p2)
  13.         p1 (polar p1 r (* w -0.5))
  14.         p2 (polar p1 r w)
  15.         p3 (polar p2 (+ r (* 0.5 pi)) h)
  16.         p4 (polar p1 (+ r (* 0.5 pi)) h)
  17.   )
  18.   (command "pline" p1 p2 p3 p4 "c")
  19.   (setvar "osmode" os)
  20.   (princ)
  21. )


网友答:
  1. (defun c:tt ();矩形中心和参考线中心重合
  2.   (or w (setq w 1000.))
  3.   (or h (setq h 500.))
  4.   (setq w  (udist 7 "" "矩形长度<输入或鼠标直接量取>" w nil)
  5.         h  (udist 7 "" "矩形宽度<输入或鼠标直接量取>" h nil)
  6.         os (getvar "osmode")
  7.   )
  8.   (setvar "osmode" 0)
  9.   (while (not (setq e1 (entsel "\n选择参照线: "))))
  10.   (setq p1 (osnap (cadr e1) "mid")
  11.         p2 (osnap (cadr e1) "end")
  12.         r  (angle p1 p2)
  13.         p1 (polar p1 r (* w -0.5))
  14.         p2 (polar p1 r w)
  15.         p1 (polar p1 (- r (* 0.5 pi)) (* h 0.5))
  16.         p2 (polar p2 (- r (* 0.5 pi)) (* h 0.5))
  17.         p3 (polar p2 (+ r (* 0.5 pi)) h)
  18.         p4 (polar p1 (+ r (* 0.5 pi)) h)
  19.   )
  20.   (command "pline" p1 p2 p3 p4 "c")
  21.   (setvar "osmode" os)
  22.   (princ)
  23. )


网友答: (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)
)
  • 上一篇:超级好用的屏幕改字(源码)
  • 下一篇:没有了