明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: wuyidebh

大家帮我看看这个怎么实现,谢谢

  [复制链接]
发表于 2005-12-30 21:16 | 显示全部楼层
必须关闭捕捉
发表于 2005-12-31 10:27 | 显示全部楼层

这样一个画标准件的程序应该越简单越好.要求输入那么多的参数,这样LISP显示不出它的长处了.

下面是依据相关标准制作的内六角螺钉程序,只需用户输入起点与终点和螺丝直径即可.其它由程序决定.

注意:使用以下程序需要你的CAD文档中具有相关图层(虚线和细实线这两个图层)及相关的多线样式(standard).

;;;内六角螺钉程序
(defun c:nd()
  (setq pt1 (getpoint "\n 请输入起点:"))
  (setq pt2 (getpoint pt1 "\n 请输入终点:"))
  (setq d (getdist "\n 请输入螺栓直径d<10>:"))
  (setq YH_osmode (getvar "osmode"))
  (setvar "osmode" 0)
  (if (null d) (setq d 10))
  (setq ang (angle pt1 pt2))
  (setq pt3 (polar pt2 (+ ang pi) (* d 0.075)))
  (setq pt4 (polar pt1 (+ ang pi) d))
  (setq pt5 (polar pt3 (+ ang (* pi 0.5)) (* d 0.5)))
  (setq pt6 (polar pt2 (+ ang (* pi 0.5)) (* d 0.425)))
  (setq pt7 (polar pt2 (+ ang (* pi 1.5)) (* d 0.425)))
  (setq pt8 (polar pt3 (+ ang (* pi 1.5)) (* d 0.5)))
  (setq pt9 (polar pt4 ang (* d 0.4)))
  (setq pt10 (polar pt4 ang (* d 0.45)))
  (cond ((= d 2.5) (setq e 2.3) (setq dk 4.5))
 ((= d 3) (setq e 2.87) (setq dk 5.3))
 ((= d 4) (setq e 3.44) (setq dk 7))
 ((= d 5) (setq e 4.58) (setq dk 8.5))
 ((= d 6) (setq e 5.72) (setq dk 10))
 ((= d 8) (setq e 6.86) (setq dk 13))
 ((= d 10) (setq e 9.15) (setq dk 16))
 ((= d 12) (setq e 11.43) (setq dk 18))
 ((= d 14) (setq e 13.72) (setq dk 21))
 ((= d 16) (setq e 16) (setq dk 24))
 (t (setq e 9.15) (setq dk 16))
  )
  (setq pt11 (polar pt10 (+ (* 0.5 pi) ang) (* e 0.375)))
  (setq pt12 (polar pt10 (+ (* 1.5 pi) ang) (* e 0.375)))
  (setq pt13 (polar pt9 (+ (* 0.5 pi) ang) (* e 0.5)))
  (setq pt14 (polar pt9 (+ (* 0.5 pi) ang) (* e 0.25)))
  (setq pt15 (polar pt9 (+ (* 1.5 pi) ang) (* e 0.25)))
  (setq pt16 (polar pt9 (+ (* 1.5 pi) ang) (* e 0.5)))
  (setq pt17 (polar pt1 (+ (* 0.5 pi) ang) (* dk 0.5)))
  (setq pt18 (polar pt1 (+ (* 1.5 pi) ang) (* dk 0.5)))
  (setq pt19 (polar pt18 (+ pi ang) d))
  (setq pt20 (polar pt17 (+ pi ang) d))
    ;;;下面开始绘制
  (command "mline" "j" "z" "s" (* d 0.85) "st" "k" pt1 pt2 "")
  (command "change" (entlast) "" "p" "la" "细实线" "")
  (command "mline" "j" "z" "s" d "st" "standard" pt1 pt3 "")
  (command "mline" "j" "z" "s" e "st" "standard" pt4 pt9 "")
  (command "change" (entlast) "" "p" "la" "虚线" "")
  (command "mline" "j" "z" "s" (* e 0.5) "st" "k" pt4 pt9 "")
  (command "change" (entlast) "" "p" "la" "虚线" "")
  (command "pline" pt13 "a" "s" pt11 pt14 "s" pt10 pt15 "s" pt12 pt16 "")
  (command "change" (entlast) "" "p" "la" "虚线" "")
  (command "pline" pt5 "w" 0 "" pt5 pt6 pt7 pt8 "c")
  (command "pline" pt17 "w" 0 "" pt20 pt19 pt18 "")
  (command "fillet" "r" (* d 0.1) "")
  (command "fillet" "p" (entlast))
  (command "line" pt17 pt18 "" "line" pt11 pt12 "")
  (command "change" (entlast) "" "p" "la" "虚线" "")
  (command "pline" pt13 (polar pt9 ang (* (* e 0.5) (/ (sin (/ pi 6)) (cos (/ pi 6))))) pt16 "")
  (command "change" (entlast) "" "p" "la" "虚线" "")
  (setvar "osmode" YH_osmode)
  (princ)
)

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

本版积分规则

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

GMT+8, 2024-5-17 21:34 , Processed in 0.171273 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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