QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

查看: 4921|回复: 10
收起左侧

[讨论] 关于对象捕捉(LISP程序)的疑惑???

[复制链接]
发表于 2007-6-27 14:57:48 | 显示全部楼层 |阅读模式 来自: 中国广东东莞

马上注册,结识高手,享用更多资源,轻松玩转三维网社区。

您需要 登录 才可以下载或查看,没有帐号?注册

x
编了以下的LISP程序:3 c' ?* N& g  M* m
(defun c:CCD()
7 u  ^' J8 T# N5 c2 \  (prompt "\n恢復捕捉模式:")
! a& R: b0 C' G# {6 z  (setvar "osmode" 703)2 }& @: Z0 x% b" D9 \8 m# r
)& A4 r5 k& T: C+ X* A
(defun c:CDD()
1 B  p# ^- y/ {  (prompt "\n取消捕捉模式:")
8 C8 M" g( x2 P! n: J6 _& S4 k$ P  (setvar "osmode" 0)  ~5 {) I% V0 g5 _8 `- E
)
+ Q3 n9 H* g9 X2 R在AUTOCAD2004中运行无任何问题,但在
& X( G  y; u; A" k6 Z% @AUTOCAD2006---AUTOCAD2008中却无法使用,请高手看看问题在哪里???
发表于 2007-6-27 20:58:32 | 显示全部楼层 来自: 中国浙江宁波
为何要定义同样的命令二次?同名函数定义重复,最后加载的函数起作用;
: {# F. w0 l+ C+ R1 E, E* Y& I设置捕捉模式一般是在程序执行前获得当前设置存储,然后设置自已程序中的捕捉模式,在你的程序执行完后,恢复捕捉模式到程序执行前的状态;
- C: ]7 h7 }  K6 N, O(defun C:CCD()
. D& x1 W! O. W(setq Osnapmode (getvar "OSMODE"));获得当前捕捉模式+ ]9 X6 s$ t1 ^* D' ?
(setvar "OSMODE" 703);设置程序中需要的模式$ V! v. P" @6 s' O8 P# V& ~  S
;;your code
+ F5 g% M. G# h4 e9 P( x" S(setvar "OSMODE" Osnapmode);恢复初始状态! C7 z; J5 a3 [3 y
);defun
 楼主| 发表于 2007-6-28 08:06:27 | 显示全部楼层 来自: 中国广东东莞
谢谢sealive_leafage 的回贴,可能你误会了我的意思了,这是定义好的两个命令,5 I8 z: U9 {  \( [
CCD即将捕捉模式定为703(这些都是最常用的,太多的话绘图有迟缓现象);# V* }8 k$ y, }7 m. D6 a; L
CDD就是取消捕捉;. B8 R, {- Y- F5 k- U  T! ~5 s
这个程序应该没有问题,我以前用的很好的,只是在装了PCCAD后才出问题的。在没有装PCCAD的系统中运行也是正常的。! R' z# V+ o1 ?$ q
我感到有疑问的地方是:8 w: w" [6 ?; ^% `! b$ ~
我手动设置捕捉模式为703,没有问题,% @3 b) B  ]: p8 J
但用我的程序设置就有问题(另外在未装PCCAD的CAD中运都没有问题)。
发表于 2007-6-28 08:12:01 | 显示全部楼层 来自: 中国浙江宁波
函数你写在那个文件里(acaddoc.lsp or acad.lsp)?就把这些内容写到PCCAD的安装目录或support中(对应的文件,),因为安装PCCAD后ACAD路径下的启动加载文件被屏蔽了!

评分

参与人数 1三维币 +3 收起 理由
blackbird + 3 技术讨论

查看全部评分

 楼主| 发表于 2007-6-28 20:15:04 | 显示全部楼层 来自: 中国广东东莞
我是写在另外一个文件里面的,里面有很多的程序,其它的都没有问题,只用其中的几个有问题:
5 {4 @& C: n  |& M$ ];*******************************************************************************
8 L  [+ L1 d' n! }9 l) M(defun c:CCD()! x0 z" U8 R( O4 e4 _& M7 ~
  (prompt "\n恢復捕捉模式:")( R8 E$ s# H5 F* u: H1 v3 l
  (setvar "osmode" 703)3 u$ C1 @, Y# n' ^6 @# F/ r
)" [: f% M* E% x3 g8 Y- O- G
;*******************************************************************************5 K) m) _; U5 \# p7 r* ~: A
(defun c:CDD(), |5 Q; B, L7 S4 d' s, p
  (prompt "\n取消捕捉模式:")& ^7 S- C4 }" c" f: L& Z7 K" p
  (setvar "osmode" 0)
+ @9 m" u6 @4 y% e)
; x' G, _" p6 j" H;*******************************************************************************
& I/ O' }' _; A% ~! Q. B( ~9 M(DEFUN C:er(/ VAR1 VAR2 O A P Q)  ;功能:切換到物體所在layer : b8 N- `5 `2 u7 K
  (SETQ VAR1 (GETVAR "BLIPMODE"))+ W$ ^; e8 C* h6 ?: Q
  (SETQ VAR2 (GETVAR "CMDECHO"))
% s; U# S6 k) m$ W7 n, B1 U2 b  (SETVAR "BLIPMODE" 0)' ?/ }0 `/ r6 j; V2 z4 i( |# a
  (SETVAR "CMDECHO"  0)
/ q  y' N- O5 \% n: a! M  (PRINC "\n 切換到物體所在層 : ")* m9 ~* O3 {7 J/ _
  (SETQ O (ENTSEL)), Z( H' Y# X8 N+ z) i# U
  (SETQ A (ENTGET (CAR O))): \! V; G) f: f/ {4 s# _( S
  (SETQ P (CDR (ASSOC 8 A)))- o! y5 V6 F' r
  (SETQ Q (GETVAR "CLAYER"))
8 O$ C) R" O& {. v. f& k  (IF (= Q P)
/ V, S  ?! A* z  p# e, c% |      (PRINC "\n CORRENT LAYER,CAN'T FROOZEN!!!!")
! I4 v$ ?2 }( C6 g4 e7 p3 q, w      (COMMAND "_-LAYER" "_s" P "")
$ ]; f2 j- R: e   )7 i0 F; @( d$ R5 Q  Z& A8 [$ f* w/ T
  (SETVAR "BLIPMODE" VAR1)
+ d; ~3 g$ y, d- t( W  (SETVAR "CMDECHO"  VAR2)
( V; Q- D9 j- W# }$ @6 A- F  (PRINC "\nOK!")(PRINC)
5 W: U4 ^8 \8 ?$ O4 \; V' D9 Q, B)
4 F" A3 x/ d( k! B7 @! h;*******************************************************************************
% O) n& u( ]$ U;*******************************************************************************! x. L9 y- Z# N  k+ F  R
另外:
6 Y3 X% _0 F( T7 U; d直接在命令行里运行下边一句:" F  r1 X2 [' j2 ~
setvar "osmode" 7030 G  b$ T8 X6 K6 r0 v+ w
再确认就可以!: w3 Q3 Z" k' g0 r1 u0 @# {. ?# |
但是运行3 E( o2 {% X1 v% w2 f5 s4 G, G
(setvar "osmode" 703)
) n1 E6 O% P: M% K7 P/ T; }就不行,
+ t, {# }  H4 r' ~; n: c* c. h' J郁闷中……
发表于 2007-6-28 20:29:16 | 显示全部楼层 来自: 中国浙江宁波
你是不是在命令行输入CCD时没有执行你的函数?PCCAD不是很熟,你看看它里面有没有命令为CCD,会不会是命令名冲突,你改个名字试试看。
 楼主| 发表于 2007-6-28 20:40:14 | 显示全部楼层 来自: 中国广东东莞
是的,我在命令行输入CCD,CDD,没有执行我的函数,但是我直接在命令行里运行  a+ M* W6 p8 f) x' j
setvar "osmode" 7037 t7 E/ ^3 `0 Q' I  y4 A
再确认就可以!1 M5 D$ L, v$ G
另外我也试过了换其它的命令名,还是一样。
1 _& @2 ]5 X2 J% k% w1 C9 f* {5 o上面这些程序,在没有装PCCAD的AUTOCAD里面都可以运行,都没有问题(我已经试过,也希望sealive_leafage  # e8 G/ a2 S6 ^4 i$ G# i# u8 V. c
试一下,帮我检查一下)
发表于 2007-6-29 08:13:03 | 显示全部楼层 来自: 中国浙江宁波
应该问题在PCCAD,ACAD测试过都没问题,你运行时命令行提示什么?
 楼主| 发表于 2007-6-29 11:36:50 | 显示全部楼层 来自: 中国广东东莞
没有任何提示,和ACAD里面运行是一样的,只是没有把捕捉模式改过来!
发表于 2007-6-29 11:44:51 | 显示全部楼层 来自: 中国浙江宁波
把变量cmdecho设置为1就有提示了,你单独把这两个函数写在一个文件里,手动加载试试。
发表于 2007-6-29 21:39:36 | 显示全部楼层 来自: 中国湖北十堰
好高深的问题啊,学习一下-----
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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