QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
11天前
查看: 4917|回复: 10
收起左侧

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

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

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

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

x
编了以下的LISP程序:) A  Y! u( c6 ~2 c
(defun c:CCD()
, }- ~9 I3 ]4 A1 P2 c1 a+ {  {0 }( @  (prompt "\n恢復捕捉模式:")8 I* v$ a, D" w! O) h6 L6 [! I
  (setvar "osmode" 703)
! F2 J) G3 ]3 P* e5 W. ^1 l)( H3 V6 {& C- h6 X* @! p" h3 W( ]
(defun c:CDD()" _0 U+ P- {8 R) C' [! y5 E0 c
  (prompt "\n取消捕捉模式:"); J: C! }& X) x1 r& Q+ j
  (setvar "osmode" 0)
2 t2 s* ^9 r7 f)
" c- I# q# ?) X在AUTOCAD2004中运行无任何问题,但在
$ n2 Y. u" _5 T* N6 \3 X- ^  LAUTOCAD2006---AUTOCAD2008中却无法使用,请高手看看问题在哪里???
发表于 2007-6-27 20:58:32 | 显示全部楼层 来自: 中国浙江宁波
为何要定义同样的命令二次?同名函数定义重复,最后加载的函数起作用;( ?/ ~* h+ W) ~: P4 R
设置捕捉模式一般是在程序执行前获得当前设置存储,然后设置自已程序中的捕捉模式,在你的程序执行完后,恢复捕捉模式到程序执行前的状态;
% @5 W) R! I! |3 [% l% d(defun C:CCD()
" J  ?0 a5 f0 \! @0 F(setq Osnapmode (getvar "OSMODE"));获得当前捕捉模式
9 y( v; _2 v( u2 Y* w(setvar "OSMODE" 703);设置程序中需要的模式
1 q* D* C' g6 T# ^$ z$ v- {;;your code
1 ^# f: |* i+ o+ ](setvar "OSMODE" Osnapmode);恢复初始状态
# r% ^  }$ I; v- {);defun
 楼主| 发表于 2007-6-28 08:06:27 | 显示全部楼层 来自: 中国广东东莞
谢谢sealive_leafage 的回贴,可能你误会了我的意思了,这是定义好的两个命令,0 M1 m' o4 i0 r
CCD即将捕捉模式定为703(这些都是最常用的,太多的话绘图有迟缓现象);0 S; k/ {2 T! c6 s5 G+ X
CDD就是取消捕捉;
5 l) o% a& j9 i这个程序应该没有问题,我以前用的很好的,只是在装了PCCAD后才出问题的。在没有装PCCAD的系统中运行也是正常的。
6 ~' J! I6 k% [  `* e  b我感到有疑问的地方是:  Q! v1 i" V8 Y8 b% y& {& [  s
我手动设置捕捉模式为703,没有问题,$ J. I( D% q$ M/ v$ 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 | 显示全部楼层 来自: 中国广东东莞
我是写在另外一个文件里面的,里面有很多的程序,其它的都没有问题,只用其中的几个有问题:& P+ }0 O9 R0 i) s5 c* S
;*******************************************************************************( ~  ?/ b) s. z
(defun c:CCD()+ R$ b5 Y: m$ ~: i) q
  (prompt "\n恢復捕捉模式:")) D" f& J4 M% ?* G3 v3 {
  (setvar "osmode" 703)% T% d3 e* |, l( |7 Q2 g. }
)
8 {* x: _% |* l7 N& H6 z) S/ y;*******************************************************************************
& g* G1 ~" O' @5 p4 O3 |(defun c:CDD()$ u/ z% V2 p9 g  B$ G& v
  (prompt "\n取消捕捉模式:")
9 f$ e; T! n1 u$ N1 a  (setvar "osmode" 0). J/ ?! R3 B1 _/ v, V! z% V
)
5 _; W+ \6 u0 L5 {! e+ z;*******************************************************************************( z% h) B, |; E% f
(DEFUN C:er(/ VAR1 VAR2 O A P Q)  ;功能:切換到物體所在layer + ?8 ~+ x$ ?3 C9 ?
  (SETQ VAR1 (GETVAR "BLIPMODE"))( h# r0 z; F9 K/ f6 ]; t* B+ l3 q. W
  (SETQ VAR2 (GETVAR "CMDECHO"))
& `' U  Q2 l5 C  (SETVAR "BLIPMODE" 0)
9 V+ d# }3 h: W3 g" \. w7 @, ], s  (SETVAR "CMDECHO"  0)
5 ~9 Z- J& {7 \9 F+ X8 m$ N% ?% ?7 p  (PRINC "\n 切換到物體所在層 : ")# Z) P  f& e# D7 X: M6 D' g
  (SETQ O (ENTSEL))( k" g; Y  V7 W3 o8 A' j! ^
  (SETQ A (ENTGET (CAR O)))- b" Q/ y# S  w: T
  (SETQ P (CDR (ASSOC 8 A)))4 r, V4 X! \& d5 N6 r
  (SETQ Q (GETVAR "CLAYER"))! ]" O, j( r2 l$ I: G
  (IF (= Q P)
& e* `$ g5 W% I! i# |" @      (PRINC "\n CORRENT LAYER,CAN'T FROOZEN!!!!")
( @0 Z% ^( v; s. I& f$ M. n# c6 ]" d      (COMMAND "_-LAYER" "_s" P ""): z& c! j/ j) w" {0 A
   )- b1 W# z  i+ H1 u  h3 G
  (SETVAR "BLIPMODE" VAR1)" w$ V( R& m2 a; T8 Q
  (SETVAR "CMDECHO"  VAR2)
! B+ C: [% _" x1 V8 _  (PRINC "\nOK!")(PRINC)
# O/ q. B6 Z4 b, a. Y( e* B)  |( t& G% C, f
;*******************************************************************************
' [! r8 Z- i+ ~$ p6 S# ];*******************************************************************************
/ h  |) z# x( M1 R) T另外:+ P; `& M( Y4 |5 z0 T0 ]
直接在命令行里运行下边一句:
! r6 e! F0 P/ {6 S: I8 D5 U1 Esetvar "osmode" 703
7 q% _; W' l* D3 v$ [! A1 E再确认就可以!+ T( d) J9 S4 L4 V
但是运行
5 X+ J1 `  ]& o9 n# a' [(setvar "osmode" 703)
" O% d% R  \6 A3 v, l就不行,4 {1 S) O8 U& {2 f3 K* ^. V
郁闷中……
发表于 2007-6-28 20:29:16 | 显示全部楼层 来自: 中国浙江宁波
你是不是在命令行输入CCD时没有执行你的函数?PCCAD不是很熟,你看看它里面有没有命令为CCD,会不会是命令名冲突,你改个名字试试看。
 楼主| 发表于 2007-6-28 20:40:14 | 显示全部楼层 来自: 中国广东东莞
是的,我在命令行输入CCD,CDD,没有执行我的函数,但是我直接在命令行里运行% c/ j5 a5 Q3 q5 k
setvar "osmode" 703
: R. V8 x+ h8 u再确认就可以!2 Q! n; D! y/ U+ t) h
另外我也试过了换其它的命令名,还是一样。
& p) Y9 @9 X3 \, _: Y( V上面这些程序,在没有装PCCAD的AUTOCAD里面都可以运行,都没有问题(我已经试过,也希望sealive_leafage  , @( k  [2 _% \6 \3 P
试一下,帮我检查一下)
发表于 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 )

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