代码切一个矩形刚马
大家好!我试图切一个多边形,但失败了。我希望每个人都能帮助我。我是autolisp的新成员。谢谢大家,祝大家度过愉快的一天;lisp ve MC ngang cong hop theo cac thong so cho truoc
;su dung toa do tuong doi@theo diem chon truoc
;p、 tkcd-cienco625
(定义c:ch(\ a b c)
(setvar“OSMODE”0)
;kich thuoc聪跃
(setq a(getreal“\NNhap CHIEU RONG cong hop:)
b(getreal“\NNhap CHIEU CAO cong hop:)
c(getreal“\nHap be rong vat mep trong:”)
)
;diem ve cong公司
(setq dv(getpoint“\NChon diem ve MC:”)
(setq dv1(列表(+(car dv)b)(+(cadr dv)a)))
(命令“.RECTANG”dv dv1)
(命令“.CHAMFER”距离“c”c)
(命令“.CHAMFER”“Polyline”“last”“”)
(普林斯) 也许这会有所帮助。
(命令“Chamfer”D“c c”)
(命令“Chamfer”“P”(entlast))
谢谢你,但我再次尝试代码,结果是:*错误:参数太少**
(defun c:chtest ( / a b c)
(setvar "OSMODE" 0)
(setq a (getreal "\NNhap CHIEU RONG cong hop:"))
(setq b (getreal "\NNhap CHIEU CAO cong hop:"))
(setq c (getreal "\NNhap be rong vat mep trong:"))
(setq dv (getpoint "\NChon diem ve MC:"))
(setq dv1 (list (+ (car dv) b) (+ (cadr dv) a)))
(command ".RECTANG" dv dv1)
(command ".CHAMFER" "Distance" c c)
(command ".CHAMFER" "P" (entlast))
(princ)
)
非常感谢 另一种方法是从第一个原则即8分,长度,宽度,倒角绘制。在lisp中使用polar。
谢谢大家,我正在试着画这个物体 如果还有什么其他的,操纵elist和entmod折线是很有趣的:
(defun C:test ( / SS d i )
(and (princ "\nSelect polylines to chamfer: ")
(setq SS (ssget "_:L" '((0 . "LWPOLYLINE"))))
(setq d (getdist "\nSpecify chamfer distance: "))
(repeat (setq i (sslength SS))
(_ChamferPoly (ssname SS (setq i (1- i))) d)
); repeat
); and
(princ)
); defun
; NOTE: it Straightens the bulges
(defun _ChamferPoly ( e d / enx pts L nenx )
(and
(setq enx (entget e))
(= "LWPOLYLINE" (cdr (assoc 0 enx)))
(setq pts (apply 'append (mapcar '(lambda (x) (if (= 10 (car x)) (list (cdr x)))) enx)))
(setq pts
(apply 'append
(mapcar '(lambda (x) (list (cons 10 x) '(40 . 0.0) '(41 . 0.0) '(42 . 0.0) '(91 . 0)))
(setq L
(cond
( (= 1 (cdr (assoc 70 enx)))
(apply 'append
(mapcar '(lambda (a b) (list (polar a (angle a b) d) (polar b (angle b a) d)))
pts (append (cdr pts) (list (car pts)))
)
)
)
(T
(apply 'append
(reverse
(cdr
(reverse
(mapcar '(lambda (a b) (list (polar a (angle a b) d) (polar b (angle b a) d)))
pts (append (cdr pts) (list (car pts)))
)
)
)
)
)
)
); cond
)
)
)
)
(setq nenx (apply 'append (mapcar '(lambda (x) (if (not (member (car x) '(10 40 41 42 91 210))) (list x))) enx)))
(entmod
(setq nenx
(append
(subst (cons 90 (length L)) (assoc 90 nenx) nenx)
pts
(list (assoc 210 enx))
)
)
)
); and
); defun _ChamferPoly
请阅读代码发布指南,并编辑代码以包含在代码标签中。
Your Code Here=
Your Code Here 外部对象可以用步骤来调用它,好的,画一个pline pick top vert side并回答几个问题,步骤被画成一条直线。
根据需要重复。是的,你需要Lisp程序。
有趣的是,这是一个带倒角的pline。代码可以通过使用双极化或使用sqrt 2*倒角@45的角度来减少。这样做的原因是显示你可以通过计算点来绘制任何形状。
(defun c:plcham ( / pt1 pt2 pt3 pt4 pt5 pt6 pt7 pt8 pt9 pt10 pt11 pt12)
(setq pi2 (/ pi 2.0))
(setq pi15 (* pi 1.5))
(setq pt1 (getpoint "Pick lower left"))
(setq l (getdist pt1 "Enter length"))
(setq w (getdist pt1 "Enter height"))
(setq cham (getdist "Enter champher"))
(setq cham2 (* cham 2.0))
(setq pt2 (polar Pt1 0.0 cham))
(setq pt3 (polar pt2 0.0 (- l cham2)))
(setq pt4 (polar pt3 0.0 cham))
(setq pt5 (polar pt4 pi2 cham))
(setq pt6 (polar pt5 pi2 (- w cham2)))
(setq pt7 (polar pt6 pi2 cham))
(setq pt8 (polar pt7 pi cham))
(setq pt9 (polar pt8 pi (- l cham2)))
(setq pt10 (polar pt9 pi cham))
(setq pt11 (polar pt10 pi15 cham))
(setq pt12 (polar pt11 pi15 (- w cham2)))
(command "pline" Pt2 pt3 pt5 pt6 pt8 pt9 pt11 pt12 "c")
(princ)
)
页:
[1]