明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 88|回复: 1

[讨论] 钣金明装箱LISP代码分享

[复制链接]
发表于 5 小时前 | 显示全部楼层 |阅读模式
钣金明装箱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-0  6.5  "")
(command "circle" p-1  6.5  "")
(command "circle" p-2  6.5  "")  
(command "circle" p-3  6.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 10  a b) (cons 40 16.0) (cons 100 "AcDbArc") (cons 50  1.60205) (cons  51  4.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 50  4.77493) (cons  51  1.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-4  3.5  "")
(command "circle" p-5  3.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);防止回显


       )



本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
回复

使用道具 举报

发表于 1 小时前 | 显示全部楼层
感谢大佬分享
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-25 23:35 , Processed in 0.163782 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表