明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
12
返回列表 发新帖
楼主: JS结构

新人第一次发帖

[复制链接]
 楼主| 发表于 2022-12-7 20:03:25 | 显示全部楼层

弱弱问一下:为什么要定义出错函数呢,不太了解这个的用处
 楼主| 发表于 2022-12-7 20:04:35 | 显示全部楼层
depgfdepgf 发表于 2022-12-7 09:03
长宽比出来的洞口线比例不好看,希望再次改进下

大佬有什么好的思路提示一下吗
发表于 2022-12-7 21:36:04 | 显示全部楼层
JS结构 发表于 2022-12-6 20:53
感谢大佬~ 不明觉厉!我还得多多学习

一般用在ESC或者发生错误退出时恢复之前保存的变量。
举个例子:你记录了当前图层后切换了图层,执行程序后恢复图层。如果程序出错没有执行到恢复图层这一步就不好啦~这个时候就可以用出错函数来恢复保存的变量
发表于 2022-12-8 02:04:10 | 显示全部楼层
本帖最后由 kucha007 于 2022-12-8 02:09 编辑

又试了一下,加了线型

  1. (defun c:TT (/ Old_Cmd Old_OSM obj ptlist pmin pmax pmid co lt *ent*)
  2.   (setq Old_Cmd (getvar "cmdecho"))
  3.   (setq Old_OSM (getvar "OSMode"))
  4.   (defun *error* ( msg );定义出错函数
  5.       (setvar "cmdecho" Old_Cmd)
  6.       (setvar "OSMode" Old_OSM)
  7.   )
  8.   (setvar "cmdecho" 0)
  9.   (command "_.rectangle" "_fillet" 0.0) ;圆角归零
  10.   (while (/= 0 (getvar 'cmdactive))(vl-cmdf pause))
  11.   (setvar "OSMode" 0)
  12.   (if (and
  13.           (setq obj (entget (entlast)))
  14.           (setq ptlist
  15.               (vl-sort
  16.                     (mapcar
  17.                         '(lambda (pt)
  18.                             (trans
  19.                               (list
  20.                                 (car pt);X
  21.                                 (cadr pt);Y
  22.                                 (cdr (assoc 38 obj)) ;Z
  23.                               )
  24.                               0 1
  25.                             )
  26.                         );WCS to UCS
  27.                         (mapcar 'cdr
  28.                             (vl-remove-if '(lambda (x) (/= (car x) 10)) obj)
  29.                         );获取WCS坐标
  30.                     );获取UCS点集
  31.                   '(lambda (a b)
  32.                           (cond
  33.                             ((= (car a) (car b)) (< (cadr a) (cadr b)));如果x相等,就比较y
  34.                             ((< (car a) (car b))) ;如果x不相等,就比较x
  35.                           )
  36.                       )
  37.               ) ;排序:先X后Y
  38.           )
  39.           (setq pmin (car ptlist))
  40.           (setq pmax (car (reverse ptlist)))
  41.           (setq pmid (mapcar '+
  42.                             pmin
  43.                             (mapcar '* (mapcar '- pmax pmin) '(0.25 0.6))
  44.                     )
  45.           )
  46.       )
  47.       (progn
  48.           (command "_.pline" pmin pmid pmax "")
  49.           (setq *ent* (entget (entlast)))
  50.           (setq co 8);8号色
  51.           (setq lt "DASHED");线型
  52.           (if (assoc 62 *ent*)
  53.             (entmod (subst (cons 62 co) (assoc 62 *ent*) *ent*)) ;替换颜色
  54.             (entmod (append *ent* (list (cons 62 co)))) ;添加颜色
  55.           )
  56.           (if (not (tblsearch "ltype" lt))
  57.             (vla-load (vla-get-linetypes (vla-get-activedocument (vlax-get-acad-object))) lt "acadiso.lin")
  58.           )
  59.           (if (assoc 6 *ent*)
  60.             (entmod (subst (cons 6 lt) (assoc 6 *ent*) *ent*)) ;替换线型
  61.             (entmod (append *ent* (list (cons 6 lt)))) ;添加线型
  62.           )
  63.       )
  64.   )
  65.   (setvar "cmdecho" Old_Cmd)
  66.   (setvar "OSMode" Old_OSM)
  67.   (princ)
  68. )


回复 支持 1 反对 0

使用道具 举报

 楼主| 发表于 2022-12-19 20:51:47 | 显示全部楼层
kucha007 发表于 2022-12-7 21:36
一般用在ESC或者发生错误退出时恢复之前保存的变量。
举个例子:你记录了当前图层后切换了图层,执行程 ...

学到了 学到了  感谢大佬
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 06:49 , Processed in 0.136373 second(s), 16 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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