明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3838|回复: 7

求助:哪位高手能帮忙编一个LISP

  [复制链接]
发表于 2006-10-10 11:41:00 | 显示全部楼层 |阅读模式
哪位高手能帮忙编一个LISP,(我想有一个LISP能实现由一个层偏移后,偏移的结果自动转换到另一个图层,效果如图。可以吗?[glow=255,red,2]谢谢哪![/glow]

本帖子中包含更多资源

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

x
发表于 2006-11-2 10:25:00 | 显示全部楼层
这个很像Foxconn里的KK嘛﹐这里好多兄弟都可以的。
发表于 2006-11-2 21:48:00 | 显示全部楼层
太简单了
发表于 2006-11-18 16:22:00 | 显示全部楼层

简单的很,QQ157828573

发表于 2006-11-22 12:42:00 | 显示全部楼层

试试看

;增强的offset命令
(defun c:py (  / ELAST roop do LAY_STR OFFDIST T_KEY T_STR T_STRLST) ;全局变量: CLAY_KEY
  (princ "\n xff.lsp=增强的offset-v1.2")
  (vl-load-com)
  (vl-cmdf ".undo" "be")
  (setq t_strlst '("Through-通过点确定距离." "offsetdist-锁定偏移距离." "当前层." "实体层.")
 elast (entlast)
 roop T
 offdist (if (/= -1 (getvar "offsetdist")) (getvar "offsetdist"))      ;当/=1时存储offsetdist
 t_key (if offdist nil T)
 clay_key nil)
  (while roop
    (if t_key
      (setq t_str (nth 0 t_strlst))
      (setq t_str (nth 1 t_strlst))
    )
    (if clay_key
      (setq lay_str (nth 2 t_strlst))
      (setq lay_str (nth 3 t_strlst))
    )
    (foreach n (list "\n( 当前偏移方式:" t_str "   当前偏移距离值:" (getvar "offsetdist") "   偏移实体到:" lay_str " )") (princ n)) ;;foreach技巧;
    (initget " Undo Dist T Clay eXit")
    (setq do
      ;根据lucas建议,用下句提示代替.(entsel "\n Undo/Dist-调整偏移距离并设固定方式/T-偏移方式开关-(通过or固定)/Clay-偏移到当前层/eXit(空格或回车)/<选择偏移实体>:"))
      (entsel (strcat "\n 选择偏移实体/U-恢复/D-设距离/T-改为:"
        (if t_key "固定" "通过") "/C-改为:"
        (if clay_key  "实体层" "当前层" )   "/<退出>:")))
    (cond
      ((= 'LIST (type do))                                                              ;选中实体.
       (if t_key
  (vl-cmdf ".offset" "Through" do (getpoint "\n偏移到点:") "")                ;through 通过点 方式;
  (vl-cmdf ".offset"
     (if (= nil offdist)(setq offdist (getdist "\n输入新的偏移距离:")) offdist);固定offsetdist方式;;offsetdist=-1时需先得到新的偏移距离;
     do (getpoint (cadr do) "\n选择偏移方向:") "" ))
       (if (entnext elast)                                                              ;如生成新的物体;
  (progn
    (setq elast (entnext elast))
           (if clay_key
        (vla-put-layer (vlax-ename->vla-object elast) (getvar "clayer")))        ;vlax方法改实体层;
         )
  (princ "\n 错误:!!!无法偏移实体!!!")                                                     ;else,无法偏移实体的判定;
       )
       (if (/= (getvar "offsetdist") -1) (setq offdist (getvar "offsetdist")))          ;用于保留offsetdist/=-1时的数值,-1时没必要保留;
      );end case1
      ((= "Undo" do) (vl-cmdf ".u")
                     (setvar "offsetdist" offdist))                                     ;undo时候不改变offsetdist,这个数值不影响t_key时候的正确执行;
      ((= "Dist" do) (setq offdist (getdist "\n输入新的偏移距离:"))                     ;存储offdist;
                     (setq t_key nil))                                                  ;setq t_str避免循环中设置的距离数值无效;
      ((= "T" do) (if t_key (setq t_key nil)                                            ;偏移方式开关.
       (setq t_key T)))                            
      ((= "Clay" do) (if clay_key (setq clay_key nil)(setq clay_key T)))                ;偏移到当前层/原有层--开关.
      ((or (= "eXit" do)                                                                ;退出.
           (and (= nil do)(= (getvar "errno") 52)))
       (setq roop nil))
    )
  );end while
  (vl-cmdf ".undo" "e")     ;undo 结束标志.
  (princ)
)
 楼主| 发表于 2008-1-6 09:51:00 | 显示全部楼层

感谢作者:ctclsc

给ctclsc

非常感谢你的帮忙,你帮我写的LISP对我帮助很大,谢谢你,如果你有兴趣,我这还有一些半成品,因不太完善,想请你帮忙给修改一下。

发表于 2008-1-14 12:52:00 | 显示全部楼层
感谢楼主,程序我下载研究研究.
发表于 2008-5-13 21:51:00 | 显示全部楼层
偏移的结果自动转换到另一个图层,好像不能达到这个目的呀?最好自动转换时还能选择要转换到的图层。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2025-2-27 23:14 , Processed in 0.200075 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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