QQ登录

只需一步,快速开始

登录 | 注册 | 找回密码

三维网

 找回密码
 注册

QQ登录

只需一步,快速开始

展开

通知     

全站
6天前
查看: 3843|回复: 10
收起左侧

[已解决] 查询当前图层的Lisp语言如何写

[复制链接]
发表于 2007-1-30 09:28:15 | 显示全部楼层 |阅读模式 来自: 中国辽宁盘锦

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

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

x
在AutoCad绘图处始状态,查询当前图层的Lisp语言如何写
发表于 2007-2-1 20:01:47 | 显示全部楼层 来自: 中国广东深圳
楼主,能否把你的要求说的清楚一点呢?
( E  t0 X2 D6 X$ i- c或许我可以帮你
 楼主| 发表于 2007-2-1 23:45:14 | 显示全部楼层 来自: 中国辽宁
首先谢谢!6 f* _! p! `6 \9 t! a  j
举个例!
& \- w3 O" E" z' K# Z+ r/ b% F2 U我要编一个LISP程序,我在绘图状态下,当前图层是粗实线层,这时我用标注尺寸的命令,要求尺寸线自动处在尺寸线层,尺寸标完后又回到标注前的当前图层(这里为粗实线层)。. g" o  A# X1 O. N
这里关键就是要求鼠标不进行任何点击操作,而取得当前是在何图层的数据。3 b8 R* \" f$ }! f, K+ v4 ~/ j% W" C0 K
请高人给指点,感激不尽!
发表于 2007-2-2 07:43:20 | 显示全部楼层 来自: 中国山东临沂
用系统变量clayer,即可返回当前层名,多看看AutoCAD的帮助就可以了
 楼主| 发表于 2007-2-2 08:37:01 | 显示全部楼层 来自: 中国辽宁
谢谢指点!我刚学LISP!
发表于 2007-2-2 15:57:48 | 显示全部楼层 来自: 中国广东深圳
呵呵,我明白你的意思了。) J% c8 l5 `6 s4 Z6 c) O9 i1 Y
想法是很好,要把所有的绘图命令以及所有的标注命令全重新做一个LISP程序,要它在执行命令之前先更改当前层。
' P) b6 j! l4 i# m' N我还要提出一点,就是画实线用L,那虚线、中心线等等其它的线型呢,这样一定会增加命令,这样吧,我有一个小工具,或许可以帮到你一点,/ f7 G8 Y* t0 ^+ w

2 s+ G6 c- ^- V' c2 ?8 R/ ~  z6 T% R0 L1、你先加载这个程序,- _3 T# N$ ?! G/ P% u
2、在命令行里输入“YY”
/ A4 }9 L+ [3 @, @( C5 y$ r3、在对话框里设置快捷键
  r- b0 N: m" _: b如果不明白,再问我吧
1.jpg
212.gif

70个小工具.rar

60.86 KB, 下载次数: 18

小工具

发表于 2007-2-2 21:20:36 | 显示全部楼层 来自: 中国浙江杭州
在帮助里面输入图层。然后看命令行提示。里面写的很详细,各种参数的对照意思。: u6 }& C- @  f" ^- T; b0 F0 |
, R6 Z* ^  m# \; M* d* m1 Y0 i5 r
多看帮助有利于学习提高。
 楼主| 发表于 2007-2-2 23:10:11 | 显示全部楼层 来自: 中国辽宁
提供70个小工具的大哥程序收到,很感激。
/ X, {( S+ _8 D( ^( t6 ^5 c+ @但我编要实现我的上述功能的程序执行起来为何就有问题呢?请指点
2 o  u$ H" ~2 W0 B  G ( s2 {- Z) H) j, K; v
(defun c:xdimlinear()" o& ?& E! m: j- K' R2 F0 `. Y: I
  (setq old_lay (getvar "clayer")). x; p: Y  N" z3 s2 e$ v
   (setvar "clayer" "尺寸线")$ L3 P, S9 R: K- x6 y* T* O
   (command "dimlinear")
6 O  ?' k% @5 Y% s; @% d   (setvar "clayer" old_lay“) ;;;不能回到old_lay层  h8 G) N  o9 N" V2 c1 @( a! C
)
发表于 2007-2-3 09:09:33 | 显示全部楼层 来自: 中国广东深圳
楼主,你试一下,以下我改过的
3 o* U1 `; n- I! `8 A
7 t  M3 C5 D; K# f(defun c:xdimlinear(/ old_lay)5 a! |! p+ D) `7 ?4 r  H
  (setq old_lay (getvar "clayer"))' g! {4 E+ I6 f% {  S; h( r+ t  h
   (setvar "clayer" "尺寸线")
5 t1 ^& A: P7 q$ L   (command "dimlinear" pause pause)
. o# z. \: ?+ Z& H   (setvar "clayer" old_lay) ;;;不能回到old_lay层* l4 M# u8 k1 I
)2 D+ g8 ]- t, @, ?

" Z1 g. H( y: H; h( t[ 本帖最后由 偶就稀饭美金 于 2007-2-3 09:11 编辑 ]
 楼主| 发表于 2007-2-3 10:03:09 | 显示全部楼层 来自: 中国辽宁
问题解决了,多谢高人指点使我少走弯路,pause我用过,就是没有连用2个,看来我要多学习。
发表于 2007-2-3 10:22:37 | 显示全部楼层 来自: 中国广东深圳
呵呵,不要说我是高人,我也只是新手) O# H( ?2 m! D. R6 p5 O* M$ n% V
大家一起学习
发表回复
您需要登录后才可以回帖 登录 | 注册

本版积分规则


Licensed Copyright © 2016-2020 http://www.3dportal.cn/ All Rights Reserved 京 ICP备13008828号

小黑屋|手机版|Archiver|三维网 ( 京ICP备2023026364号-1 )

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