youyou3810 发表于 2019-5-16 22:17:27

连续画三个矩形 后面高度值 怎么就会变不知道问题在什么地方

(defun c:ty ()
(initget 7)
(setq p1 (getpoint "第一点:"))
         (setq p2(getpoint p1 "\n**第二点:"))
(setq h (getdist "\n**输入宽度:"))
   (setq w (getdist "\n**输入长度:"))
(setq w1 (getdist "\n**输入长度:"))
(setq w2 (getdist "\n**输入长度:"))

    (setq ang (angle p1 p2) l (distance p1 p2))
    (entmake
      (list
      '(0 . "LWPOLYLINE")
      '(100 . "AcDbEntity")
      '(100 . "AcDbPolyline")
      '(90 . 4)
      '(70 . 1)
      '(43 . 0.0)
      '(38 . 0.0)
      '(39 . 0.0)
      (cons 10 (trans (setq p(polar p1 (- ang (* 0.5 pi)) (* w))) 1 0))
      (cons 10 (trans (setq p (polar p ang h)) 1 0))
      (cons 10 (trans (setq p (polar p (+ ang (* 0.5 pi)) w)) 1 0))
      (cons 10 (trans (setq p (polar p (+ pi ang) h)) 1 0))
      )
      )

    (setq pl1 (trans (setq p(polar p1 (- ang (* 0.5 pi)) (* w))) 1 0))
      (setq pl2 (trans (setq p (polar p ang h)) 1 0))
      (setq pl3 (trans (setq p (polar p (+ ang (* 0.5 pi)) w)) 1 0))
      (setq pl4 (trans (setq p (polar p (+ pi ang) h)) 1 0))
(entmake
      (list
      '(0 . "LWPOLYLINE")
      '(100 . "AcDbEntity")
      '(100 . "AcDbPolyline")
      '(90 . 4)
      '(70 . 1)
      '(43 . 0.0)
      '(38 . 0.0)
      '(39 . 0.0)
      (cons 10 (trans (setq p(polar pl3 (- ang (* 0.5 pi)) (* w1))) 1 0))
      (cons 10 (trans (setq p (polar p ang h)) 1 0))
      (cons 10 (trans (setq p (polar p (+ ang (* 0.5 pi)) w1)) 1 0))
      (cons 10 (trans (setq p (polar p (+ pi ang) h)) 1 0))
      )
      )
(setq pl5 (trans (setq p(polar pl3 (- ang (* 0.5 pi)) (* w1))) 1 0))
      (setq pl6 (trans (setq p (polar p ang h)) 1 0))
      (setq pl7 (trans (setq p (polar p (+ ang (* 0.5 pi)) w1)) 1 0))
      (setq pl8 (trans (setq p (polar p (+ pi ang) h)) 1 0))
(entmake
      (list
      '(0 . "LWPOLYLINE")
      '(100 . "AcDbEntity")
      '(100 . "AcDbPolyline")
      '(90 . 4)
      '(70 . 1)
      '(43 . 0.0)
      '(38 . 0.0)
      '(39 . 0.0)
      (cons 10 (trans (setq p(polar pl7 (- ang (* 0.5 pi)) (* w2))) 1 0))
      (cons 10 (trans (setq p (polar p ang h)) 1 0))
      (cons 10 (trans (setq p (polar p (+ ang (* 0.5 pi)) w2)) 1 0))
      (cons 10 (trans (setq p (polar p (+ pi ang) h)) 1 0))
      )
      )

    )
ty
4.28 h
0.92 w
2.39 w1
4.28 w2
3个矩形 4.28*0.92;2.39*0.924.28*0.92
为啥后面0.92 w 会变w1值也不对


satan421 发表于 2019-5-17 16:34:00

本帖最后由 satan421 于 2019-5-17 16:35 编辑

youyou3810 发表于 2019-5-17 15:06
4.28*0.92;2.39*0.924.28*0.92 是这样三个不同宽度矩形
;;用下面的代码,依次输入0.92 4.28 2.39 4.28

(defun c:ty ()
(initget 7)
(setq p1 (getpoint "第一点:"))
(setq p2(getpoint p1 "\n**第二点:"))
(setq h (getdist "\n**输入宽度:"))
(setq w (getdist "\n**输入长度:"))
(setq w1 (getdist "\n**输入长度:"))
(setq w2 (getdist "\n**输入长度:"))

(setq ang (angle p1 p2) l (distance p1 p2))
(entmake
    (list
      '(0 . "LWPOLYLINE")
      '(100 . "AcDbEntity")
      '(100 . "AcDbPolyline")
      '(90 . 4)
      '(70 . 1)
      '(43 . 0.0)
      '(38 . 0.0)
      '(39 . 0.0)
      (cons 10 (trans (setq p (polar p1 (- ang (* 0.5 pi)) (* h))) 1 0))
      (cons 10 (trans (setq p (polar p ang w)) 1 0))
      (cons 10 (trans (setq p (polar p (+ ang (* 0.5 pi)) h)) 1 0))
      (cons 10 (trans (setq p (polar p (+ pi ang) w)) 1 0))
    )
)

(setq pl1 (trans (setq p(polar p1 (- ang (* 0.5 pi)) (* h))) 1 0))
(setq pl2 (trans (setq p (polar p ang w)) 1 0))
(setq pl3 (trans (setq p (polar p (+ ang (* 0.5 pi)) h)) 1 0))
(setq pl4 (trans (setq p (polar p (+ pi ang) w)) 1 0))
(entmake
      (list
      '(0 . "LWPOLYLINE")
      '(100 . "AcDbEntity")
      '(100 . "AcDbPolyline")
      '(90 . 4)
      '(70 . 1)
      '(43 . 0.0)
      '(38 . 0.0)
      '(39 . 0.0)
      (cons 10 (trans (setq p (polar pl3 (- ang (* 0.5 pi)) (* h))) 1 0))
      (cons 10 (trans (setq p (polar p ang w1)) 1 0))
      (cons 10 (trans (setq p (polar p (+ ang (* 0.5 pi)) h)) 1 0))
      (cons 10 (trans (setq p (polar p (+ pi ang) w1)) 1 0))
      )
      )
(setq pl5 (trans (setq p(polar pl3 (- ang (* 0.5 pi)) (* h))) 1 0))
(setq pl6 (trans (setq p (polar p ang w1)) 1 0))
(setq pl7 (trans (setq p (polar p (+ ang (* 0.5 pi)) h)) 1 0))
(setq pl8 (trans (setq p (polar p (+ pi ang) w1)) 1 0))
(entmake
      (list
      '(0 . "LWPOLYLINE")
      '(100 . "AcDbEntity")
      '(100 . "AcDbPolyline")
      '(90 . 4)
      '(70 . 1)
      '(43 . 0.0)
      '(38 . 0.0)
      '(39 . 0.0)
      (cons 10 (trans (setq p (polar pl7 (- ang (* 0.5 pi)) (* h))) 1 0))
      (cons 10 (trans (setq p (polar p ang w2)) 1 0))
      (cons 10 (trans (setq p (polar p (+ ang (* 0.5 pi)) h)) 1 0))
      (cons 10 (trans (setq p (polar p (+ pi ang) w2)) 1 0))
      )
      )
(princ)
)


如果你要的是这种效果:

youyou3810 发表于 2019-5-20 08:13:36

命令 ty 现在两个参考点
1.04
3.57
4.11
3.55


下面动画是我最终要的效果 不需要再二次调整就更好了


现在修改代码(satan421 提供修改的代码 其实也很好用)如下

(defun c:ty ()
(initget 7)
(setq p1 (getpoint "第一点:"))
(setq p2(getpoint p1 "\n**第二点:"))
(setq h (getdist "\n**输入宽度:"))
(setq w (getdist "\n**输入长度:"))
(setq w1 (getdist "\n**输入长度:"))
(setq w2 (getdist "\n**输入长度:"))

(setq ang (angle p1 p2) l (distance p1 p2))
(entmake
(list
'(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
'(90 . 4)
'(70 . 1)
'(43 . 0.0)
'(38 . 0.0)
'(39 . 0.0)
(cons 10 (trans (setq p (polar p1 (- ang (* 0.5 pi)) (* h))) 1 0))
(cons 10 (trans (setq p (polar p ang w)) 1 0))
(cons 10 (trans (setq p (polar p (+ ang (* 0.5 pi)) h)) 1 0))
(cons 10 (trans (setq p (polar p (+ pi ang) w)) 1 0))
)
)

(setq pl1 (trans (setq p(polar p1 (- ang (* 0.5 pi)) (* h))) 1 0))
(setq pl2 (trans (setq p (polar p ang w)) 1 0))
(setq pl3 (trans (setq p (polar p (+ ang (* 0.5 pi)) h)) 1 0))
(setq pl4 (trans (setq p (polar p (+ pi ang) w)) 1 0))
(entmake
(list
'(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
'(90 . 4)
'(70 . 1)
'(43 . 0.0)
'(38 . 0.0)
'(39 . 0.0)
(cons 10 (trans (setq p (polar pl3 (- ang (* 0.5 pi)) (* h))) 1 0))
(cons 10 (trans (setq p (polar p ang w1)) 1 0))
(cons 10 (trans (setq p (polar p (+ ang (* 0.5 pi)) h)) 1 0))
(cons 10 (trans (setq p (polar p (+ pi ang) w1)) 1 0))
)
)
(setq pl5 (trans (setq p(polar pl3 (- ang (* 0.5 pi)) (* h))) 1 0))
(setq pl6 (trans (setq p (polar p ang w1)) 1 0))
(setq pl7 (trans (setq p (polar p (+ ang (* 0.5 pi)) h)) 1 0))
(setq pl8 (trans (setq p (polar p (+ pi ang) w1)) 1 0))
(entmake
(list
'(0 . "LWPOLYLINE")
'(100 . "AcDbEntity")
'(100 . "AcDbPolyline")
'(90 . 4)
'(70 . 1)
'(43 . 0.0)
'(38 . 0.0)
'(39 . 0.0)
(cons 10 (trans (setq p (polar pl7 (- ang (* 0.5 pi)) (* h))) 1 0))
(cons 10 (trans (setq p (polar p ang w2)) 1 0))
(cons 10 (trans (setq p (polar p (+ ang (* 0.5 pi)) h)) 1 0))
(cons 10 (trans (setq p (polar p (+ pi ang) w2)) 1 0))
)
)
(princ)
)



lht 发表于 2019-5-19 12:49:40

你看这个能不能解决你的问题
(defun c:ty ()
(initget 7)
(setvar "osmode" 0)
(setq p1 (getpoint "第一点:"))          ;第一个矩形左下角点
(setq p2(getpoint p1 "\n**第二点:"));控制矩形方向的控制点,也就是任何一个矩形的右下角点
(setq h (getdist "\n**输入宽度:"))
   (setq w (getdist "\n**输入长度:"))
(setq w1 (getdist "\n**输入长度:"))
(setq w2 (getdist "\n**输入长度:"))
(command "_ucs" "3" p1 p2 "")
(command "_rectang" (list 0 0) (list w h))
(command "_rectang" (list w 0) (list (+ w w1) h))
(command "_rectang" (list (+ w w1) 0) (list (+ w w1 w2) h))
(command "_ucs" "w")
(setvar "osmode" 35)
)

satan421 发表于 2019-5-17 08:48:25

不太懂你的意思,但从你的描述来看,h、w、w1、w2应该依次输入0.92、4.28、2.39、4.28,应该就是你想要的效果了

youyou3810 发表于 2019-5-17 09:46:56

本帖最后由 youyou3810 于 2019-5-17 09:50 编辑

这是实际效果 高度不一样下图



我想要的效果下图


satan421 发表于 2019-5-17 13:38:38

youyou3810 发表于 2019-5-17 09:46
这是实际效果 高度不一样下图




那你就依次输入4.28、0.92、0.92、0.92

youyou3810 发表于 2019-5-17 15:06:21

satan421 发表于 2019-5-17 13:38
那你就依次输入4.28、0.92、0.92、0.92

4.28*0.92;2.39*0.924.28*0.92 是这样三个不同宽度矩形

youyou3810 发表于 2019-5-19 11:46:05

:handshake不错 是我想要的

youyou3810 发表于 2019-5-19 12:00:22

本帖最后由 youyou3810 于 2019-5-19 12:06 编辑

1.043.57
4.11
3.55

能直接去修改不需要移动点去端点吗
页: [1] 2
查看完整版本: 连续画三个矩形 后面高度值 怎么就会变不知道问题在什么地方