- 积分
- 63754
- 明经币
- 个
- 注册时间
- 2010-5-9
- 在线时间
- 小时
- 威望
-
- 金钱
- 个
- 贡献
-
- 激情
-
|
本帖最后由 自贡黄明儒 于 2014-1-29 19:36 编辑
;;*****修改文字上下划线******黄明儒2013年12月18日
(defun C:uo (/ EN PT PTT STR X)
;;[功能]pt是在text上部,返回T
(defun HH:TextSX (e en pt / H PT1)
(setq h (cdr (assoc 40 en)))
(setq pt1 (trans pt 1 0))
(vl-cmdf "_.ucs" "OB" e) ;转到对象坐标系
(setq pt1 (trans pt1 0 1)) ;当前ucs
(vl-cmdf "_.ucs" "_p") ;恢复ucs
(< (/ h 2.0) (cadr pt1))
)
;;Flag,nil 右击,删除上下划线
(defun leftPick (e pt Flag / EN STR)
(set 'en (entget e))
(setq str (cdr (assoc 1 en)))
(mapcar '(lambda (x) (setq str (vl-string-trim x str)))
(list "%%O" "%%o" "%%U" "%%u")
)
(if Flag
(if (HH:TextSX e en pt)
(entmod (subst (cons 1 (strcat "%%o" str)) (assoc 1 en) en))
(entmod (subst (cons 1 (strcat "%%u" str)) (assoc 1 en) en))
)
(entmod (subst (cons 1 str) (assoc 1 en) en))
)
)
;; 本程序主程序
(vl-load-com)
(HH:ayOSMode nil)
(princ "\n 修改文字上下划线(左击:上下划线; 右击:删除)")
(while
(cond ((and (setq pt (grread t 4 2)) ;获取grread值
(equal (car pt) 5)
)
(progn
(setq ptt (cadr pt)
en (nentselp ptt)
)
t
)
)
((and (equal (car pt) 3) en (ssget (cadr en) '((0 . "TEXT")))) ;3为左键
(leftPick (car en) (cadr en) T)
)
((and (or (equal (car pt) 11) (equal (car pt) 25))
en
(ssget (cadr en) '((0 . "TEXT")))
) ;右键
(leftPick (car en) (cadr en) nil)
)
)
)
(HH:ayOSMode T)
(gc)
(princ)
)
;;*****修改文字上下划线******黄明儒2013年12月18日
;;本程序是想说明,可以将文字划分成网格,touch不同的地方产生不同的反应,从而显得"文本"生机勃勃,同现实比较接近。好多对象均可这样处理。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?注册
x
评分
-
查看全部评分
本帖被以下淘专辑推荐:
- · 应用类函数|主题: 200, 订阅: 26
- · 学习|主题: 24, 订阅: 0
|