当前位置: 首页 > news >正文

着墨中文lisp登入_AUTOLISP程序的设计技巧

AUTOLISP

程序设计技巧

一、引言

AutoCAD

中的角度捕捉只有当正交状态打开时的直和水平方向,对于其他特殊角

度无能为力;另外,其网点捕捉也是相对于

X

轴和

Y

轴,无法实现其他方向的特殊长度捕捉,给绘图带来极大的不方便。

在应用

AutoCAD

进行设计制图的操作中,

LINE

POLYLINE

是使用频率最高的两个命令,

经常要遇到在某些特定角度上绘制

特定长度的简单线或复合线的情况,因而实现这两个捕捉对提高

AutoCAD

作图效率很有实用价值。

二、方法原理

所谓角度捕捉,

是指当十字光标在某一角度

α

的一定围选取一点时,

该点自动落在该

α

角度线上;

当我们设定捕捉角度为

α

时,

将会以基准点作为原点、

X

轴正方向出发,

将整个屏幕划分为[360/α]个区间,

NXα

角度就是角度捕捉线,

其中,

0≤N≤[360/α],

[360/α]表示不大于

360/α

的整数。

所谓长度捕捉,是在角度捕捉的基础上,在某一角度线上有一系列捕捉点,该系列点离基准点的距离为捕捉长度的正整数倍,当

选取直线上的一点时,落点自动落到离其最近的捕捉点上。

实现特定角度和长度捕捉的关键点是:当十字光标

(

即十字交叉线

)

移动时,程序要随时跟踪其交叉点的位置,并将该位置与用户

所设定的捕捉角度与长度对应起来,从而计算出在该角度上的落点。

以下举例说明该两个捕捉的实现过程:

假定捕捉角度为

α=30°,捕捉长度为

L

当十字光标在任意的某一区间移动时,比如在第

5

区间(120°~150

°)移动时,此时,落点只能在

120°或

150°线上

(

该线在图

中并不直接显示

)

,该两根角度线的中心线为

135°。当十字光标的中心点处在

120°~135°之间时,

则落点应在

120°线上,该落

点的具体位置为由十字光标的中心点向

120°线作垂线来获得,其交点

D(

称为垂点

)

即为落点,为直观起见,此时由基准点

(

此处为

O

)

向落点作一橡筋拖曳线,该橡筋拖曳线随十字光标的移动而相应移动,显示出拖动过程

(

见图

1)

;同样,当十字光标的中心点处在

135°~150°之间时,则落点应在

150°线上,并显示相应的橡筋拖曳线。该橡筋拖曳线并不是真正的线段,

只是用

XOR

墨水绘制的

一个向量,当用

XOR

墨水重新绘制一遍该向量时,该向量将从屏幕上消失,这就是本程序实现光标拖动的原理。

落点落在某一捕捉角度线上时,还得落在捕捉长度

L

的整数倍的点

(

称为捕捉点

)

上,还是针对图

1

,其垂点必然处于某两个捕捉

A

B

之间,设

A

B

的中点为

C

,当

D

处于

A

C

之间时,落点应为

A

;当

D

处于

C

B

之间时,落点应为

B (

见图

1)

。其中:

-- --

OA = n XL ; OB = (n + 1) XL

n:

非负整数。

相关文章:

  • stegsolve保存的图片打不开_stegsolve.jar压缩包打开和使用方法
  • 设置input标签禁用_input使用小技巧
  • 日历对象导哪个包_日期对象到日历[Java]
  • golang 组播数据接收_组播概念3
  • clion设置为中文_手把手教你去除CLion的中文字符乱码
  • mysql 5.5 查询_在mysql5.5中如何查询字符编码?
  • linux mysql验证功能_经过验证的Linux下安装MySQL总结
  • mysql 主从1236_解决mysql开启GTID主从同步出现1236错误问题【转】
  • main spring启动_Spring Boot 第一个示例 “main” 方法
  • mysql des_MySQL · 引擎特性 · InnoDB 文件系统之文件物理结构
  • mysql divided用法_BigDecimal的应用场景及使用方法
  • python 快速排序详解_学习笔记——快速排序(python实现)
  • mysql 总行数一半_《Mysql - Count(*) 的优化》
  • 删除视图的sql语句_推荐强大开源的数据库SQL语句审核平台,再也不用担心删除跑路了!...
  • php使用url连接mysql_3种通过php连接mysql的方法
  • 【402天】跃迁之路——程序员高效学习方法论探索系列(实验阶段159-2018.03.14)...
  • CSS中外联样式表代表的含义
  • hadoop入门学习教程--DKHadoop完整安装步骤
  • JWT究竟是什么呢?
  • LintCode 31. partitionArray 数组划分
  • mysql常用命令汇总
  • pdf文件如何在线转换为jpg图片
  • php面试题 汇集2
  • React的组件模式
  • select2 取值 遍历 设置默认值
  • sessionStorage和localStorage
  • Vue组件定义
  • web标准化(下)
  • 彻底搞懂浏览器Event-loop
  • 复杂数据处理
  • 开源中国专访:Chameleon原理首发,其它跨多端统一框架都是假的?
  • 利用阿里云 OSS 搭建私有 Docker 仓库
  • 微信小程序填坑清单
  • 为什么要用IPython/Jupyter?
  • 智能合约Solidity教程-事件和日志(一)
  • LevelDB 入门 —— 全面了解 LevelDB 的功能特性
  • Mac 上flink的安装与启动
  • 好程序员web前端教程分享CSS不同元素margin的计算 ...
  • ​LeetCode解法汇总307. 区域和检索 - 数组可修改
  • #我与Java虚拟机的故事#连载10: 如何在阿里、腾讯、百度、及字节跳动等公司面试中脱颖而出...
  • (Matalb回归预测)PSO-BP粒子群算法优化BP神经网络的多维回归预测
  • (多级缓存)多级缓存
  • (二)pulsar安装在独立的docker中,python测试
  • (非本人原创)我们工作到底是为了什么?​——HP大中华区总裁孙振耀退休感言(r4笔记第60天)...
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)ssm码农论坛 毕业设计 231126
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (离散数学)逻辑连接词
  • (三)c52学习之旅-点亮LED灯
  • (数据结构)顺序表的定义
  • (未解决)macOS matplotlib 中文是方框
  • (学习日记)2024.03.12:UCOSIII第十四节:时基列表
  • (原創) 人會胖會瘦,都是自我要求的結果 (日記)
  • (转)http-server应用
  • (转)Oracle存储过程编写经验和优化措施