连续画三个矩形 后面高度值 怎么就会变不知道问题在什么地方
(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: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)
)
如果你要的是这种效果:
命令 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)
)
你看这个能不能解决你的问题
(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)
) 不太懂你的意思,但从你的描述来看,h、w、w1、w2应该依次输入0.92、4.28、2.39、4.28,应该就是你想要的效果了 本帖最后由 youyou3810 于 2019-5-17 09:50 编辑
这是实际效果 高度不一样下图
我想要的效果下图
youyou3810 发表于 2019-5-17 09:46
这是实际效果 高度不一样下图
那你就依次输入4.28、0.92、0.92、0.92 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 是这样三个不同宽度矩形 :handshake不错 是我想要的 本帖最后由 youyou3810 于 2019-5-19 12:06 编辑
1.043.57
4.11
3.55
能直接去修改不需要移动点去端点吗
页:
[1]
2