明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
楼主: meflying

一个拖动函数

  [复制链接]
发表于 2004-4-18 07:21 | 显示全部楼层
vl-catch-all-apply ,vl-catch-all-error-p是用来处理vl函数返回值的

本来这两个函数就是这样设计出来的,与AX有关。就象VBA中的
On Error Resume Next
之类的错误处理。
发表于 2004-4-18 12:22 | 显示全部楼层
因此我认为如果没有用到vl函数,用vl-catch-all-apply ,vl-catch-all-error-p没有意义和作用。


希望大家讨论一下。
发表于 2004-4-19 11:41 | 显示全部楼层

幫助說明中寫得很清楚了!有沒有用?我認為很好用!

範例

如果由 vl-catch-all-apply 呼叫的函數順利完成,它與使用 apply相同,如下例所示:

_$ (setq catchit (apply '/ '(50 5)))

10

_$ (setq catchit (vl-catch-all-apply '/ '(50 5)))

10

使用 vl-catch-all-apply 的益處是它可讓您截斷錯誤並繼續程序。當您試著使用 apply 除以零時,會發生:

_$ (setq catchit (apply '/ '(50 0)))

; error: divide by zero

當您使用 apply,發生異常情況並顯示錯誤訊息。

以下是使用 vl-catch-all-apply 的相同作業

_$ (setq catchit (vl-catch-all-apply '/ '(50 0)))

#<%catch-all-apply-error%>

vl-catch-all-apply 函數會捕捉錯誤並傳回錯誤物件。使用 vl-catch-all-error-message 查看包含在錯誤物件中的錯誤訊息:

_$ (vl-catch-all-error-message catchit)

"divide by zero"

发表于 2004-4-20 07:51 | 显示全部楼层
  1. ;;By 龍龍仔(LUCAS)
  2. ;;(SSDRAG_LAI (ssget) (getpoint "\n指定基準點: ") "_.MOVE")
  3. ;;Only for "MOVE" command
  4. (defun SSDRAG_LAI (SS PT DRAGCOMMAND / CMDECHO)
  5.    (if (and SS
  6.        (or (= (type SS) 'PICKSET) (= (type SS) 'ENAME))
  7.        PT
  8.        (= (type PT) 'list)
  9.            )
  10.        (progn (setq CMDECHO (getvar "cmdecho"))
  11.        (setvar "cmdecho" 0)
  12.        (prompt "\n指定位移的第二點: ")
  13.        (command DRAGCOMMAND SS "" PT PAUSE)
  14.        (command "_.undo" "1")
  15.        (setvar "cmdecho" CMDECHO)
  16.        (if (equal PT (getvar "lastpoint"))
  17.            NIL
  18.            (getvar "lastpoint")
  19.        )
  20.        )
  21.    )
  22. )
发表于 2004-4-20 16:06 | 显示全部楼层
;;對拖動旋轉,可以用下列方法,但好像還有不少問題??
(setvar "ORTHOMODE" 0) ;關掉正交
(command DRAGCOMMAND SS "" PT PAUSE)
(setq PT1 (cadr (grread t))) ;取得點選後游標點座標
(setq PT2 (osnap PT1 "_end,_int")) ;設定抓取
(if PT2 ;再判斷抓取
(setq PT1 PT2)
)
(/ (* (angle PT PT1) 180.0) pi) ;計算旋轉角
发表于 2004-4-20 18:05 | 显示全部楼层
希望斑竹能告诉我,拖动的确切含义是什么?拖动的最佳效果是什么?
发表于 2004-4-20 22:22 | 显示全部楼层
我使用中感觉vl-catch-all-apply很好使啊,可以捕捉任何错误。
发表于 2004-5-1 02:30 | 显示全部楼层
如果lisp能干arx的事情,那还要arx干什么!
发表于 2004-5-1 18:04 | 显示全部楼层
arx的确比lsp功能强大,但是话也不是这么说。


吃面能吃饱,吃米饭也能吃饱,既然吃面能吃饱了,那还要米饭干什么?!
发表于 2004-5-15 17:37 | 显示全部楼层
我感觉拖动最关键的是要能接受程序所需要的参数。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-21 18:07 , Processed in 0.191239 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表