QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

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

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

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

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

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

x
编了以下的LISP程序:
9 O' v% v4 B" w6 h! n8 ^  p7 L(defun c:CCD()
: c. D  M% S' [( c  (prompt "\n恢復捕捉模式:")
8 a; u2 Q1 ^2 k( A" a! N- h  (setvar "osmode" 703)7 n! v: ]9 B0 u
)
, T% z9 C- T9 @. C+ {(defun c:CDD()2 l! u; T( [* \9 U$ g! H
  (prompt "\n取消捕捉模式:")1 F& E* H0 t& x7 A$ `  r" Y& L; o
  (setvar "osmode" 0)4 w8 t9 Y* r# [8 [( k( p- b. [
)
, O% ~* L' ?/ j  ~8 n7 ?+ X在AUTOCAD2004中运行无任何问题,但在6 X, S' j1 D. K! A/ _
AUTOCAD2006---AUTOCAD2008中却无法使用,请高手看看问题在哪里???
发表于 2007-6-27 20:58:32 | 显示全部楼层 来自: 中国浙江宁波
为何要定义同样的命令二次?同名函数定义重复,最后加载的函数起作用;) p1 u5 M  S# s
设置捕捉模式一般是在程序执行前获得当前设置存储,然后设置自已程序中的捕捉模式,在你的程序执行完后,恢复捕捉模式到程序执行前的状态;; N. c. s, c9 d3 B. y4 D  G. }
(defun C:CCD()" b4 P4 |9 e  d0 a9 S% {4 F
(setq Osnapmode (getvar "OSMODE"));获得当前捕捉模式/ S* e; ^0 ?* N! g+ |. y
(setvar "OSMODE" 703);设置程序中需要的模式
& B+ x! X; s( G2 L, B) z;;your code/ G9 b' V! N: n& j
(setvar "OSMODE" Osnapmode);恢复初始状态
, q1 g, G* l% h5 Q9 C! t);defun
 楼主| 发表于 2007-6-28 08:06:27 | 显示全部楼层 来自: 中国广东东莞
谢谢sealive_leafage 的回贴,可能你误会了我的意思了,这是定义好的两个命令,4 r+ j. I+ d9 R, z1 b$ N
CCD即将捕捉模式定为703(这些都是最常用的,太多的话绘图有迟缓现象);
7 c$ k' }' b% F) X' Y- {CDD就是取消捕捉;
0 L" ]9 t& _+ C4 t- E3 U# ~6 U这个程序应该没有问题,我以前用的很好的,只是在装了PCCAD后才出问题的。在没有装PCCAD的系统中运行也是正常的。* M: ]6 L! ^7 H4 @: c+ \
我感到有疑问的地方是:. Z& @) X* f( L2 ?0 u
我手动设置捕捉模式为703,没有问题,
& p+ d% B% D- b. n# U' c' f% S7 S但用我的程序设置就有问题(另外在未装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 | 显示全部楼层 来自: 中国广东东莞
我是写在另外一个文件里面的,里面有很多的程序,其它的都没有问题,只用其中的几个有问题:: K4 v8 ~. E( s' h0 A* E% K: Q
;*******************************************************************************. V, F, ~! |0 K7 g. |$ r
(defun c:CCD()8 Q) r6 Z$ F5 T- |7 d
  (prompt "\n恢復捕捉模式:")
6 V& W5 Z1 M8 E' u* y; b; B2 S  (setvar "osmode" 703)# C" k# v% v; ^/ P
)
0 J# A2 C4 P) b3 |: I;*******************************************************************************9 O$ v. D! G2 X/ ]! o
(defun c:CDD()/ @+ E1 _. l& K0 I& R" K1 f, K: `* m
  (prompt "\n取消捕捉模式:"), l# i# t6 c) |. Q$ ]3 v2 m
  (setvar "osmode" 0)
3 d- j% }" O0 h6 A( j( W; V)
* T, r$ [8 I! r& _' b; Z& x;*******************************************************************************0 w& j: W/ B0 F: a7 N) O- ^9 s
(DEFUN C:er(/ VAR1 VAR2 O A P Q)  ;功能:切換到物體所在layer ( J/ M- V9 @  e( M1 e
  (SETQ VAR1 (GETVAR "BLIPMODE"))& v- @- ]; z% N4 s  L. i# _
  (SETQ VAR2 (GETVAR "CMDECHO"))& }: G) p8 d$ c+ p4 J! d! M: D; @
  (SETVAR "BLIPMODE" 0)
$ F: r/ ^$ k, @+ n$ y: a# G' [7 M  (SETVAR "CMDECHO"  0)8 m* V9 r  R/ L% Y4 s
  (PRINC "\n 切換到物體所在層 : ")% g) q" E& g4 Y( C- p. b
  (SETQ O (ENTSEL))
7 Y' U8 `* a7 G  (SETQ A (ENTGET (CAR O)))- {6 R2 a8 ^. X6 J! u' h
  (SETQ P (CDR (ASSOC 8 A)))+ t8 Y: |$ L( Q3 D# m$ h
  (SETQ Q (GETVAR "CLAYER"))6 e% q( w  a( V
  (IF (= Q P)
, I9 N& |/ b  f4 {; x      (PRINC "\n CORRENT LAYER,CAN'T FROOZEN!!!!")- _6 H7 _& V- M4 M
      (COMMAND "_-LAYER" "_s" P "")% F6 i/ f6 ?1 L( ?) g  a
   )
) n3 C3 v# s+ D! ~  (SETVAR "BLIPMODE" VAR1)
3 W8 S2 a0 _) G- E  (SETVAR "CMDECHO"  VAR2)9 `+ E7 n& ]2 k  l
  (PRINC "\nOK!")(PRINC); u% Z# s* z/ L( R, K
)
& T2 h0 w: l( S;*******************************************************************************4 f" g/ |5 @+ {9 F2 P2 A. u
;*******************************************************************************  i" V" _; ]& p/ `  I5 E2 z+ q' P3 F
另外:
" z1 H9 B* B9 J8 \2 {- Q( v2 \6 p直接在命令行里运行下边一句:: a9 Q' B" U" T% b& o
setvar "osmode" 703
/ p3 Y$ J7 U# |: L& K9 T: V# K再确认就可以!
1 E% i% \: e( q$ |9 F但是运行" y1 B4 u5 N+ f* T, k) C: J# {
(setvar "osmode" 703)
! I! p" }) K. ?4 ~3 g就不行,
. u$ o( L' m& `3 y! R) N  |郁闷中……
发表于 2007-6-28 20:29:16 | 显示全部楼层 来自: 中国浙江宁波
你是不是在命令行输入CCD时没有执行你的函数?PCCAD不是很熟,你看看它里面有没有命令为CCD,会不会是命令名冲突,你改个名字试试看。
 楼主| 发表于 2007-6-28 20:40:14 | 显示全部楼层 来自: 中国广东东莞
是的,我在命令行输入CCD,CDD,没有执行我的函数,但是我直接在命令行里运行7 a+ i  m! a$ m! g
setvar "osmode" 703
$ j8 S$ P' o  _再确认就可以!
3 p' D. u, S% @6 J) n0 @: L另外我也试过了换其它的命令名,还是一样。
+ q. u( d' b2 r' _2 ^上面这些程序,在没有装PCCAD的AUTOCAD里面都可以运行,都没有问题(我已经试过,也希望sealive_leafage  
: Q6 |& j5 l# M/ y. n+ H0 d* u8 _4 z% M试一下,帮我检查一下)
发表于 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 )

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