QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
8天前
查看: 5022|回复: 10
收起左侧

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

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

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

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

x
编了以下的LISP程序:  g% L! u' \9 N+ V3 |2 h' ?
(defun c:CCD()
- G* Q& i% x3 g7 R5 x* Y  (prompt "\n恢復捕捉模式:")
/ O) n0 D2 T1 V, x9 _  (setvar "osmode" 703)
2 b& ]. ?( Z6 V7 k% d)
/ C1 q1 Z# H; \, j; R(defun c:CDD()
! c7 ^9 |( q/ M  S: S, a  (prompt "\n取消捕捉模式:")
6 w4 R( k! P9 B  (setvar "osmode" 0), y  k3 B' D, \
)
6 }- x' L7 S) U) q在AUTOCAD2004中运行无任何问题,但在3 R& r. u3 x( {1 c! m6 ]9 g
AUTOCAD2006---AUTOCAD2008中却无法使用,请高手看看问题在哪里???
发表于 2007-6-27 20:58:32 | 显示全部楼层 来自: 中国浙江宁波
为何要定义同样的命令二次?同名函数定义重复,最后加载的函数起作用;7 L- C; p( O1 J+ E0 \3 b
设置捕捉模式一般是在程序执行前获得当前设置存储,然后设置自已程序中的捕捉模式,在你的程序执行完后,恢复捕捉模式到程序执行前的状态;
' t1 F5 H! m" C' c; Y(defun C:CCD()
5 L4 M: f/ o8 ~* D5 b(setq Osnapmode (getvar "OSMODE"));获得当前捕捉模式
4 W. Q! U. m. i6 ?1 F0 ?7 H(setvar "OSMODE" 703);设置程序中需要的模式( x9 d, w/ C2 ?- G7 w5 \
;;your code
# T! l4 K: k- ^4 T3 l/ J0 Y(setvar "OSMODE" Osnapmode);恢复初始状态5 V8 z) e. S2 U+ D5 N" f$ m8 |& r) w
);defun
 楼主| 发表于 2007-6-28 08:06:27 | 显示全部楼层 来自: 中国广东东莞
谢谢sealive_leafage 的回贴,可能你误会了我的意思了,这是定义好的两个命令,
; J( e2 o. B/ |CCD即将捕捉模式定为703(这些都是最常用的,太多的话绘图有迟缓现象);7 o( [7 l( p; y8 U" Z$ E
CDD就是取消捕捉;2 h9 n& ?0 }; s, `
这个程序应该没有问题,我以前用的很好的,只是在装了PCCAD后才出问题的。在没有装PCCAD的系统中运行也是正常的。+ b- }* N& F; r. M- N3 v
我感到有疑问的地方是:
4 }! F' s% H7 T$ Y+ _我手动设置捕捉模式为703,没有问题,
2 m+ \* Y6 E8 A' \0 k8 K但用我的程序设置就有问题(另外在未装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 | 显示全部楼层 来自: 中国广东东莞
我是写在另外一个文件里面的,里面有很多的程序,其它的都没有问题,只用其中的几个有问题:+ u+ O4 ]8 L1 N) i$ D1 D" n+ J6 P: h
;*******************************************************************************/ D7 Y1 {. l' F
(defun c:CCD()
' I: Q8 |3 _% b& X' Q1 e  (prompt "\n恢復捕捉模式:")
# K0 i0 v. N* p9 t8 a% L1 z  (setvar "osmode" 703)
" m5 {4 t' H7 Q)) x, W; ], K, K$ f( d
;*******************************************************************************. {3 O# B/ r$ v6 Y6 M
(defun c:CDD()
0 a/ P4 G3 J3 q6 K  (prompt "\n取消捕捉模式:")- n, V  {2 h0 h& Y. h
  (setvar "osmode" 0)
5 F4 k+ a& e9 T+ @( f3 L)
* ^+ a! ^$ T0 {! ~/ p;*******************************************************************************2 N1 q( B4 V0 F3 b) Z
(DEFUN C:er(/ VAR1 VAR2 O A P Q)  ;功能:切換到物體所在layer
  a- ]9 r" a; T; G  (SETQ VAR1 (GETVAR "BLIPMODE"))
; ]/ P* y, z. p- u+ l" ~  (SETQ VAR2 (GETVAR "CMDECHO"))7 s1 P, D7 v; n
  (SETVAR "BLIPMODE" 0)  |3 R, r. m0 M4 h# l) d0 }
  (SETVAR "CMDECHO"  0)! l! E6 a" ^! b& |6 w, U
  (PRINC "\n 切換到物體所在層 : "); K9 ?4 }. J3 j1 F* u( W  x. j
  (SETQ O (ENTSEL))
2 x8 l8 m" q7 a+ i0 k/ Z8 S  (SETQ A (ENTGET (CAR O)))8 q/ T+ ~* e" U' g  V/ E3 J5 f0 u; M. }
  (SETQ P (CDR (ASSOC 8 A)))* k: O, F* ?! b4 ]! g% t" d
  (SETQ Q (GETVAR "CLAYER"))- U) B3 r- W! E7 ?. W3 ^
  (IF (= Q P)
! G: t+ f3 `1 W( `: m      (PRINC "\n CORRENT LAYER,CAN'T FROOZEN!!!!")  G/ u; T2 I% F/ {
      (COMMAND "_-LAYER" "_s" P "")9 @+ i4 F3 e$ D' v
   )5 o8 K1 ~0 k4 v( k; x0 w1 {$ S4 T
  (SETVAR "BLIPMODE" VAR1)! |" H/ S* S0 p2 u  O% N4 a
  (SETVAR "CMDECHO"  VAR2)
6 R2 I" S, ~6 R$ x; a  (PRINC "\nOK!")(PRINC)
/ q5 Q9 `& ~1 G2 M8 \: X& G)
: m% c2 s- J3 ?  a;*******************************************************************************
- C5 q0 Y( u/ A+ [  A2 f! @;*******************************************************************************
% J( q4 C  K9 R另外:
$ {8 j& m) ?& u9 s1 O3 A直接在命令行里运行下边一句:
/ W/ d. G0 O6 ]+ V  wsetvar "osmode" 703# r0 e5 m- m2 E+ w
再确认就可以!
7 d0 c6 x' d+ M8 c* y但是运行% l( n% r& U, X0 R5 v1 {3 @
(setvar "osmode" 703)
% u" i$ @0 F- i就不行,
4 E* A0 S, B( D& x- Q: ~! z郁闷中……
发表于 2007-6-28 20:29:16 | 显示全部楼层 来自: 中国浙江宁波
你是不是在命令行输入CCD时没有执行你的函数?PCCAD不是很熟,你看看它里面有没有命令为CCD,会不会是命令名冲突,你改个名字试试看。
 楼主| 发表于 2007-6-28 20:40:14 | 显示全部楼层 来自: 中国广东东莞
是的,我在命令行输入CCD,CDD,没有执行我的函数,但是我直接在命令行里运行
3 e$ \; j: U  K0 g0 r7 Fsetvar "osmode" 703" e/ j2 _- E( W$ f* V
再确认就可以!
  B0 w/ o" D, J! L% Y# U+ y8 [另外我也试过了换其它的命令名,还是一样。/ G8 t) \6 \. v" m% C9 |% ~
上面这些程序,在没有装PCCAD的AUTOCAD里面都可以运行,都没有问题(我已经试过,也希望sealive_leafage  
' T9 ^/ s3 p; K: N2 i试一下,帮我检查一下)
发表于 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 )

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