找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 3064|回复: 30

[试用]:三维实体螺栓的绘制

[复制链接]
发表于 2004-11-18 14:40:54 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
(defun c:lsh(/ lsh_m ptst pten ptst_0 pten_0 lm_h lm_k ssa ssb ssc l)
    (if (= lsh_m_0 nil)
    (setq lsh_m_0 16))
    (princ "\n请输入螺栓规格M")(princ lsh_m_0)(princ ":")
  (setq lsh_m (getint))
  (if (= lsh_m nil)
    (setq lsh_m lsh_m_0)
    (setq lsh_m_0 lsh_m))
  (setq ptst (getpoint "\n请选择螺栓设计位置"))
  (setq pten (getpoint ptst "\n请选择螺栓另一设计位置"))
  (sta);;;
  (command "ucs" "p")
  (setq ptst_0 (trans ptst 1 0))  (setq pten_0 (trans pten 1 0));转换成世界坐标
  (command "ucs" "za" ptst pten);坐标系转换
  (setq ptst (trans ptst_0 0 1))  (setq pten (trans pten_0 0 1));转换成当前坐标
  (setq lm_h (* 0.8 lsh_m))
  (setq lm_k (* 1.6 lsh_m))
  (cond;;;螺母大小表
    ((= lsh_m 3)(setq lm_h 2.4 lm_k 5.5))
    ((= lsh_m 4)(setq lm_h 3.2 lm_k 7))
    ((= lsh_m 5)(setq lm_h 4.7 lm_k 8))
    ((= lsh_m 6)(setq lm_h 5.2 lm_k 10))
    ((= lsh_m 8)(setq lm_h 6.8 lm_k 13))
    ((= lsh_m 10)(setq lm_h 8.4 lm_k 16))
    ((= lsh_m 12)(setq lm_h 10.8 lm_k 18))
    ((= lsh_m 16)(setq lm_h 14.8 lm_k 24))
    ((= lsh_m 20)(setq lm_h 18 lm_k 30))
    ((= lsh_m 24)(setq lm_h 21.5 lm_k 36))
    ((= lsh_m 30)(setq lm_h 25.6 lm_k 46))
    ((= lsh_m 36)(setq lm_h 31 lm_k 55))
    ((= lsh_m 42)(setq lm_h 34 lm_k 65))
    ((= lsh_m 48)(setq lm_h 38 lm_k 75))
    ((= lsh_m 56)(setq lm_h 45 lm_k 85))
    ((= lsh_m 64)(setq lm_h 51 lm_k 95))
    )
  (setq lm_k (* 0.5 lm_k))
  (command "polygon" "6" ptst "c" lm_k)
  (command "extrude" "l" "" (* -1 lm_h) "0")
  (setq ssa (ssget "l"));;
  (command "polygon" "6" pten "c" lm_k)
  (command "extrude" "l" "" lm_h "0")
  (setq ssb (ssget "l"));;
  (command "circle" ptst (* 0.5 lsh_m))
  (setq l (+ lm_h lm_h (- (nth 2 pten) (nth 2 ptst))))
  (command "extrude" "l" "" l "0")
  (setq ssc (ssget "l"));;
  (command "union" ssa ssb ssc "");合并
  ;(command "ucs" "p")
  (end);;;
  (princ "\n已绘制螺栓:M")(princ lsh_m)(princ "*")(princ (fix l))
  (princ ",设计长度:")(princ (fix (- (nth 2 pten) (nth 2 ptst))))(princ"。")(princ)
  )
(defun sta();开始
    (command "undo" "be") ; 定义返回点
    (setvar "cmdecho" 0)  ; 关闭命令提示
    (setq osn (getvar "OSMODE"));记忆捕捉
    (setvar "OSMODE" 0)
    (if (= (getvar "ucsname") nil)
        (command "ucs" "s" "sl"); 记忆UCS
        (command "ucs" "s" "sl" "y")
     )
    (command "ucs" "w")
  )
(defun end();结束
  (command "ucs" "r" "sl"); 返回UCS
  (setvar "OSMODE" osn);恢复捕捉
  (command "undo" "e"); 定义返点
  (setvar "cmdecho" 1); 打开命令提示
  (princ)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-11-18 15:36:31 | 显示全部楼层
我用了一下,感觉很好

楼主很高可以编程画3D图形了,我还不会呢,看来需加油了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-11-19 12:47:00 | 显示全部楼层

谢谢

人懒都是这样的,一些标准零件都想一下搞定,所以哪个朋友写过类似的东西麻烦给几个,这里先谢谢了。
附个小东西
;;;;水杯制作
;;;;
(defun c:shuibei ( / k1 k2 d h pt00 pt01 pt10 pt11 pt12 pt20 pt21)         ; 水杯绘制
     (setq k1 (getint "请输入水杯口直径:" ))
     (setq k2 (getint "底部直径:" ))
     (setq d (getint "壁厚:" ))
     (setq h (getint "高度:" ))
     (setq co (getint "颜色:" ))
     (setq pt20 (getpoint "请指定位置:" ))
     (sta);***
     (setq pt10 (list (nth 0 pt20) (nth 1 pt20) (+ h (nth 2 pt20))))
     (setq pt11 (list (+ (* 0.5 k1) (nth 0 pt10)) (nth 1 pt10) (nth 2 pt10)))  
     (setq pt12 (list (- (nth 0 pt11) d) (nth 1 pt10) (nth 2 pt10)))
     (setq pt21 (list (+ (* 0.5 k2) (nth 0 pt20)) (nth 1 pt20) (nth 2 pt20)))  
     (setq pt00 (list (nth 0 pt20) (nth 1 pt20) (+ d (nth 2 pt20))))
     (setq pt01 (list (+ (- (* 0.5 k2) d) (nth 0 pt00)) (nth 1 pt00) (nth 2 pt00)))
     (command "3dpoly" pt00 pt01 pt12 pt11 pt21 pt20 "c")
     (command "revolve"        (ssget "l") "" pt00 pt10 "")
     (command "fillet" pt11 (* 0.2 d) "")
     (command "fillet" pt12 (* 0.2 d) "")
     (command "fillet" pt21 (* 0.3 d) "")
     (COMMAND "CHPROP" (ssget "l") "" "C" co "")
     (command "-view" "seiso")
     (COMMAND "shademode" "g")
     (end);***
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-19 16:34:42 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
楼主你哪个STA、END在什么地方,没有它们不好使呀!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
 楼主| 发表于 2004-11-20 10:50:34 | 显示全部楼层

STA END画螺栓的那个程序里就有的

拿上面的个用就可以了
;;;两点做圆管
(defun c:gu (/ guanr guand huanr lineroad road n num roadn ptsta ptend cylimax cylimin guanss)
    (princ "\n欢迎使用两点绘制圆管:")
    (princ  "\n请输入圆管直径")
    (if (/= exguanr nil)(princ exguanr))
    (princ ":")
    (setq guanr (getreal))
    (princ  "\n请输入壁厚")
    (if (/= exguand nil)(princ exguand))
    (princ ":")      
    (setq guand (getreal ))
    (princ "\n请选择两点:")
  (setq ptsta (getpoint))
  (setq ptend (getpoint ptsta))
    (if (= guanr nil)
        (setq guanr exguanr)
        (setq exguanr guanr))
    (if (= guand nil)
        (setq guand exguand)
        (setq exguand guand))
    (setq guanmaxr (* 0.5 guanr))
    (setq guanminr (- guanmaxr guand))
    (command "undo" "be") ; 定义返回点
    (setvar "cmdecho" 0)  ; 关闭命令提示
    (setq osn (getvar "OSMODE"));记忆捕捉
    (setvar "OSMODE" 0)
    (if (eq (getvar "ucsname") "sl")
        (command "ucs" "s" "sl" "y"); 记忆UCS
        (command "ucs" "s" "sl" "y")
     )
    (command "ucs" "w")                 
    (command "cylinder" ptsta guanmaxr "c" ptend)
    (setq cylimax (ssget "l"))                        
    (command "cylinder" ptsta guanminr "c" ptend)
    (setq cylimin (ssget "l"))                        
    (command "subtract" cylimax "" cylimin "")   
  (command "ucs" "r" "sl"); 返回UCS
  (command "undo" "e"); 定义返点
  (setvar "cmdecho" 1); 打开命令提示
  (setvar "OSMODE" osn);恢复捕捉
  (princ "总共绘制")
  (princ "1根长")(princ (fix (distance ptsta ptend))) (princ "mm的圆")(princ exguanr)(princ "*")(princ exguand)(princ "的圆管")
  
  (princ)
  )
;;;批量选择路径做圆管,直线,圆弧,圆
(defun c:guan (/ guanr guand huanr lineroad road n num roadn ptsta ptend cylimax cylimin guanss)
    (princ "\n欢迎使用圆管输入截面拉伸版:")
    (princ "\n路径只限于直线、弧线和圆")
    (princ  "\n请输入圆管直径")
    (if (/= exguanr nil)(princ exguanr))
    (princ ":")
    (setq guanr (getreal))
    (princ  "\n请输入壁厚")
    (if (/= exguand nil)(princ exguand))
    (princ ":")      
    (setq guand (getreal ))
    (princ "\n请选择路径:")
    (setq road (ssget));(list (cons 8 "ANXIS"))
    (setq num 0)
    (if (= guanr nil)
        (setq guanr exguanr)
        (setq exguanr guanr))
    (if (= guand nil)
        (setq guand exguand)
        (setq exguand guand))
    (setq guanmaxr (* 0.5 guanr))
    (setq guanminr (- guanmaxr guand))
    (command "undo" "be") ; 定义返回点
    (setvar "cmdecho" 0)  ; 关闭命令提示
    (setq osn (getvar "OSMODE"));记忆捕捉
    (setvar "OSMODE" 0)
    (if (eq (getvar "ucsname") "sl")
        (command "ucs" "s" "sl" "y"); 记忆UCS
        (command "ucs" "s" "sl" "y")
     )
    (command "ucs" "w")
    (setq n 0)                        
    (while (< n (sslength road)); 定义循环
    (setq roadn (ssname road n))      
    (setq n (1+ n))                    
        (cond
            ((= (cdr (assoc '0 (entget roadn))) "LINE" );路径为直线
             (setq lineroad roadn)
             (setq ptsta  (cdr (assoc '10 (entget lineroad))))   
             (setq ptend  (cdr (assoc '11 (entget lineroad))))   
             (command "cylinder" ptsta guanmaxr "c" ptend)
             (setq cylimax (ssget "l"))                        
             (command "cylinder" ptsta guanminr "c" ptend)
             (setq cylimin (ssget "l"))                        
             (command "subtract" cylimax "" cylimin "")
             (setq guanss (cons (ssget "l") guanss))
             (setq num (1+ num))
             )
            ((= (cdr (assoc '0 (entget roadn))) "ARC" );路径为弧线
             (setq arcroad roadn)
             (command "ucs" "ob" arcroad)
             (command "ucs" "x" "90")
             (setq pt (list (cdr(assoc '40 (entget arcroad))) 0 0))
             (command "circle" pt guanmaxr)
             (command "extrude" (ssget "l") "" "p" arcroad)
             (setq cylimax (ssget "l"))
             (command "circle" pt guanminr)
             (command "extrude" (ssget "l") "" "p" arcroad)
             (setq cylimin (ssget "l"))                          
             (command "subtract" cylimax "" cylimin "")
             (setq guanss (cons (ssget "l") guanss))
             (setq num (1+ num))
             )
            ((= (cdr (assoc '0 (entget roadn))) "CIRCLE" );路径为圆
             (setq cirroad roadn)
             (command "ucs" "ob" cirroad)
             (setq huanr (cdr (assoc '40 (entget cirroad))))
             (command "torus" "0,0,0" huanr guanmaxr)
             (setq cylimax (ssget "l"))
             (command "torus" "0,0,0" huanr guanminr)
             (setq cylimin (ssget "l"))
             (command "subtract" cylimax "" cylimin "")
             (setq guanss (cons (ssget "l") guanss))
             (setq num (1+ num))
            )
      ))
  (command "ucs" "r" "sl"); 返回UCS
  (command "undo" "e"); 定义返点
  (setvar "cmdecho" 1); 打开命令提示
  (setvar "OSMODE" osn);恢复捕捉
  (princ "总共绘制")
  (princ num)(princ "根")(princ exguanr)(princ "*")(princ exguand)(princ "的圆管")
  (princ)
  )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-1-31 14:39:49 | 显示全部楼层
1楼的程序画出来的怎么没有螺纹啊?能不能改进一下?谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-2-1 10:19:27 | 显示全部楼层
罗纹
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-2-1 20:09:04 | 显示全部楼层
请问7楼,你是用样条曲线做辅助线画的,还是用编程画的?能不能把你的程序贴出来和大家一起分享? 请指教!谢谢!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-2-3 21:38:31 | 显示全部楼层
请问螺母怎么画,主要是上下的倒圆角部分!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-23 17:33:19 | 显示全部楼层
请问,我怎么才能运行上面1楼的程序,让cad画图?很弱质,但是,我真得不懂
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-4-24 09:07:06 | 显示全部楼层
我用一楼的画出来,怎么没纹????光杆一根??
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-6-25 11:28:28 | 显示全部楼层
画个图还要会编程呀,我不会编程的呀,画不出了吗?有没有不用其它的东东直接在CAD里面画的方法呀?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-6-26 22:42:18 | 显示全部楼层
看不懂,
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-8-31 16:15:51 | 显示全部楼层
用1楼的方法做,没有螺纹啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-1 01:02:49 | 显示全部楼层
那些编程要怎么样才能正确加载到CAD里去呢?
谢谢了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-6-10 18:13 , Processed in 0.368417 second(s), 63 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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