QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
9天前
查看: 5024|回复: 10
收起左侧

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

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

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

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

x
编了以下的LISP程序:
9 a+ s" F& x7 o+ Y7 B7 p5 d. n(defun c:CCD()
& {! `* n+ F7 q$ @& U  (prompt "\n恢復捕捉模式:")
& b+ ~; y. @; B/ Z/ |- l  (setvar "osmode" 703)# F9 f9 n9 |' j6 c3 G/ n
). J0 U( l7 d; j9 v) A' h
(defun c:CDD()% m' m( ^, L8 H, Q
  (prompt "\n取消捕捉模式:"). e/ b8 K" ~, k% D
  (setvar "osmode" 0)$ Q# C: M- z  _
)/ _7 i8 f  I: e2 i2 R
在AUTOCAD2004中运行无任何问题,但在
. i8 k1 O1 |, ~1 n) }3 N# zAUTOCAD2006---AUTOCAD2008中却无法使用,请高手看看问题在哪里???
发表于 2007-6-27 20:58:32 | 显示全部楼层 来自: 中国浙江宁波
为何要定义同样的命令二次?同名函数定义重复,最后加载的函数起作用;
6 m9 O0 \0 b- p' y# ~) b; a设置捕捉模式一般是在程序执行前获得当前设置存储,然后设置自已程序中的捕捉模式,在你的程序执行完后,恢复捕捉模式到程序执行前的状态;5 o  R2 u' ?5 @* g& A' o
(defun C:CCD()9 Y- Z; M2 K/ }! g1 p3 }+ P
(setq Osnapmode (getvar "OSMODE"));获得当前捕捉模式
. ?) N9 w6 ^0 O4 o' p9 D6 r- `7 L$ A0 G(setvar "OSMODE" 703);设置程序中需要的模式
! x) C6 `8 {! s. z;;your code- ]9 y' j" @: L* m1 u
(setvar "OSMODE" Osnapmode);恢复初始状态0 f0 s8 Q) ~9 \$ ]( z/ I2 j
);defun
 楼主| 发表于 2007-6-28 08:06:27 | 显示全部楼层 来自: 中国广东东莞
谢谢sealive_leafage 的回贴,可能你误会了我的意思了,这是定义好的两个命令,
7 O1 ^  q! q9 M+ q+ CCCD即将捕捉模式定为703(这些都是最常用的,太多的话绘图有迟缓现象);2 X8 m9 A1 n; r! W5 \, j( Q# J
CDD就是取消捕捉;5 w) `& }) P; v$ Q! M
这个程序应该没有问题,我以前用的很好的,只是在装了PCCAD后才出问题的。在没有装PCCAD的系统中运行也是正常的。
* }( s) i6 Q8 i7 P3 ]; q9 X8 \' k我感到有疑问的地方是:3 R0 D$ [) w* E* V7 H6 g) l
我手动设置捕捉模式为703,没有问题,
6 o% b9 U; V8 a2 l: x6 R. d但用我的程序设置就有问题(另外在未装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 | 显示全部楼层 来自: 中国广东东莞
我是写在另外一个文件里面的,里面有很多的程序,其它的都没有问题,只用其中的几个有问题:( Q$ ?5 Y) V5 V# z4 M
;*******************************************************************************
7 k: B. l( C7 b/ [5 v) g4 k(defun c:CCD()
4 E3 d/ c  F& |. m6 h6 z3 M  (prompt "\n恢復捕捉模式:")
5 x* |- L% [4 P2 q: p& i* c. C  (setvar "osmode" 703)
( q, z. M0 l1 n  p, p: ^). i- ]3 M" B& l
;*******************************************************************************  O3 n3 ]2 R. ?2 K$ l: n+ g1 D+ D
(defun c:CDD()3 m6 h5 z! ]( A; P5 m! _1 k8 |
  (prompt "\n取消捕捉模式:")
( X' Q6 _5 I% W$ B& u  (setvar "osmode" 0)! Y, O) A$ C3 i* {- O
)! w; j8 q5 {4 @! Q* ?
;*******************************************************************************
! b/ a- o5 g- M" Y/ W7 T& m8 A(DEFUN C:er(/ VAR1 VAR2 O A P Q)  ;功能:切換到物體所在layer
8 q8 Q7 g. }7 P; X2 N- s* E  (SETQ VAR1 (GETVAR "BLIPMODE"))/ e9 t, ?/ f9 t2 [
  (SETQ VAR2 (GETVAR "CMDECHO"))
+ f' Y/ t& b& C/ f  (SETVAR "BLIPMODE" 0)
. D/ V; ^: f1 s- R3 R) z" k  (SETVAR "CMDECHO"  0)/ Q* z" H& r! V5 [, |; u
  (PRINC "\n 切換到物體所在層 : ")
4 k1 n8 x/ I! _7 h, q' n6 W7 I  (SETQ O (ENTSEL))+ m+ P# o0 G2 p# Y5 n
  (SETQ A (ENTGET (CAR O)))
5 e- S8 t5 w: n  (SETQ P (CDR (ASSOC 8 A)))3 L, M; u& ?! J3 C) K; d$ ~/ M
  (SETQ Q (GETVAR "CLAYER"))& G) f: _$ O3 k6 @% h% F' I
  (IF (= Q P)! l! Y/ v- g2 ]/ l6 p5 Y& _& ?. ]
      (PRINC "\n CORRENT LAYER,CAN'T FROOZEN!!!!")
; a# U' @( ?3 E1 `4 g      (COMMAND "_-LAYER" "_s" P "")
, \1 w6 o3 H6 R/ H% o+ n! x2 s   )
. ]2 e- @9 [! ]. Q  (SETVAR "BLIPMODE" VAR1)
- d5 |, ~. ~" A7 Y  (SETVAR "CMDECHO"  VAR2)
! C1 q' |& X& ~- f+ d& P+ \  (PRINC "\nOK!")(PRINC)
+ F8 z( N0 U$ N  A0 `) X- T)
1 y: V& h/ l( J! \;******************************************************************************** }' \7 T2 [' f0 a4 n$ d& y; R
;*******************************************************************************
/ N* s! S2 H# `5 D5 W' f另外:
+ j' b9 l* f; T直接在命令行里运行下边一句:. g, M8 _9 F( Z* m
setvar "osmode" 703" ~1 p! `' b: V2 j+ h* Z) ]* C. h) _
再确认就可以!. W  y$ R5 z8 I8 k7 O! c
但是运行
- k2 ^6 M3 o7 I(setvar "osmode" 703)
9 d4 S9 {7 g7 X* [1 [, l. N就不行,. k5 t( c6 V- M( B7 X# P5 c
郁闷中……
发表于 2007-6-28 20:29:16 | 显示全部楼层 来自: 中国浙江宁波
你是不是在命令行输入CCD时没有执行你的函数?PCCAD不是很熟,你看看它里面有没有命令为CCD,会不会是命令名冲突,你改个名字试试看。
 楼主| 发表于 2007-6-28 20:40:14 | 显示全部楼层 来自: 中国广东东莞
是的,我在命令行输入CCD,CDD,没有执行我的函数,但是我直接在命令行里运行
# B. k; f8 T! y  }6 n/ A  isetvar "osmode" 703
* y1 U. g2 D" R$ P6 n3 B5 R再确认就可以!
2 |; I3 T0 a9 r% ]" B) d另外我也试过了换其它的命令名,还是一样。3 N+ p/ |( D" j3 p$ b% p0 I' I+ d
上面这些程序,在没有装PCCAD的AUTOCAD里面都可以运行,都没有问题(我已经试过,也希望sealive_leafage  
4 x$ A; d0 {" L8 j7 ]4 \( q试一下,帮我检查一下)
发表于 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 )

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