明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1534|回复: 4

[源码] 合并程序

[复制链接]
发表于 2013-11-5 09:03:53 | 显示全部楼层 |阅读模式
;**********单关图层*******************
(Defun C:f1 (/ SS CNT LAY LAYLST VAL)
  (if (not (setq SS (ssget "i")))
    (progn
      (setq SS (ssget))))
  (if SS
    (progn
      (setq CNT 0)
      (while (setq LAY (ssname SS CNT))
        (setq LAY (cdr (assoc 8 (entget LAY))))
        (if (not (member LAY LAYLST))
          (setq LAYLST (cons LAY LAYLST))
        )
        (setq CNT (1+ CNT))
      )
      (if (member (getvar "CLAYER") LAYLST)
        (setq LAY (getvar "CLAYER"))
        (setvar "CLAYER" (setq LAY (last LAYLST)))
      )
      (command "_.-LAYER" "_OFF" "*" "_Y")
      (foreach VAL LAYLST (command "_ON" VAL))
      (command "")
      
      (if (= (length LAYLST) 1)
        (prompt (strcat "\nLayer " (car LAYLST) " has been isolated."))
        (prompt (strcat "\n" (itoa (length LAYLST)) " layers have been isolated. "
                        "Layer " LAY " is current."
                )
        )
      )
    )
  )
  (restore_old_error)
  (princ)
)
这是一个关闭图层的程序,选中某一物体,程序就关闭除所选物体所在图层的其他层。

(defun C:zx(/ pt1 pt2 dis x1 pt3 pt4 pt5 pt6 p1 p2 p3 p4 ptt pts ang ang1 scale)
  ;;保存系统变量设置
  (setq old_OS  (getvar "OSMODE")
      old_CMD (getvar "CMDECHO")
       old_OR (getvar "OrthoMode")
    )
  (setvar "CMDECHO" 0)
  (setvar "OSMODE" 0)
  (setvar "OrthoMode" 0)
  (setq scale (getreal "\nScale<100>:"))
(if (= scale nil)
  (setq scale 100)
)
  (setq pt1 (getpoint "\nFirst point:"))
  (setq pt2 (getpoint pt1 "\nSecond point:"))
  (setq ang (angle pt1 pt2))
  (setq dis (distance pt1 pt2))
  (setq x1 (/ (- dis (* 2 scale)) 2))
(setq pt3 (polar pt1 ang x1))
(setq pt4 (polar pt1 ang (+ x1 (* 2 scale))))
(setq pt5 (polar pt3 (+ ang 1.32582) (* 2.0616 scale)))
(setq pt6 (polar pt4 (- ang 1.81577) (* 2.0616 scale)))
(command "pline" pt1 pt2 "")
   (setq ee (entlast))
   (setVar "OrthoMode" 1)
(setq ptt (getpoint pt2 "\n剪切方向:"))
(setq ang1 (angle pt2 ptt))
(setq p1 (polar pt1 ang1 100))
  (setq p2 (polar pt2 ang1 100))
  (setq p3 (polar pt2 ang1 1000))
  (setq p4 (polar pt1 ang1 1000))
  (setq pts (list P1 P2 P3 P4))
  (command"_ERASE"(ssget "WP" pts)"")
     (command "_trim" ee "" "f" p1 p2  "" "")
(entdel ee)
  (command "pline" pt1 "w" "0" "0" pt3 pt5 pt6 pt4 pt2 "")  
   ;;恢复系统变量设置
    (setvar "CMDECHO" old_CMD)
    (setvar "OSMODE" old_OS)
    (setvar "OrthoMode" old_OR)
  (princ)(princ)
)      
这是一个画折断线的程序,请问,如何把这两个程序合并成一个程序,


"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2013-11-5 09:13:18 | 显示全部楼层
(defun C:zx(/ pt1 pt2 dis x1 pt3 pt4 pt5 pt6 p1 p2 p3 p4 ptt pts ang ang1 scale)
   (C:f1 )
   ;;保存系统变量设置
  ...
)
  
 楼主| 发表于 2013-11-5 09:22:56 | 显示全部楼层
不行啊,出现
Layer 楼梯 has been isolated.; 错误: no function definition: RESTORE_OLD_ERROR
发表于 2013-11-5 10:03:38 | 显示全部楼层
您得先让 单关图层 可单独执行...

或先行关闭
;; (restore_old_error)
发表于 2013-11-5 11:33:55 | 显示全部楼层
楼主不应该把一个截断线程序分n个主题帖子发帖(版主可以合并下),自己发的帖子可以更新帖子标题的。应该说明自己预期的程序运行之目的(最终效果);
Andyhon 长老的用法是对的
话有点多,楼主见谅
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-15 14:04 , Processed in 0.215441 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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