QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
编了以下的LISP程序:
' e! ]: ~) ^  f8 [5 J& g  R(defun c:CCD()
  |* c" c" \& h: m5 U+ ~/ D  (prompt "\n恢復捕捉模式:"). d$ h6 i: h( ]- Y5 F
  (setvar "osmode" 703)7 k6 f! k' C8 d& R6 D. W5 x4 X
); T/ z# b3 `$ `$ j, g
(defun c:CDD()
5 z3 t' ]4 D) r" m3 Q2 x) L; p  (prompt "\n取消捕捉模式:")
/ g. S% I1 X3 R" c7 V' \; a  (setvar "osmode" 0)
2 Y& X; a5 J' k" @1 k9 L  H)& c7 h. e2 |. s# Q! C/ u9 H3 W! T
在AUTOCAD2004中运行无任何问题,但在
) i4 l* B/ k6 vAUTOCAD2006---AUTOCAD2008中却无法使用,请高手看看问题在哪里???
发表于 2007-6-27 20:58:32 | 显示全部楼层 来自: 中国浙江宁波
为何要定义同样的命令二次?同名函数定义重复,最后加载的函数起作用;5 X: i6 {# n4 B% N% y
设置捕捉模式一般是在程序执行前获得当前设置存储,然后设置自已程序中的捕捉模式,在你的程序执行完后,恢复捕捉模式到程序执行前的状态;
: ?3 r: a7 L: b/ I3 X& @' O6 Y(defun C:CCD()1 A) R& H! B- r
(setq Osnapmode (getvar "OSMODE"));获得当前捕捉模式
0 B5 A+ s- Z2 _) k( z; p9 m; ~(setvar "OSMODE" 703);设置程序中需要的模式
' D% Y2 X1 a" ]1 {( K8 }  F; w;;your code
+ {6 H3 o4 g* K* \+ e% x( Z6 N(setvar "OSMODE" Osnapmode);恢复初始状态) Y/ }, C% s. V! {, F' X) U
);defun
 楼主| 发表于 2007-6-28 08:06:27 | 显示全部楼层 来自: 中国广东东莞
谢谢sealive_leafage 的回贴,可能你误会了我的意思了,这是定义好的两个命令,
2 @" }& f0 ~) ?' @& LCCD即将捕捉模式定为703(这些都是最常用的,太多的话绘图有迟缓现象);
' i( _1 H8 \9 ?) QCDD就是取消捕捉;
' o* y& `8 p. H& H+ J8 n这个程序应该没有问题,我以前用的很好的,只是在装了PCCAD后才出问题的。在没有装PCCAD的系统中运行也是正常的。
$ X* N/ y& ~) E4 W我感到有疑问的地方是:6 I. G, ^* {4 f+ G+ o0 g3 l1 Z7 |
我手动设置捕捉模式为703,没有问题,
- X8 y3 }  E( k/ 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 | 显示全部楼层 来自: 中国广东东莞
我是写在另外一个文件里面的,里面有很多的程序,其它的都没有问题,只用其中的几个有问题:
% A7 A3 A' }! ~' B4 U3 h8 g;*******************************************************************************
% l/ W, b; B7 T; w- L& i9 i' F(defun c:CCD(): h6 l) n4 |& o; c, O8 z
  (prompt "\n恢復捕捉模式:")
" ]6 V# ^7 f! k9 V9 a7 j  s  (setvar "osmode" 703)+ {/ s1 k7 L$ g) C: M$ X
)2 l) S; W8 m9 T- u$ {
;*******************************************************************************
2 u! P) e7 }% M: [1 K5 \* W: U(defun c:CDD()4 r7 w, O( D. ^6 l" R
  (prompt "\n取消捕捉模式:")6 E; g. S2 N% J3 j1 p. R
  (setvar "osmode" 0)
. x+ w5 p. P; g)0 k$ |* Z% i; i  r( k0 ?; N7 [% _
;*******************************************************************************2 W# G  z, J/ X/ h
(DEFUN C:er(/ VAR1 VAR2 O A P Q)  ;功能:切換到物體所在layer 8 S9 j; p' g, ^; f3 z. t3 R
  (SETQ VAR1 (GETVAR "BLIPMODE"))
1 R! g, ?3 k/ r+ F4 w, T  (SETQ VAR2 (GETVAR "CMDECHO"))
7 j; D# P% M. [1 J' V  (SETVAR "BLIPMODE" 0)) a: d3 m7 o$ e" d+ V& \8 E) U
  (SETVAR "CMDECHO"  0)
) Q0 O5 y- B, {% Z  (PRINC "\n 切換到物體所在層 : ")
* n' D. I. @" X3 |  (SETQ O (ENTSEL))
  T$ }+ a* I, I% o  (SETQ A (ENTGET (CAR O)))
1 L, t$ f- D7 F. j2 _  (SETQ P (CDR (ASSOC 8 A)))
) j2 T" {9 b5 w2 J( T; G  (SETQ Q (GETVAR "CLAYER"))& R/ A. m7 H/ }  N" }
  (IF (= Q P)) N: T9 ]/ s$ p( e% Y
      (PRINC "\n CORRENT LAYER,CAN'T FROOZEN!!!!")
4 B( |6 Y5 T% G& S" p$ M9 N      (COMMAND "_-LAYER" "_s" P "")4 ], o" x; K2 T" L7 K$ I1 u
   )" {" s3 b; l0 o
  (SETVAR "BLIPMODE" VAR1)5 {( x, H7 K; i% B* R
  (SETVAR "CMDECHO"  VAR2)& g2 Y' p0 {4 {( a+ ?4 o
  (PRINC "\nOK!")(PRINC)
4 ~1 p! p' C. p4 M, h, B+ E6 T! l! ~3 O)2 g: v7 U4 G& ~7 f# Y: a! y2 ~; X
;*******************************************************************************
. p' S8 `$ m: i8 a;*******************************************************************************4 i. G( @) C' `8 s
另外:
6 E, _) E( h! O" x直接在命令行里运行下边一句:1 [1 E  @* X. i9 U% Q, R
setvar "osmode" 703" s" @. @" R% }' G! m; _  Y
再确认就可以!8 F% ^+ O; `3 |5 G3 }
但是运行& ^3 u7 N$ _% ^
(setvar "osmode" 703)
2 {: e" l" _: f; h就不行,
% j7 X1 u! A6 \, k郁闷中……
发表于 2007-6-28 20:29:16 | 显示全部楼层 来自: 中国浙江宁波
你是不是在命令行输入CCD时没有执行你的函数?PCCAD不是很熟,你看看它里面有没有命令为CCD,会不会是命令名冲突,你改个名字试试看。
 楼主| 发表于 2007-6-28 20:40:14 | 显示全部楼层 来自: 中国广东东莞
是的,我在命令行输入CCD,CDD,没有执行我的函数,但是我直接在命令行里运行0 }" f* w* ]' v( y
setvar "osmode" 703; ~* F2 ]# s3 [( {% @8 w  G5 i" V
再确认就可以!
! P% I8 @  a  F: r另外我也试过了换其它的命令名,还是一样。2 \9 |  G5 b( Q) I5 d# ?" p
上面这些程序,在没有装PCCAD的AUTOCAD里面都可以运行,都没有问题(我已经试过,也希望sealive_leafage  % ?) d+ G/ i6 b
试一下,帮我检查一下)
发表于 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 )

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