生成法兰的原代码
(defunc:fl ()(setvar "cmdecho" 0)
(if (< (getvar "osmode") 16384)
(setvar "osmode" (+ (getvar "osmode") 16384))) ; F3关
;;输入参数
(setq zx( getpoint "\n 输入中心点:"))
(setq d1( getdist "\n 输入钢管外径:"))
(setq d3( getdist "\n 输入法兰外径:"))
;;判断螺栓分布直径
(while(not (and (setq
d2 (getdist zx"\n 输入螺栓分布直径:"))(< d1 d2 d3)))
(princ "\n错误!螺栓分布直径应在内外圆之间!"))
;;判断螺栓孔径
(while (not (and (setq d4 (getdist "\n 输入螺栓孔径:"))
(< d4 (/ (- d3 d1) 2))))
(princ "\n错误!螺栓孔径过大!"))
(setq n ( getint "\n 输入螺栓数量:"))
(setvar "dimcen" ( / d1 8));;;数值自定
(command"circle"zx (/ d1 2))
(command "_.dimcenter" (nentselp (polar zx Pi ( / d1 2))))
(command "layer" "m" "zx" "c" "r" "zx" "");建新图层
(command"circle"zx (/ d2 2))
(command "layer" "s" 0 "") ;恢复原图层
(command"circle"zx (/ d3 2))
(setq sa (/ pi n))
(setq p2 (polar zx sa (/ d2 2)))
(command"circle"p2 (/ d4 2)) ;;p2为螺栓孔中心
(command "_.array" (entlast) "" "p" zx n 360.0 "N")
(setq k1 (polar p2 (/ pi n) (- (/ d4 3 ))))
(setq k2 (polar p2 (/ pi n) (+ (/ d4 3 ))))
(command "pline" k1 k2 "" )
(command "_.array" (entlast) "" "p" zx n 360.0 "Y")
(setq jh (getdist"\n 请输入加强筋厚度:"));;虽然加强筋宽度可以输入,但是不想要那么多参数,加强筋可以另外去画。
(setq sb (- pi pi)) ;;此处加强筋开始角度是0度,但是测试参数不能写0,不知道还有别的表达方法么。
(setq s (/ jh 2))
(setq s2 (/ d1 2))
(setq c ( - (/ (- d3 d1) 2) 5))
(setq p3 (polar zx sb s2))
(setq j1 (polar p3 (* 0.5 pi) s))
(setq j2 (polar p3 (* -0.5 pi) s))
(setq j3 (polar j1 sb c))
(setq j4 (polar j2 sb c))
(command "pline" j1 j2 j4 j3 "c" )
(command "_.array" (entlast) "" "p" zx n 360.0 "Y")
(setvar "osmode" (- (getvar "osmode") 16384)) ; F3开
(setvar "cmdecho" 1)
(Princ)
)
感谢这几天论坛里朋友的帮助,完成了一个小程序,用来生成法兰的,因为才学,所以我感觉代码中应该有能简化的地方,欢迎高手来指点,不过这段代码已经测试过,使用是没有问题的,现在把代码贴出来,目的是相互学习,让大家指出不妥之处,另外这个程序写完了,计划另外再写一个新的,有好多地方也要请教大家,希望各位不要保留,指点一下,新程序另外开贴请教吧。
支持一下源码!建议添加加强筋选择,程序会更通用些
页:
[1]