本帖最后由 xyp1964 于 2017-11-20 22:01 编辑
- ;; 很多函数都是嵌套的,可能部分函数给得不全,就慢慢完善吧……
- ;; xyp-SubUpd 更改图元DXF组码以修改实体属性 (xyp-SubUpd ename code newvalue)
- ;|
- 功能 : 更改图元、图元表、选择集DXF组码以修改实体属性
- 方式 : (xyp-SubUpd 实体名 DXF码 新值)
- 实例1 : 改圆半径为500
- (xyp-SubUpd (car(entsel"\n选择圆: ")) 40 500)
- 实例2 : 改文本为"明经通道"
- (xyp-SubUpd (car(entsel"\n选择文本: ")) 1 "明经通道")
- 实例3 : 改块的插入点为(0 0 0)
- (xyp-SubUpd (car(entsel"\n选择图块: ")) 10 '(0 0 0))
- (xyp-SubUpd (ssget) 62 1)
- |;
- (defun xyp-SubUpd (ename code val / ent x y i s1)
- (cond ((= (type ename) 'ENAME)
- (setq ent (entget ename))
- (if (and (= (type code) 'LIST) (= (type val) 'LIST))
- (mapcar '(lambda (x y) (xyp-SubUpd ename x y)) code val)
- (progn
- (if (= (xyp-dxf code ename) nil)
- (entmod (append ent (list (cons code val))))
- (entmod (subst (cons code val) (assoc code ent) ent))
- )
- (entupd ename)
- )
- )
- )
- ((= (type ename) 'PICKSET)
- (setq i -1)
- (while (setq s1 (ssname ename (setq i (1+ i))))
- (xyp-SubUpd s1 code val)
- )
- )
- ((= (type ename) 'LIST)
- (foreach s1 ename (xyp-SubUpd s1 code val))
- )
- )
- ename
- )
;;实例:
;; 选择集变红色
(xyp-SubUpd (ssget) 62 1)
;; 批量字高改500
(xyp-SubUpd (ssget '((0 . "text"))) 40 500)
;; 直线起点改到原点
(xyp-SubUpd (ssget '((0 . "line"))) 10 '(0 0 0))
|