QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
编了以下的LISP程序:6 Y# k3 B0 n# @8 V/ P# r
(defun c:CCD()
# N, T( o; h" {( Q3 U  (prompt "\n恢復捕捉模式:")$ N7 m' t* Q7 V3 l6 r; q2 {
  (setvar "osmode" 703)
8 E) J% d8 c( x8 U)3 a/ O$ ]1 M: ]1 o) q0 C
(defun c:CDD()
8 Z; n2 w) `4 ~0 T& G' q1 _7 `) g  (prompt "\n取消捕捉模式:"), K& R5 z' J/ k( J- T3 u" Q  }
  (setvar "osmode" 0)
% N5 C* c& W* c+ H6 J)% S4 Z( o5 `5 b( X$ x
在AUTOCAD2004中运行无任何问题,但在
5 `' @' ]: t# l3 R/ tAUTOCAD2006---AUTOCAD2008中却无法使用,请高手看看问题在哪里???
发表于 2007-6-27 20:58:32 | 显示全部楼层 来自: 中国浙江宁波
为何要定义同样的命令二次?同名函数定义重复,最后加载的函数起作用;
1 k3 C) ^; z2 k- K3 H4 G( R) @设置捕捉模式一般是在程序执行前获得当前设置存储,然后设置自已程序中的捕捉模式,在你的程序执行完后,恢复捕捉模式到程序执行前的状态;
3 n$ m2 n( _; M1 h(defun C:CCD()6 u7 p' E/ Q5 U9 l6 X8 q$ z( Z4 ]! a
(setq Osnapmode (getvar "OSMODE"));获得当前捕捉模式
2 s: A) u8 p) s5 {8 |(setvar "OSMODE" 703);设置程序中需要的模式) q; X0 ?" [- c7 u: V% m1 \3 R
;;your code
$ O6 j/ g2 F, o2 Q. J(setvar "OSMODE" Osnapmode);恢复初始状态1 E. o! f* m! R* X2 S
);defun
 楼主| 发表于 2007-6-28 08:06:27 | 显示全部楼层 来自: 中国广东东莞
谢谢sealive_leafage 的回贴,可能你误会了我的意思了,这是定义好的两个命令,' ~1 ~% s' D5 R, V
CCD即将捕捉模式定为703(这些都是最常用的,太多的话绘图有迟缓现象);
9 U$ m+ |2 G$ g7 ?8 @4 |3 aCDD就是取消捕捉;3 z2 {0 j" G3 K
这个程序应该没有问题,我以前用的很好的,只是在装了PCCAD后才出问题的。在没有装PCCAD的系统中运行也是正常的。) P9 \" m# O7 |0 I* s
我感到有疑问的地方是:
5 A8 N( ~0 C. W0 y7 r9 X我手动设置捕捉模式为703,没有问题,0 J* ^: e; J$ R4 E) ?
但用我的程序设置就有问题(另外在未装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) [3 W( g6 D
;*******************************************************************************
: Y1 P+ l2 f3 k1 l' H. u(defun c:CCD()
! b! L3 u0 \4 f6 Z  (prompt "\n恢復捕捉模式:")% e7 y7 W! y% r6 l0 y5 E8 U. @
  (setvar "osmode" 703)
* g/ Y# I( P6 B)& m! d  B- S! |* z# [9 V. E
;*******************************************************************************
' o2 m1 X$ v" b7 z(defun c:CDD()
' k  C6 X  @' G! C1 x  (prompt "\n取消捕捉模式:")
3 R7 d5 E7 f  ?6 ~- Y  (setvar "osmode" 0)# Q3 ^9 V+ x( i* U! o
)
. i) A- v8 D, |/ Q: O;*******************************************************************************, D! ?" F" Q1 N
(DEFUN C:er(/ VAR1 VAR2 O A P Q)  ;功能:切換到物體所在layer 3 [& |$ [' r8 F4 @' x) b5 t
  (SETQ VAR1 (GETVAR "BLIPMODE"))/ _" U& o' E+ [& o$ L  @) M4 q
  (SETQ VAR2 (GETVAR "CMDECHO"))
( n# V: A$ q8 w+ _7 V) f  (SETVAR "BLIPMODE" 0)
: F: w1 X, L7 v, Q! X1 y( m  (SETVAR "CMDECHO"  0)0 f- d, E/ K/ H: S2 A
  (PRINC "\n 切換到物體所在層 : ")
3 V. ]" ~  k2 ?4 k( E' j. Z  (SETQ O (ENTSEL))
3 k% V; ~+ W' |  (SETQ A (ENTGET (CAR O)))
. d' @/ ]$ r6 J( v" _0 J$ y  e! n2 {4 b  (SETQ P (CDR (ASSOC 8 A)))
5 _7 e6 I. K- {3 ?# @: G0 a" U  (SETQ Q (GETVAR "CLAYER"))! C/ @) m# L/ V. K
  (IF (= Q P); C( b, s6 g! K  u) H; Q. g6 q
      (PRINC "\n CORRENT LAYER,CAN'T FROOZEN!!!!")# C" `. |8 v2 a& t
      (COMMAND "_-LAYER" "_s" P "")
3 s; I# {6 y" D, q4 g   )
4 c% k! W' z4 J% n2 e- v" G3 U% P  (SETVAR "BLIPMODE" VAR1)) \0 V$ s( I) G: T% X4 ^; p2 A
  (SETVAR "CMDECHO"  VAR2)
$ n! I( `9 ^3 G' j  (PRINC "\nOK!")(PRINC)% v+ A5 X: i0 j+ |5 u( n9 m
)
2 _& e8 @% q" Y; h/ N;*******************************************************************************7 T* ]. Q$ q$ C( W  F8 v* L$ \1 ]
;*******************************************************************************# ^" [2 U4 r' K) W. b/ B  \2 G7 h3 X
另外:8 r# {% c9 @* J' k' g
直接在命令行里运行下边一句:
* y5 c/ N" R" l6 @& F1 i! ^- a1 {setvar "osmode" 703; c  D/ R7 @5 c# }
再确认就可以!
0 c4 U1 T  v& g但是运行
2 W- r% b0 R- v* O1 E% s7 r1 l; q(setvar "osmode" 703): _) r/ G4 Z3 R) W. X0 G
就不行,. K; P* i  q8 L, N1 U  [" C
郁闷中……
发表于 2007-6-28 20:29:16 | 显示全部楼层 来自: 中国浙江宁波
你是不是在命令行输入CCD时没有执行你的函数?PCCAD不是很熟,你看看它里面有没有命令为CCD,会不会是命令名冲突,你改个名字试试看。
 楼主| 发表于 2007-6-28 20:40:14 | 显示全部楼层 来自: 中国广东东莞
是的,我在命令行输入CCD,CDD,没有执行我的函数,但是我直接在命令行里运行0 a8 m0 [. n1 T8 c3 ?: {
setvar "osmode" 703
* W) c' j/ m0 e. Q) O0 B再确认就可以!
" k3 Z: H! Y6 \/ m3 G另外我也试过了换其它的命令名,还是一样。
$ t& _5 Z+ U" a3 @: u, ]- Q* O上面这些程序,在没有装PCCAD的AUTOCAD里面都可以运行,都没有问题(我已经试过,也希望sealive_leafage  
  D$ ^0 d4 w, ~8 X& }试一下,帮我检查一下)
发表于 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 )

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