新客网WWW.XKER.COM:致力做中国最专业的网络学院!
学院: 操作系统 - 网络应用 - 服务器 - 网络安全 - 工具软件 - 办公软件 - Web开发 - 数据库 - 网页设计 - 图形图像 - 媒体动画 - 硬件学堂 - 存储频道 - QQ专区
您的位置:首页 > 网络学院 > 图形图像 > AutoCAD教程 > 正文:AutoCAD中特定角度及长度捕捉的实现方法

AutoCAD中特定角度及长度捕捉的实现方法

新客网 XKER.COM 2006-11-06 来源: 收藏本文

 (defun pull ( / )

 (setq b1 0)

 (while (/= b 3)

  (progn

  (setq a (grread 2 nil))

  (coord)

  (if (and (= b 2) (= b2 4)) (setq b 4))

  (setq b2 b)

  (setq b (car a))

  (cond

  ((or (= b 5) (= b 12) );只移动十字光标时

  (progn

  (setq pframe (cadr a))

  (field pstart pframe an0)

  (endp pstart pframe ang2)

  (if (>= (distance plast pframe) 0.1)

  (progn

  (drag pstart polde plast)

  (setq plast pframe polde pend)

  ) ;for progn

  ) ;for if

  ) ;for progn

  ) ;for cond1

  ( (= b 3);用鼠标在屏幕上点取一点时

  (progn

  (setq pframe (cadr a))

  (field pstart pframe an0)

  (endp pstart pframe ang2)

  (if (>= (distance plast pframe) 0.1)

  (progn

  (grdraw pstart polde -1 0)

  (setq plast pframe polde pend)

  ) ;for progn

  ) ;for if

  ) ;for progn

  ) ;for cond1

  ((= b 2);键盘输入

  (progn

  (setq c1 (cadr a))

  (cond ((= c1 138) (ant)) ;F2

  ((= c1 139) (leng)) ;F3

  ((= c1 140) ;F4

  (progn

  (setq b2 4)

  (command"zoom" "0.7x")

  )

  ) ;for (= c1 140)

  ((= c1 141) ;F5

  (progn

  (setq b2 4)

  (command"zoom" "1.4x")

  )

  ) ;for (= c1 141)

  ((= c1 13) (home))

  ((= c1 27) (home))

  (T (princ "\n 未定义的键"))

  ) ;for cond

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

  );for progn

  );for (cond (= b 2))

  ((= b 4);点取下拉菜单时

  (progn

  (setq c1 (cadr a))

  (princ "\n")

  (cond ((= c1 6005)

  (progn

  (command"zoom" "w")

  (princ "\n 第一角点:")

  (command pause)

  (princ "\n 第二角点:")

  (command pause)

  )

  ) ;for (= c1 6005)

  ((= c1 6007)

  (command"zoom" "p" ))

  ((= c1 6008)

  (command"zoom" "a" ))

  ((= c1 6011)

  (progn

  (command"pan")

  (princ "\n 第一参考点:")

  (command pause)

  (princ "\n 第二参考点:")

  command pause)

  )

  ) ;for (= c1 6011)

  ;;else

  (T (princ "\n 未定义的菜单"))

  ) ;for cond

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

  ) ;FOR PROGN

  ) ;for (cond (= b 4))

  (T (home) ) ;for else

  ) ;for cond

  ) ;for progn

  ) ;for while

 ) ;for defun pull

 ;; draw() , 绘制直线子程序

 (defun draw ( / )

  (while (/= b1 1)

  (progn

  (if (= b 3)

  (progn

  (command"line" pstart pend "")

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

  (setq b 0 b1 1)

  (setq pstart pend)

  );for progn

  ); for if

  (pull)

  ) ;for progn

  ) ;for while

  (grdraw pstart pend -1 0)

  (grdraw pend pframe -1 0)

 ) ;for defun draw

 ;;;;主程序

 (defun c:os ( / b b1 b2 c pstart pend pframe plast ang2

  dist scmd ccoords olderr cosmode )

  ;;; an0 len0 are defined out program

 (init)

 (draw)

 (princ "\n")

 (command"redraw")

 (setq *error* olderr)

 (setvar "cmdecho" scmd)

 (setvar "osmode" cosmode)

 (setvar "coords" ccoords)

 (princ "\n\n\t ------角度捕捉2.0版------\n")

收藏】 【评论】 【推荐】 【投稿】 【打印】 【关闭
发表评论
要记得去论坛讨论,点击注册新会员匿名评论
评论内容:不能超过250字,需审核后才会公布,请自觉遵守互联网相关政策法规。