天天加油 - 助您成才
AutoCAD中特定角度及长度捕捉的实现方法
您正在看的AutoCad是:AutoCAD中特定角度及长度捕捉的实现方法。
一、引言
  在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: 非负整数。

 L: 捕捉长度。 此时,程序通过一定的操作将在屏幕的最上面的坐标提示行准确地显示落点相对基准点的偏移长度和偏移角度。用户可以滑动鼠标准确捕捉到目标点。

至此,已实现某些特定角度及长度的捕捉。为了满足在程序执行过程中能随时更改捕捉角度和捕捉长度的需要,本程序还增加了相应的模块;另外,本程序中嵌入了窗口放缩功能模块,通过点取下拉菜单中窗口及漫游子菜单,方便了各种作图的需要。

三、源程序清单

 ;; OS.LSP源程序

 ;;err(),出错处理子程序

 (defun err ( msg)

  (if (/= msg "Function cancelled")

  (princ(strcat "\nError:" msg)) ;打印错误内容

  ) ;for if

  (setq *error* olderr)

  (setvar "cmdecho" scmd)

  (setvar "osmode" cosmode)

  (setvar "coords" ccoords)

  (princ "n\n\t --多谢使用角度捕捉2.0版,程序非正常结束--!\n")

  (princ)

 ) ;for defun err

 ;; ant(),设定捕捉角度子程序

 (defun ant ( / ang0 ang1 )

  (setq ang0 (* an0 (/ 180 pi)) )

  (princ (strcat "\n请输入捕捉角度:<" (rtos ang0) ">_"))

  (INITGET 4)

  (setq ang1 (getreal))

  (if (not (null ang1))

  (setq an0 (* ang1 (/ pi 180)))

  )

  (princ "\n F2/F3/F4/F5/ESC/Return /下一点:")

 ) ;for defun ant

 ;; leng(),设定捕捉长度距离子程序

 (defun leng ( / leng0 leng1 )

  (setq l

1 2 3 4 5 6 下一页
  • 上一篇教程:
  • 下一篇教程:
  • 排行

    1. M文件函数
    2. [组图] 真刀真枪实战CorelDRAW10
    3. [组图] CorelDRAW实例:齿轮绘制
    4. [组图] 图像格式入门:色彩配对与
    5. MATLAB 概 论
    6. [组图] CorelDRAW版面设计教程
    7. [组图] 融会CorelDRAW9之二——文
    8. [组图] 融会CorelDRAW9之五——透
    9. [组图] CorelDraw 描图小技巧
    10. 偷“技”取“巧”用CorelDraw
    11. CorelDRAW 快捷键大全
    12. [组图] Coreldraw 10设计应用之台
    13. 用CorelDraw轻松制作名片
    14. [组图] 用Corel Draw绘制中国画荷
    15. [组图] CorelDRAW特色滤镜show
    16. 开目CAD图形标题栏信息的自动抽取
    1. [组图] 实例接触CorelDRAW 10 新
    2. CorelDraw的18个技巧
    3. 小巧玲珑的平面制图工具--CB-CAD
    4. AutoCAD2005安装详细图解
    5. 让AutoCAD启动为指定模板
    6. AutoCAD中线型的定制和使用
    7. 使用Visual C++创建ARX程序
    8. 使用Visual LISP创建简单的LISP应
    9. 利用DIESEL定制状态栏
    10. 自定义菜单文件
    11. PRO/E—WF渲染教程
    12. 在PROE野火版中的帖花
    13. Pro/E 工程图的重新生成
    14. 基于Pro/ENGINEER的渐开线变位直
    15. 应用Pro/ENGINEER软件进行三维布
    16. pro/e关系式、函数的相关说明数据
    1. [组图] 图像格式入门:色彩配对与
    2. MATLAB 概 论
    3. [组图] CorelDRAW版面设计教程
    4. [组图] 融会CorelDRAW9之二——文
    5. CorelDRAW 快捷键大全
    6. [组图] Coreldraw 10设计应用之台
    7. 用CorelDraw轻松制作名片
    8. [组图] 用Corel Draw绘制中国画荷
    9. 开目CAD图形标题栏信息的自动抽取
    10. 利用VBA编程实现从EXCEL表到AUTO
    11. 拉伸和拉长、打断和分解命令的比
    12. 图像对象的设置命令
    13. 创建千禧堂模型的渲染图
    14. 等轴测投影中的标注
    15. MATLAB 二维数组的创建
    16. 二维数组的子数组寻访和赋值

    最近更新

  • 推荐阅读
  • AutoCad《AutoCAD中特定角度及长度捕捉的实现方法》AutoCAD中特定角度及长度捕捉的实现方法
    关于我们 | 版权申明 | 广告服务 | 友情链接 | 网站地图 | 使用帮助 | ©2006-2008 TTADD.COM