QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
编了以下的LISP程序:
. u5 N5 E' ^8 K(defun c:CCD()  G5 X# X* P5 m  n7 p9 D" v  y
  (prompt "\n恢復捕捉模式:")
- g! D1 p  l/ j& L* w  (setvar "osmode" 703)
. Y0 ?: {4 o" s9 ?5 J1 T( k% F)
8 Y, G) m! Z& G* \- y(defun c:CDD()7 R+ x* L: H0 E! Y
  (prompt "\n取消捕捉模式:")
! D: {! B. h5 S* N0 c" n, G  (setvar "osmode" 0)
/ M0 E8 u3 u1 |4 |/ l  c- C)9 O" P6 p+ V. \
在AUTOCAD2004中运行无任何问题,但在2 P- n- K" q' @' S
AUTOCAD2006---AUTOCAD2008中却无法使用,请高手看看问题在哪里???
发表于 2007-6-27 20:58:32 | 显示全部楼层 来自: 中国浙江宁波
为何要定义同样的命令二次?同名函数定义重复,最后加载的函数起作用;. b; w) s6 s6 R( V- j
设置捕捉模式一般是在程序执行前获得当前设置存储,然后设置自已程序中的捕捉模式,在你的程序执行完后,恢复捕捉模式到程序执行前的状态;
$ h8 W: M+ C7 {2 A) B0 r(defun C:CCD()
5 e/ C4 P) S6 e9 R2 H1 r7 k7 B(setq Osnapmode (getvar "OSMODE"));获得当前捕捉模式
% M* P: z, ^+ t7 O3 ?9 a(setvar "OSMODE" 703);设置程序中需要的模式  ~+ {8 N6 {3 N1 I% n$ a$ {
;;your code2 ^( q0 O  P) X9 o
(setvar "OSMODE" Osnapmode);恢复初始状态
. k5 l' P( ?. t3 b* j9 w);defun
 楼主| 发表于 2007-6-28 08:06:27 | 显示全部楼层 来自: 中国广东东莞
谢谢sealive_leafage 的回贴,可能你误会了我的意思了,这是定义好的两个命令,8 [. t, m( J1 S& O3 X
CCD即将捕捉模式定为703(这些都是最常用的,太多的话绘图有迟缓现象);
$ ^6 w/ }: @! P1 B6 b3 sCDD就是取消捕捉;; H/ q: j% f- }( W  y
这个程序应该没有问题,我以前用的很好的,只是在装了PCCAD后才出问题的。在没有装PCCAD的系统中运行也是正常的。& z; Q6 ?  b6 I
我感到有疑问的地方是:- G% Q& Y3 H7 }$ Q+ v/ U' C
我手动设置捕捉模式为703,没有问题,! M  ]( H7 j1 N& t
但用我的程序设置就有问题(另外在未装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 | 显示全部楼层 来自: 中国广东东莞
我是写在另外一个文件里面的,里面有很多的程序,其它的都没有问题,只用其中的几个有问题:
. V7 l3 k. W' b; S. e6 G;*******************************************************************************( C  w3 {$ q/ Z
(defun c:CCD()& M0 K) Z6 }8 z" r9 h6 _9 Q
  (prompt "\n恢復捕捉模式:")
: r/ J& D% g' q4 Z5 O! u" t  (setvar "osmode" 703)0 x3 s7 x: r% k* T
)0 S# q# C& e( m* g! r& V
;*******************************************************************************
7 `8 }# Q' l4 w(defun c:CDD()
& E: z9 D8 Y' v$ y* B  (prompt "\n取消捕捉模式:")
$ r0 \" r( a) D4 x  (setvar "osmode" 0). w1 `3 g) q3 U3 L; h$ s
)% P8 W5 @1 \8 O& d! [  v8 g
;*******************************************************************************3 M* E& Z; F  M. d; m0 I! {' ]
(DEFUN C:er(/ VAR1 VAR2 O A P Q)  ;功能:切換到物體所在layer 1 M9 W+ B7 d/ s& q/ R% v: I/ Q
  (SETQ VAR1 (GETVAR "BLIPMODE"))' G/ Z, z" w4 e/ y9 S% ]
  (SETQ VAR2 (GETVAR "CMDECHO"))0 @) S! }# c7 `  r  |( O# F
  (SETVAR "BLIPMODE" 0)
: i! f$ d& T" [! y) }5 B" Y  (SETVAR "CMDECHO"  0)
2 k# n# B3 e: e5 A: w  (PRINC "\n 切換到物體所在層 : ")
/ a2 L: n9 k, W  (SETQ O (ENTSEL))
. L6 _( b# D" v+ H  (SETQ A (ENTGET (CAR O)))4 J4 T( r9 c( d9 G! t! s8 q
  (SETQ P (CDR (ASSOC 8 A)))  o9 i/ P% A: A* g
  (SETQ Q (GETVAR "CLAYER"))- l, ~9 `; T- g5 _* H8 o; Q! c
  (IF (= Q P)
9 U0 B, A2 M- c: _      (PRINC "\n CORRENT LAYER,CAN'T FROOZEN!!!!")" T( a& ~3 Y. d4 d/ C
      (COMMAND "_-LAYER" "_s" P "")% ^. A* y! ^- B0 D# w6 {7 j8 p
   )5 Y8 @$ _0 u" K+ h# n: r
  (SETVAR "BLIPMODE" VAR1)
3 g% l9 H5 @2 _4 x  (SETVAR "CMDECHO"  VAR2)
4 A+ R) G( R% ]- |( U# s4 F1 c  (PRINC "\nOK!")(PRINC)
+ Q1 x, g# y/ b% Y- N)% M" A' J3 d' v1 x, o3 i% A
;*******************************************************************************
% I$ O7 A( i0 ~5 S$ R3 d! {$ o;*******************************************************************************7 F" l/ I* @$ T9 A
另外:* Y$ A9 Q' [4 @! ~
直接在命令行里运行下边一句:
; }$ {! U  _, T: b1 hsetvar "osmode" 703/ t2 b) e, b& V+ n+ B, x, B
再确认就可以!) h$ R$ t3 q0 H) t/ a0 p
但是运行6 |% M6 D" L+ w$ {: K6 s
(setvar "osmode" 703)  V; i9 m0 }1 c
就不行,
/ q* O. N8 w; {2 l9 j& |2 q: a郁闷中……
发表于 2007-6-28 20:29:16 | 显示全部楼层 来自: 中国浙江宁波
你是不是在命令行输入CCD时没有执行你的函数?PCCAD不是很熟,你看看它里面有没有命令为CCD,会不会是命令名冲突,你改个名字试试看。
 楼主| 发表于 2007-6-28 20:40:14 | 显示全部楼层 来自: 中国广东东莞
是的,我在命令行输入CCD,CDD,没有执行我的函数,但是我直接在命令行里运行& {+ O1 a" n* B$ J7 |; h
setvar "osmode" 703
, S0 I) k# ^4 L1 u再确认就可以!) l, D: o# G, K! Z" e
另外我也试过了换其它的命令名,还是一样。
& Z" O4 B% T* m上面这些程序,在没有装PCCAD的AUTOCAD里面都可以运行,都没有问题(我已经试过,也希望sealive_leafage  
/ U& G- X- J" s; D. G* \$ S- F试一下,帮我检查一下)
发表于 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 )

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