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 for symmetry 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 for symmetry line")

Princ

直线端点画垂线lisp_AutoCAD中利用AutoLISP开发小程序,实现快速画直线对称中心线...相关推荐

  1. uni-app 开发小程序,使用到u-charts.js时会出现弹框或下拉框部分与图标重叠的情况(还有在解决过程中出现 vasToTempFilePath: fail canvas is empty)

    如下图,是我用uni-app开发小程序时出现视图与弹框或下拉框重叠的效果图,在微信开发工具上显示正常,但到了真机上就这样. 解决措施: 在小程序中canvas层级过高,导致z-index也无法让弹窗置 ...

  2. stm32利用mqtt与小程序通信

    stm32利用mqtt与小程序通信 stm32连接服务器端 小程序连接服务器 本项目实现的功能如下:通过stm32连接esp8266,然后利用mqtt协议连接到服务器,同时小程序端也连接到服务器,通过 ...

  3. 关于星空的java小程序_[Java教程]小程序使用Canvas画饼图_星空网

    小程序使用Canvas画饼图 2018-10-24 0 先上效果图 -------------------------------------------------------------w --- ...

  4. 小程序mpvue图片绘制水印_基于mpvue小程序使用echarts画折线图的方法示例

    第一次使用mpvue框架来写小程序,项目开发直接搬用mpvue-shop(一个仿网易严选的小程序开发项目),项目结构清楚,实现了大部分功能,对于初次使用mpvue的小伙伴们来说,是一个很好的选择. 关 ...

  5. c语言京东购物系统,仿京东商城: 自主使用微信小程序实现的网上商城案例(包括前端和后台),利用了微信小程序的云数据库...

    仿京东网上商城 介绍 自主使用微信小程序实现的仿京东网上商城案例(包括前端和后台),数据库利用了微信小程序的云数据库 软件架构 软件架构说明 数据库表设计 本系统数据库主要用了微信小程序自带的云数据库 ...

  6. 微信开发小程序云开发云存储中文件下载地址实时读取文件内容实时下载地址解读

    微信开发小程序云开发云存储中文件下载地址解读 最近公司要我开发一款具备电子签名功能的微信小程序,虽然我是Android开发程序员,但...老总要求了那我就去做呗,好在微信小程序还算入门容易,网上有很多 ...

  7. 使用TS开发小程序中遇到的问题

    在使用ts开发小程序的过程中,遇到了一些开发工具和关于ts的使用上的一些问题,并记录解决方法 1. ts开发过程中类型指定问题 Type 'number | undefined' is not ass ...

  8. http中的scheme和小程序中的scheme

    1. http中的scheme scheme就是url中标识协议的部分,可能是http也可能是ftp等. / 标识path的开始. :标识参数的开始,例如: ftp://prep.ai.mit.edu ...

  9. 小程序mpvue图片绘制水印_基于mpvue小程序使用echarts画折线图

    第一次使用mpvue框架来写小程序,项目开发直接搬用 mpvue-shop (一个仿网易严选的小程序开发项目),项目结构清楚,实现了大部分功能,对于初次使用mpvue的小伙伴们来说,是一个很好的选择. ...

  10. 微信小程序城市范围画线

    微信小程序城市范围画线 用的微信小程序原生的map组件多边形polygons 将传入的经纬度连接起来 参数: points:经纬度数组 array [{latitude: 0, longitude: ...

最新文章

  1. LeetCode-Reverse Integer
  2. TCP/IP详解--第七章
  3. joblib自定义类的使用细节
  4. Android复习15【动画:创建资源文件夹、创建动画资源文件、组合动画、属性动画、材料设计新特性】
  5. 探秘HDFS —— 发展历史、核心概念、架构、工作机制 (上)| 博文精选
  6. 《UNIX编程环境》——5.6 zap:使用名字终止进程
  7. 安卓开发由一个APP拉起另一个APP的方法总结
  8. 性能测试之JMeter接口关联【JSON提取器】详解
  9. Selenium UI自动化测试(四)Python+Unittest+HTMLTestRunner测试报告—百度hao123实例
  10. 013.Makefile
  11. 谷歌浏览器linux 64怎么安装插件,Ubuntu 16.04下安装64位谷歌Chrome浏览器
  12. ros中订阅/map话题,获取地图尺寸,获取机器人原点origin,获取地图分辨率resolution (c++,python,waitForMessage,wait_for_message)
  13. 在网站中使用Session的简单例子
  14. C++并发与多线程(二) 创建多个线程、数据共享问题分析、案例代码
  15. solr 忽略大小写
  16. 电大计算机考试试题及答案,电大统考计算机考试试题及答案.doc
  17. python 保存scv文件乱码与报错的问题解决TypeError: a bytes-like object is required, not 'str'
  18. java 读usb口 用POS-58 90U 打印
  19. iOS 获取设备UDID
  20. 数据库表的关联关系, 一对一, 一对零或一, 多对多

热门文章

  1. 移动硬盘在Mac上无法拷贝或删除文件的解决办法
  2. html创建站点文件夹,Dreamweaver站点中新建文件夹和修改/删除/移动文件的操作方法...
  3. html 怎么让他变成圆角,html让图片变圆角
  4. 计算机语言学方面的期刊.,自然语言处理投稿哪些sci期刊
  5. 图像处理农业应用sci_新增3本SCI期刊,JCR二区、SCI, EI双收 录,影响因子多年增长...
  6. mac忘记mysql初始密码怎么办_Mac下忘记Mysql密码重新设置密码的图文教程
  7. 聚宽macd底背离_什么是MACD顶背离和底背离?
  8. @click.prevent.native作用
  9. 什么是局域网?什么是广域网?CCNP是什么证书?电信能提供长途数据线路吗?
  10. 七.OpenCv图像轮廓