大家好,
我编写了一个简短的LISP代码来执行MATCHPROP命令的一些任务。
以下是函数:
- (defun MatchProp (oldobj newobj key / oldobjlist newobjlist oldassoc newassoc)
- (setq oldobjlist (entget oldobj))
- (setq newobjlist (entget newobj))
- (setq newassoc (assoc key newobjlist))
- (if (setq oldassoc (assoc key oldobjlist))
- (progn
- (if newassoc
- (progn
- (setq newobjlist (subst oldassoc newassoc newobjlist))
- )
- (progn; it is bylayer
- (setq newobjlist (append newobjlist (list oldassoc)))
- )
- )
- )
- (progn; set it to bylayer
- (if newassoc
- (progn
- (setq newobjlist (vl-remove newassoc newobjlist))
- )
- )
- )
- )
- (entmod newobjlist)
- )
这是一个例子,展示了它的名称:
- (defun c:go()
- (setq oldobj (car (entsel)))
- (setq newobj (car (entsel)))
- (MatchProp oldobj newobj [color=darkslateblue][b]8[/b][/color]); [color=magenta]layer[/color]
- (MatchProp oldobj newobj [color=darkslateblue][b]62[/b][/color]); [color=magenta]color[/color]
- (MatchProp oldobj newobj [color=darkslateblue][b]420[/b][/color]); [color=magenta]color RGB[/color]
- (MatchProp oldobj newobj [color=darkslateblue][b]430[/b][/color]); [color=magenta]color name[/color]
- (MatchProp oldobj newobj [color=darkslateblue][b]6[/b][/color]); [color=magenta]linetype[/color]
- (MatchProp oldobj newobj [color=darkslateblue][b]48[/b][/color]); [color=magenta]linetype scale[/color]
- (MatchProp oldobj newobj [color=darkslateblue][b]370[/b][/color]); [color=magenta]lineweight[/color]
- (MatchProp oldobj newobj [color=darkslateblue][b]440[/b][/color]); [color=magenta]tranparency[/color]
- (MatchProp oldobj newobj [color=darkslateblue][b]390[/b][/color]); [color=magenta]plot style[/color]
- )
当我选择具有命名颜色、线型等的对象(不是Bylayer)时效果很好,但反之亦然。
有谁能检查一下,看看我的程序或entmod函数有什么问题吗?
提前感谢:)。 |