使用li制作多段线框
我正在编写一个lisp,它将在我选择的坐标处开始一条多段线。然后它会自动向90度的方向移动,输入一个距离,它会自动移动到0度,然后再次输入一个距离,然后它会自动完成该框。所以我非常想要一个程序,可以从用户指定的位置开始创建一个多段线框,我只需要输入长度和宽度,它就会生成。我需要它是一条多段线,而不是一个矩形,因为我需要指定一个全局宽度。如果有更简单的方法,请帮忙。英雄联盟
(定义C:plx()
(命令“layer”“s”“Plate”“))
(命令“pline”pause)
(普林斯)
M 实际上,我意识到我可以用一个矩形,然后用pedit把它改成多段线。 https://www.cadtutor.net/forum/C:%5CUsers%5Cmleslie%5CDesktop%5CProject%20Polyline%5Cblock.jpg
我需要弄清楚如何制作一条会产生角度的多边形线,用户需要做的就是把长度放进去,制作一个像这样的物体 你可以用F8轻松做到这一点。。。。。。
当做
看起来像这样 这并不难,你需要知道你的姿势的不同长度和“极轴”功能,你可以轻松地创建它。
当做
塔瓦特 有些乐趣
(defun c:rect ( / p1 p2 )
;; © Lee Mac 2010
(if (and (setq p1 (getpoint "\nSpecify Pick Corner: "))
(setq p2 (getcorner "\nSpecift Opposite Corner: " p1)))
(LM:Rectangle p1 p2 (trans '(0. 0. 1.) 1 0 t))
)
(princ)
)
(defun LM:Rectangle ( ll ur norm )
;; © Lee Mac 2010
(entmakex
(append
(list
(cons 0 "LWPOLYLINE")
(cons 100 "AcDbEntity")
(cons 100 "AcDbPolyline")
(cons 90 4)
(cons 70 1)
(cons 38 (caddr ll))
(cons 210 norm)
)
(mapcar '(lambda ( p ) (cons 10 p))
(
(lambda ( data )
(mapcar
'(lambda ( funcs )
(mapcar
'(lambda ( func )
((eval func) data)
)
funcs
)
)
'((caar cadar) (caadrcadar)
(caadr cadadr) (caarcadadr))
)
)
(mapcar '(lambda ( p ) (trans p 1 norm))
(list ll ur)
)
)
)
)
)
)
直接从我的工具箱里。。。
(defun c:SQ (/ foo p1 pt w h p2 ent)
;; Draw square polygon at specified height and width (with option to rotate)
;; Alan J. Thompson
(defun foo (p) (list 10 (car p) (cadr p)))
(if (and (setq p1 (getpoint "\nSpecify NorthWest corner of rectangle: "))
(setq w (getdist "\nSpecify width: "))
(setq h (cond ((getdist (strcat "\nSpecify height <" (rtos w) ">: ")))
(w)
)
)
)
(progn
(setq p2 (polar (setq pt (trans p1 1 0)) 0. w))
(if (setq ent (entmakex
(append (list '(0 . "LWPOLYLINE") '(100 . "AcDbEntity") '(100 . "AcDbPolyline")
'(90 . 4) '(70 . 1)
)
(mapcar 'foo
(list pt p2 (polar p2 (* 1.5 pi) h) (polar pt (* 1.5 pi) h))
)
)
)
)
(command "_.rotate" ent "" "_non" p1 "_r" "_non" p1 "_non" (trans p2 0 1))
)
)
)
(princ)
) 哎呀,李,我没注意到你发了什么帖子。顺便问一下,你的矩形和命令矩形有什么不同吗(除了它与当前UCS角度不匹配并且始终与视图平行之外)?
没有区别-只是实验。这就是getcorner的问题。。。
页:
[1]
2