钣金明装箱LISP代码分享
钣金明装箱LISP代码分享,欢迎大家分享和讨论,共同进步。;绘制明箱程序:mx1(初始版本)
;作者:ljm
;日期:2025年1月8日22:13:53
;修改:00
;;;===============================【箱体】
(defun c:mx1()
(setq h (getreal "\n请输入箱体高度:" ))
(setq w (getreal "\n请输入箱体宽度:" ))
(setq d (getreal "\n请输入箱体深度:" ))
(setq h1 (- h 83))
(setq w1 (+ w (* (- d 3.5) 2)))
(setq p0 (getpoint "\n请确定起点"))
(setq p1 p0
x1 (car p1)
y1 (cadr p1)
x2 (- (car p1) 30) ;取p1点x的坐标值,并减去30赋予给x2
y2 (+ (cadr p1) 30);取p1点y的坐标值,并加上30赋予给y2
p2 (list x2 y2) ;将x2,y2的值赋予给p2点
x3 (- x2 17)
y3 y2
p3 (list x3 y3)
x4 (- x3 10)
y4 (+ y3 10)
p4 (list x4 y4)
x5 x4
y5 (+ y4 h1)
p5 (list x5 y5)
x6 (+ x5 10)
y6 (+ y5 10)
p6 (list x6 y6)
x7 (+ x6 17)
y7 y6
p7 (list x7 y7)
x8 (+ x7 30)
y8 (+ y7 30)
p8 (list x8 y8)
x9 (+ x8 w1)
y9 y8
p9 (list x9 y9)
x10 (+ x9 30)
y10 (- y9 30)
p10 (list x10 y10)
x11 (+ x10 17)
y11 y10
p11 (list x11 y11)
x12 (+ x11 10)
y12 (- y11 10)
p12 (list x12 y12)
x13 x12
y13 (-y12 h1)
p13 (list x13 y13)
x14 (- x13 10)
y14 (- y13 10)
p14 (list x14 y14)
x15 (- x14 17)
y15 y14
p15 (list x15 y15)
x16 (- x15 30)
y16 (- y15 30)
p16 (list x16 y16)
x17 (- x16 w1)
y17 y16
p17 (list x17 y17)
)
(setq osm (getvar "OSMODE"))
(setvar "osmode" 0)
(command "LINE" p1 p2 p3 p4 p5 p6 p7 p8 p9 p10 p11 p12 p13 p14 p15 p16 p17 "")
;左下腰孔
(setq new-ent (list (cons 0 "LWPOLYLINE") (cons 100"AcDbEntity")(cons 100 "AcDbPolyline") (cons 90 5)
(list 10 (- X2 7) (+ Y2 8.5 )) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (- X2 2) (+ Y2 8.5 )) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (- X2 2) (+ y2 12.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (- X2 7) (+ y2 12.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (- X2 7) (+ y2 8.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 ))
)
(entmake new-ent)
;左上腰孔
(setq new-ent1 (list (cons 0 "LWPOLYLINE") (cons 100"AcDbEntity")(cons 100 "AcDbPolyline") (cons 90 5)
(list 10 (- X7 7) (- y7 12.5 )) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (- X7 2) (- y7 12.5 )) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (- X7 2) (- y7 8.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (- X7 7) (- y7 8.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (- X7 7) (- y7 12.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 ))
)
(entmake new-ent1)
;右上腰孔
(setq new-ent2 (list (cons 0 "LWPOLYLINE") (cons 100"AcDbEntity")(cons 100 "AcDbPolyline") (cons 90 5)
(list 10 (+ X10 2) (- y10 12.5 )) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (+ X10 7) (- y10 12.5 )) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (+ X10 7) (- y10 8.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (+ X10 2) (- y10 8.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (+ X10 2) (- y10 12.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 ))
)
(entmake new-ent2)
;右下腰孔
(setq new-ent3 (list (cons 0 "LWPOLYLINE") (cons 100"AcDbEntity")(cons 100 "AcDbPolyline") (cons 90 5)
(list 10 (+ X15 2) (+ y15 8.5 )) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (+ X15 7) (+ y15 8.5 )) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (+ X15 7) (+ y15 12.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (+ X15 2) (+ y15 12.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (+ X15 2) (+ y15 8.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 ))
)
(entmake new-ent3)
(setq p-0 (list (+ (+ x8 (- d 3.5)) 25) (- y8 23.5))
p-1 (list (- (- x9 (- d 3.5)) 25) (- y9 23.5))
p-2 (list (- (- x16 (- d 3.5)) 25) (+ y16 23.5))
p-3 (list (+ (+ x1 (- d 3.5)) 25) (+ y1 23.5)) ;确定明装孔位置,
)
(command "circle" p-06.5"")
(command "circle" p-16.5"")
(command "circle" p-26.5"")
(command "circle" p-36.5"");绘制明装孔
;================================= 【堵头】
(setq x18 (+ x16 257)
y18 y16
p18 (list x18 y18)
x19 x18
y19 (+ y18 10)
p19 (list x19 y19)
x20 (- x19 10)
y20 y19
p20 (list x20 y20)
x21 x20
y21 (+ y20 (- d 15))
p21 (list x21 y21)
x22 (+ x21 40)
y22 (+ y21 40)
p22 (list x22 y22)
x23 x22
y23 (+ y22 17)
p23 (list x23 y23)
x24 (+ x23 10)
y24 (+ y23 10)
p24 (list x24 y24)
x25 (+ x24(- w 83))
y25 y24
p25 (list x25 y25)
x26 (+ x25 10)
y26 (- y25 10)
p26 (list x26 y26)
x27 x26
y27 (- y26 17)
p27 (list x27 y27)
x28 (+ x27 40)
y28 (- y27 40)
p28 (list x28 y28)
x29 x28
y29 ( - y28 (- d 15))
p29 (list x29 y29)
x30 (- x29 10)
y30 y29
p30 (list x30 y30)
x31 x30
y31 (-y30 10)
p31 (list x31 y31)
x32 (- x31 (- w 3))
y32 y31
p32 (list x32 y32)
)
(command "line" p18 p19 p20 p21 p22 p23 p24 p25 p26 p27 p28 p29 p30 p31 p32 "") ;根据点坐标绘制堵头
;………………………………【堵头左横腰孔】
(setq new-ent4 (list (cons 0 "LWPOLYLINE") (cons 100"AcDbEntity")(cons 100 "AcDbPolyline") (cons 90 5)
(list 10 (+ x22 8.5) (+ y22 2 )) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (+ x22 12.5) (+ y22 2)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (+ x22 12.5) (+ y22 7)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (+ x22 8.5) (+ y22 7)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (+ x22 8.5) (+ y22 2)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 ))
)
(entmake new-ent4)
;…………………………………………堵头右横腰孔】
(setq new-ent5 (list (cons 0 "LWPOLYLINE") (cons 100"AcDbEntity")(cons 100 "AcDbPolyline") (cons 90 5)
(list 10 (- x27 12.5) (+ y27 2 )) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (- x27 8.5) (+ y27 2)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (- x27 8.5) (+ y27 7)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (- x27 12.5) (+ y22 7)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (- x27 12.5) (+ y22 2)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 ))
)
(entmake new-ent5)
;………………………………………………………………【敲落孔】
(setq n ( fix (/ (- w 117) 80))) ;敲落孔个数,箱体宽度-117/80取整数
(setq a (+ x19 58.5)
b (+ y19 36) )
(setq n (+ n 1))
(repeat n ;循环次数
(setq new-ent6 (list (cons 0"ARC") (cons 100 "AcDbEntity") (cons 100 "AcDbCircle") (list 10a b) (cons 40 16.0) (cons 100 "AcDbArc") (cons 501.60205) (cons514.64985) )
);左半部分敲落孔
(entmake new-ent6);根据表信息生成图元
(setq new-ent7(list (cons 0"ARC") (cons 100 "AcDbEntity") (cons 100 "AcDbCircle") (list 10 a b) (cons 40 16.0) (cons 100 "AcDbArc") (cons 504.77493) (cons511.53954) )
);右半部分敲落孔
(entmake new-ent7)
(setq a (+ a 80))
)
;================================= 【门板】
(setq x33 (+ x31 200) ;给点取值
y33 y31
p33 (list x33 y33)
x34 x33
y34 (+ y33 17)
p34 (list x34 y34)
x35 (- x34 17 )
y35 y34
p35 (list x35 y35)
x36 x35
y36 (+ y35 (- h 68 ))
p36 (list x36 y36)
x37 (+ x36 17)
y37 y36
p37 (list x37 y37)
x38 x37
y38 (+ y37 17)
p38 (list x38 y38)
x39 (+ x38 (- (- w 67)8))
y39 y38
p39 (list x39 y39)
x40 (+ x39 8)
y40 (- y39 7)
p40 (list x40 y40)
x41 x40
y41 (- y40 10)
p41 (list x41 y41)
x42 (+ x41 10)
y42 y41
p42 (list x42 y42)
x43 x42
y43 (- y42 (- h 68))
p43 (list x43 y43)
x44 (- x43 10)
y44 y43
p44 (list x44 y44)
x45 x44
y45 (- y44 10)
p45 (list x45 y45)
x46 (- x45 8)
y46 (- y45 7)
p46 (list x46 y46)
x47 (- x46 (- (- w 67)8))
y47 y46
p47 (list x47 y47)
)
(command "line" p33 p34 p35 p36 p37 p38 p39 p40 p41 p42 p43 p44 p45 p46 p47 "");根据坐标绘制门板外形轮廓
;…………………………………………………………【合页孔】
(setq p-4 (list (- x41 6.5) (+ y41 6.5))
p-5 (list (- x44 6.5) (- y44 6.5));定位圆心点
)
(command "circle" p-43.5"")
(command "circle" p-53.5"");绘制合页孔
;…………………………………………【画锁孔】
(setq x48 (+ x34 33.5)
y48 (+ y34 (- (/ (- h 68) 2) 31))
p48 (list x48 y48)
x49 (+ x48 23)
y49 y48
p49 (list x49 y49)
x50 x49
y50 (+ y49 62)
p50 (list x50 y50)
x51 (- x50 23)
y51 y50
p51 (list x51 y51)
x52 x51
y52 (- y51 62)
p52 (list x52 y52)
)
(command "line" p48 p49 p50 p51 p52 "");绘制长条锁孔AB403
;===============================【底板】
(setq x52 (+ x46 200)
y52 y46
p52 (list x52 y52)
x53 x52
y53 (+ y52 10)
p53 (list x53 y53)
x54 (- x53 10)
y54 y53
p54 (list x54 y54)
x55 x54
y55 (+ y54 (- h 90))
p55 (list x55 y55)
x56 (+ x55 10)
y56 y55
p56 (list x56 y56)
x57 x56
y57 (+ y56 10)
p57 (list x57 y57)
x58 (+ x57 (- w 90))
y58 y57
p58 (list x58 y58)
x59 x58
y59 (- y58 10)
p59 (list x59 y59)
x60 (+ x59 10)
y60 y59
p60 (list x60 y60)
x61 x60
y61 (- y60 (- h 90))
p61 (list x61 y61)
x62 (- x61 10)
y62 y61
p62 (list x62 y62)
x63 x62
y63 (- y62 10)
p63 (list x63 y63)
x64 (- x63 (- w 90))
y64 y63
p64 (list x64 y64)
)
(command "line" p52 p53 p54 p55 p56 p57 p58 p59 p60 p61 p62 p63 p64 "")
;……………………………………(底板腰孔)
;竖孔
(setq new-ent8 (list (cons 0 "LWPOLYLINE") (cons 100"AcDbEntity")(cons 100 "AcDbPolyline") (cons 90 5)
(list 10 (+ X53 10.5) (+ Y53 10.5 )) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (+ x53 19.5) (+ Y53 10.5 )) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (+ x53 19.5) (+ y53 19.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (+ x53 10.5) (+ y53 19.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (+ x53 10.5) (+ y53 10.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 ))
)
(entmake new-ent8)
;横孔
(setq new-ent9 (list (cons 0 "LWPOLYLINE") (cons 100"AcDbEntity")(cons 100 "AcDbPolyline") (cons 90 5)
(list 10 (+ x56 10.5) (- y56 19.5 )) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (+ x56 19.5) (- y56 19.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (+ x56 19.5) (- y56 10.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (+ x56 10.5) (- y56 10.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (+ x56 10.5) (- y56 19.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 ))
)
(entmake new-ent9)
;竖孔
(setq new-ent10 (list (cons 0 "LWPOLYLINE") (cons 100"AcDbEntity")(cons 100 "AcDbPolyline") (cons 90 5)
(list 10 (- X59 19.5) (- Y59 19.5 )) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (- x59 10.5) (- Y59 19.5 )) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (- x59 10.5) (- y59 10.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (- x59 19.5) (- y59 10.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (- x59 19.5) (- y59 19.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 ))
)
(entmake new-ent10)
;横孔
(setq new-ent11 (list (cons 0 "LWPOLYLINE") (cons 100"AcDbEntity")(cons 100 "AcDbPolyline") (cons 90 5)
(list 10 (- x62 19.5) (+ y62 10.5 )) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (- x62 10.5) (+ y62 10.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (- x62 10.5) (+ y62 19.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 )
(list 10 (- x62 19.5) (+ y62 19.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 1.0 ) (cons 91 0.0 )
(list 10 (- x62 19.5) (+ y62 10.5)) (cons 40 0.0 ) (cons 41 0.0 ) (cons 42 0.0 ) (cons 91 0.0 ))
)
(entmake new-ent11)
(setvar "osmode" osm);打开捕捉
(princ);防止回显
)
advksf 发表于 2025-2-26 09:20
试了一下,程序好像只有箱体的展开指定起点后,展开然后程序提示 指定下一点或 [角度(A)/长度(L)/闭合(C) ...
感谢您的意见,本人使用的是2010版本,其他版本的没有进行测试。在这希望和大家共同交流,共同进步。 试了一下,程序好像只有箱体的展开指定起点后,展开然后程序提示 指定下一点或 [角度(A)/长度(L)/闭合(C)/放弃(U)]:
; 错误: DXF 组不正确: (91 . 0.0) 浩辰2025 提示, CAD2018可以展开全部 advksf 发表于 2025-2-26 09:20
试了一下,程序好像只有箱体的展开指定起点后,展开然后程序提示 指定下一点或 [角度(A)/长度(L)/闭合(C) ...
版本问题,旧版cad多段线没有91组码。 感谢大佬分享 感謝大佬分享 感谢大佬分享! 感谢大佬分享 实际效果!
有备无患,防止有些东西拿不到
页:
[1]
2