模具塑胶知识
模具知识|自动绘制出中心线
2016-02-15  浏览:67
模具之家讯:AutoCAD是目前国内应用最广范的CAD系统之一,AutoCAD 功能强大,是一个通用的CAD平台,但是如果不根据本专业的需要进行二次开发,使用起来是很不方便的。画对称中心线是机械设计中经常遇到的一个问题。  

笔者用AutoLISP依据国家标准开发了两个程序,可以很方便地解决直线对称中心线的问题。

第一个程序适用于两条边是连续直线的情况。使用方法是:用LOAD命令装入GLS.LSP,运行C:GSL,依据屏幕提示,分别选择两边, 自动绘制出中心线。

GSL.LSP:

(defun mid(pt1 pt2 ) 计算两点之中点的功能函数

(setq pt (mapcar'+pt1 pt2 ))

(setq pt (mapcar'/pt'(2 2 2)))

)

(defun c:gsl/m cl1 cl cl2 e pt pt1 pt2 pt3 pt4 a)  (SETQ M 1)

 (WHILE M

(SETQ CL1 (ENTSEL"\n选择第一条直线 "))

(cond

 ((not cl1 )  (prompt"\n 没有发现实体"))

((/="LINE"(cdr (assoc 0 (setqe(entget (car cl1))))))

(prompt"\n 所选不是直线")

)

(t (prompt"找到了第一条直线”)

 (setq m nil);退出循环

)

  )

)

(setq cl (ssget (nth 0 (cdr cl1))));取得第一条直线的实体数据

(SETQ M 1)

(WHILE M

 (SETQ CL2 (ENTSEL"\n选择第二条直线"))

 (if cl2

(if (ssmemb (car cl2) cl )

(progn

 (princ"\n选择重复,重新选择")

 (setq cl2 nil)

)

)

 )

 (cond

((not cl2 ) (prompt"没有发现实体或重复"))

  ((/="LINE"(cdr (assoc 0 (setq e (entget (car cl2))))))

 (prompt"\n 所选不是直线")

)

(t (prompt"\n两条直线已经选择完毕")

 (setq m nil);;;退出循环

)

  )

 )

;;;取得第一直线两端点的坐标

 (setq pt1 (cdr (assoc 10 e )) pt2 (cdr (assoc 11 e )))

 (setq e (entget (car cl1)));;取得第二条直线的实体数据

;;;取得第二直线两端点的坐标

 (setq pt3 (cdr (assoc 10 e )) pt4 (cdr (assoc 11 e )))

;;调整端点

 (if (inters pt1 pt3 pt2 pt4 t)

(setq pt pt1

 pt1 pt2

pt2 pt

)

 )

;;;计算两端中点坐标

 (setq pt1 (mid pt1 pt3 ))

 (setq pt2 (mid pt2 pt4 ))

 (setq a (angle pt1 pt2));计算中心线的倾角

 (setq pt2 (polar pt2 a 2.5));;计算中心线的第一个端点

 (setq pt1 (polar pt1 (+pi a ) 2.5))

 (command"layer""SET"5"");;设置中心线层

 (command "line" pt1 pt2 "");;画出中心线

)

(princ "\nC:GSL has loaded")

(Princ "\n forsymmetry line")

(princ)

第二个程序适用于阶梯轴,阶梯孔等各种情况。使用方法是:用LOAD命令装入GLS1.LSP,运行C:GSL1,依据屏幕提示,分别选择两边的端点, 自动绘制出中心线。

GSL1.LSP

(defun mid(pt1 pt2 )

(setq pt (mapcar '+ pt1 pt2 ))

(setq pt (mapcar '/ pt '(2 2 2)))

)

(defun c:gsl1(/ p1 p1 p3 p4 a )

 ;;保存环境变量

 (setq os (getvar "osmode"))

 (setq cm (getvar "cmdecho"))

 ;;设置环境变量

 (setvar "osmode" 33)

 (setvar "cmdecho" 0)

 ;;依次读取两条直线的端点

 (initget 1)

 (setq p1 (getpoint"\n选择第一条直线的第一个点"))

 (initget 1)

 (setq p2 (getpoint"\n选择第一条直线的第二个点"))

 (initget 1)

 (setq p3 (getpoint"\n选择第二条直线的第一个点"))

 (initget 1)

 (setq p4 (getpoint"\n选择第二条直线的第二个点"))

 ;;;;恢复环境变量

 (setvar "osmode" os)

 (setq p1 (mid p1 p3 ))

 (setq p2 (mid p2 p4 ))

 (setq a (angle p1 p2))

 (setq p2 (polar p2 a 2.5))

 (setq p1 (polar p1 (+ pi a ) 2.5))

 (command "layer" "set" 5 "")

 (command "line" p1 p2 "")

)

(princ "\nC:GSL1 has loaded")

(Princ "\n forsymmetry line")

(princ)
模具之家为您提供最全面的塑胶,塑料,模具,模具设计,塑胶模具品牌的装修知识点和各种塑胶模具的导购与在线购买服务,拥有最便宜的塑胶模具价格和最优质的售后服务,敬请登陆模具之家:http://muju.jc68.com/
更多»您可能感兴趣的文章:
更多»有关 塑料 的产品:
  • 模具塑胶资讯
  • 发表评论 | 0评
  • 评论登陆
  • 移动社区 双碳之家 橱柜之家 布艺之家 卫浴之都 建材头条 灯具之家 电气之家 瓷砖之家 区快洞察 全景头条 陶瓷之家 油漆之家 照明之家 防水之家 防盗之家 博一建材 卫浴之家 区快洞察 木板之家 地板之家 防水之家 门窗之家 家电之家 五金之家 水电之家 防盗之家 石材之家 电气之家 地板之家 陶瓷头条 橱柜之家 卫浴头条 布艺之家 家纺头条 暖气头条 墙布头条 建材头条 装修之家 新基建头条 双碳之家 全景头条 建材之家 深圳建材 揭阳建材 香港建材 佛山建材 广州建材 东莞建材 惠州建材 潮州建材 汕头建材 珠海建材 江门建材 韶关建材 湛江建材 茂名建材 肇庆建材 梅州建材 汕尾建材 河源建材 阳江建材 清远建材 中山建材 云浮建材 720全景
    (c)2015-2017 BO-YI.COM SYSTEM All Rights Reserved