明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 7224|回复: 17

怎样画三维螺母

[复制链接]
发表于 2015-2-5 12:03 | 显示全部楼层 |阅读模式


文中详述了三维螺母的构建过程,并附了源程序代码可供读者参考。

该贴已经同步到 ocoipw的微博

本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 金钱 +6 收起 理由
e2002 + 1 + 6 很给力!

查看全部评分

发表于 2018-9-11 23:37 | 显示全部楼层
本帖最后由 dbdr 于 2018-9-11 23:38 编辑

凑个热闹,发个蜗轮蜗杆:

坛子不支持视频,这么多年没进步。只能压成RAR了。

本帖子中包含更多资源

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

x
发表于 2020-7-8 19:58 | 显示全部楼层
楼主好水平,辛苦辛苦!
发表于 2020-1-14 08:32 | 显示全部楼层
太棒了 谢谢楼主的资
 楼主| 发表于 2015-2-5 12:06 | 显示全部楼层
本图片由陋室清风老师渲染。
 楼主| 发表于 2015-2-5 15:17 | 显示全部楼层
ocoipw 发表于 2015-2-5 12:06
本图片由陋室清风老师渲染。

(defun c:luomu6170(/ data_list aa bz d d1 dd2 dist e1 e10 e2 e3 e4 e5 e6 e7 e8 e9 eL1 en en1 en2 h1 HH1 LL1 LL3 LL4 M m1 p1 p10 p2 p3 p7 p8 p9 pdm1 pdm2 pdm3 pdm4 pds1 pds2 pds3 pds4 pds5 pe pe1 pm1 pm2 ps ps1 rr s1 txt1 vm wt xobj)
  (setvar "cmdecho" 0)
  (setvar "blipmode" 0)
  (setvar "delobj" 1)
  (vl-load-com)
  (initget
  "1.6 2 2.5 3 3.5 4 5 6 8 10 12 14 16 18 20 22 24 27 30 33 36 39 42 45 48 52 56 60 64 72 80 90 100 110"
  )
  (setq    MMM (getkword
     "\n请输入国标(GB/T6170-2000)六角螺母规格(括号内为非优选的规格,首次运行必输入一个数值!!!)\nM:[1.622.533.54 5681012(14)16(18)20(22)24(27)30(33)36(39)42(45)48(52)56(60)64728090100110] <默认>:"
  )
  )
(if
      (= MMM nil)     ;;;;此处必须用nil不能用""
      (setq MM MM);;;;MM不能设为局部变量!!!
      (setq MM MMM)
    )
    (setq M MM)
    (setq M (atof M))
    (cond
     ((= M 1.6) (setq data_list '(1.6 3.41 0.2528 0.1459 1.3 3.2 0.14 0.15)))
     ((= M 2) (setq data_list '(2 4.32 0.3202 0.1849 1.6 4 0.18 0.19)))
     ((= M 2.5) (setq data_list '(2.5 5.45 0.404 0.2332 2 5 0.22 0.23)))
     ((= M 3) (setq data_list '(3 6.01 0.4455 0.2572 2.4 5.5 0.26 0.28)))
     ((= M 3.5) (setq data_list '(3.5 6.58 0.4877 0.2816 2.8 6 0.31 0.33)))
     ((= M 4) (setq data_list '(4 7.66 0.5678 0.3278 3.2 7 0.35 0.38)))
     ((= M 5) (setq data_list '(5 8.79 0.6515 0.3762 4.7 8 0.44 0.47)))
     ((= M 6) (setq data_list '(6 11.05 0.819 0.4729 5.2 10 0.53 0.56)))
     ((= M 8) (setq data_list '(8 15.0111 1.1127 0.6424 6.8 13 0.7 0.75)))
     ((= M 10) (setq data_list '(10 18.4752 1.2379 0.7147 8.4 16 0.99 1)))
     ((= M 12) (setq data_list '(12 20.7846 2.9506 1.7035 10.8 18 1.48 1.5)))
     ((= M 14) (setq data_list '(14 24.2487 3.4423 2.2999 12.8 21 1.48 1.5)))
     ((= M 16) (setq data_list '(16 27.7128 3.9341 2.6285 14.8 24 1.48 1.5)))
     ((= M 18) (setq data_list '(18 31.1769 4.4258 2.957 15.8 27 1.48 1.5)))
     ((= M 20) (setq data_list '(20 34.641 4.9176 3.2856 18 30 1.48 1.5)))
     ((= M 22) (setq data_list '(22 39.2598 5.5733 3.7237 19.4 34 1.48 1.5)))
     ((= M 24) (setq data_list '(24 41.5692 5.9011 3.9427 21.5 36 1.98 2)))
     ((= M 27) (setq data_list '(27 47.3427 6.7207 4.4903 23.8 41 1.98 2)))
     ((= M 30) (setq data_list '(30 53.1162 7.5403 5.0379 25.6 46 1.98 2)))
     ((= M 33) (setq data_list '(33 57.735 8.196 5.476 28.7 50 1.98 2)))
     ((= M 36) (setq data_list '(36 63.5085 9.0156 6.0236 31 55 2.97 3)))
     ((= M 39) (setq data_list '(39 69.282 9.8352 6.5712 33.4 60 2.97 3)))
     ((= M 42) (setq data_list '(42 75.0555 10.6548 7.1188 34 65 2.97 3)))
     ((= M 45) (setq data_list '(45 80.829 11.4744 7.6664 36 70 2.97 3)))
     ((= M 48) (setq data_list '(48 86.6025 12.294 8.214 38 75 2.97 3)))
     ((= M 52) (setq data_list '(52 92.376 13.1136 8.7616 42 80 3.96 4)))
     ((= M 56) (setq data_list '(56 98.1495 13.9332 9.3092 45 85 3.96 4)))
     ((= M 60) (setq data_list '(60 103.923 14.7528 9.8568 48 90 3.96 4)))
     ((= M 64) (setq data_list '(64 109.6966 15.5724 10.4044 51 95 3.96 4)))
      ;;;;以下数据为参考“发电厂汽水管道支架设计手册(D-ZD2010)”中的数据
     ((= M 72) (setq data_list '(72 121.2436 8.9868 5.1885 58 105 4.4 4.79)))
     ((= M 80) (setq data_list '(80 132.7906 9.8427 5.6827 64 115 4.93 5.32)))
     ((= M 90) (setq data_list '(90 150.1111 11.1265 6.4239 72 130 5.54 5.99)))
     ((= M 100) (setq data_list '(100 167.4316 12.4104 7.1651 80 145 6.16 6.65)))
     ((= M 110) (setq data_list '(110 178.9786 13.2662 7.6593 88 155 6.78 7.32)))
  )
(setq d1 (nth 0 data_list))
(setq eL1 (nth 1 data_list))
(setq HH1 (nth 2 data_list))
(setq LL1 (nth 3 data_list))
(setq m1 (nth 4 data_list))
(setq s1 (nth 5 data_list))
(setq LL3 (nth 6 data_list))
(setq h1 (nth 7 data_list));;螺旋线的螺距
(setq ps (getpoint "\n起点:"))
(setvar "osmode" 0)  ;很关键,否则画线时容易出错
(setq rr (/ s1 2.0))
(setq pe (polar ps 0 m1))
(setq p1 (polar ps (/ PI 2) (/ s1 2.0)))
(setq p2 (polar p1 (/ PI 2) HH1))
(setq p3 (polar p2 0 LL1))
(setq pm1 (polar ps 0 (/ m1 2.0)))
(setq pm2 (polar pm1 (/ PI 2) (/ eL1 2.0)))
(command "polygon" 6 ps "c" rr)
(setq e1 (entlast))
(command "rotate" e1 "" ps 90)
(command "rotate3d" e1 "" "y" ps 90)
(command "extrude" e1 "" m1)
(setq e1 (entlast))
(command "pline" p1 p2 p3 "c")
(setq e2 (entlast))
(command "revolve" e2 "" ps pe 360 )
(setq e2 (entlast))
(command "mirror" e2 "" pm1 pm2 "n" )
(setq e3 (entlast))
(command "union" e2 e3 "")
(command "subtract" e1 "" e2 "")
(command "line" ps pe "")
(setq e2 (entlast))
(command "circle" ps "d" d1)
(setq e3 (entlast))
(command "sweep" e3 "" e2)
(setq e4 (entlast))
(command "subtract" e1 "" e4 "")
(command "erase" e2 "")
;;;  绘制螺纹
(setq p7 (polar pe (/ PI 2) (/ d1 2.0)))
(setq p8 (polar p7 PI (/ LL3 2)))
(setq p9 (polar p8 0 LL3))
(setq p10 (polar p8 (/ (* 300 PI) 180) LL3))
(setq ps1 (polar ps PI LL3))
(setq pe1 (polar pe 0 LL3))
(setq dist (distance ps1 pe1))
(setq aa (/ (* 30 PI) 180))
(setq LL4 (/ (* 0.5 LL3 (cos aa)) (sin aa)))
(setq dd2 (+ d1 LL4 LL4))
(setvar "cecolor" "2")
(command "line" ps1 pe1 "")
(setq e5 (entlast))
(command "circle" ps "d" dd2)
(setq e6 (entlast))
(command "sweep" e6 "" e5)
(setq e7 (entlast))
(command "erase" e5 "")
(command "pline" p8 p9 p10 "c")
(setq e8 (entlast))
(command "rotate3d" e8 "" "x" p7 90)
(command "helix" pe1 (/ dd2 2.0) (/ dd2 2.0) "H" h1 "T" (/ dist h1))
(setq e9 (entlast))
(command "rotate3d" e9 "" "y" pe1 270)
(command "sweep" e8 "" "B" p7 "A" "N" e9)
(setq e10 (entlast))
(command "subtract" e7 "" e10 "")
(command "subtract" e1 "" e7 "")
(command "erase" e9 "")
;;;标尺寸
  (setq pds1 (polar ps (/ (* 3 PI) 2) (/ s1 2.0)))
  (setq pds2 (polar ps (/ (* 3 PI) 2) (/ eL1 2.0)))
  (setq pds3 (polar ps (/ PI 2) (/ eL1 2.0)))
  (setq pds4 (polar pe (/ PI 2) (/ d1 2.0)))
  (setq pds5 (polar pe (/ (* 3 PI) 2) (/ d1 2.0)))
  (setq pdm1 (polar ps PI (/ m1 2)));;;标尺寸用
  (setq pdm2 (polar ps PI m1));;;标尺寸用
  (setq pdm3 (polar pe 0 (/ m1 2)));;;标尺寸用
  (setq pdm4 (polar pm1 (/ (* 3 PI) 2) (* 0.8 s1)));;;标尺寸用
  (setq pdm5 (polar pdm4 (/ (* 3 PI) 2) (* 0.5 d1)));;;写文本
  (setvar "cecolor" "1")
(command "dim" "ver" p1 pds1 pdm1 "" "e")
(command "dim" "ver" pds2 pds3 pdm2 "" "e")
(command "dim" "ver" pds4 pds5 pdm3 "" "e")
(command "dim" "hor" ps pe pdm4 "" "e")
  ;;;求重量
  (setq bz 7.85);;;;钢的比重
  (setq en (entget e1))
  (setq en1 (car en))
  (setq en2 (cdr en1))
  (setq xobj (vlax-ename->vla-object en2)) ;转换enamevla对象
  (setq vm (vla-get-volume xobj))   ;  直接取得对象体积mm3
  (setq vm (/ vm 1000000.0));;;;转换成立方分米:dm3
  (setq wt (* bz vm))
  (setq txt1 (strcat "M" (rtos M) " 重量:" (rtos wt 2 3) "kg"))
  (command "text" "J" "BC" pdm5 (* 0.08 eL1) 0 txt1 )
  (setvar "osmode" 527)
   (setvar "cecolor" "bylayer")
  (prompt "\n已绘制一个螺母")
  (prin1)
)
(prompt "绘制螺母程序,命令行输入luomu6170")
(prin1)
发表于 2015-2-5 16:00 | 显示全部楼层
感谢 ocoipw 分享程序!
发表于 2015-3-15 13:52 | 显示全部楼层
曾经也画过




本帖子中包含更多资源

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

x
发表于 2015-3-21 21:29 | 显示全部楼层
多谢分享!下载备用。
 楼主| 发表于 2015-3-23 00:21 | 显示全部楼层
newdhj 发表于 2015-3-15 13:52
曾经也画过

这个生锈的螺栓做得太好了
发表于 2015-3-23 17:29 | 显示全部楼层
本帖最后由 陋室清风 于 2015-3-23 17:43 编辑
ocoipw 发表于 2015-2-5 15:17
(defun c:luomu6170(/ data_list aa bz d d1 dd2 dist e1 e10 e2 e3 e4 e5 e6 e7 e8 e9 eL1 en en1 en2 h ...

程序不错,演示一下:


本帖子中包含更多资源

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

x
 楼主| 发表于 2015-3-23 17:59 | 显示全部楼层
陋室清风 发表于 2015-3-23 17:29
程序不错,演示一下:

哈哈!做得很有趣。点个赞!
发表于 2015-3-30 18:43 | 显示全部楼层
很不错的东东
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-4-25 01:03 , Processed in 0.211618 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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