将尺寸更改为另一个
这是我在Solidworks中创建的图形上运行的脚本类型例程。我得到了各种不同尺寸样式的尺寸。
我想把它们都改成标准的。
以下是我到目前为止所掌握的。。
我不知道如何将(3“xxxx”)更改为(3“标准”)
此外,您可以同时对多个项目进行TBLSEARCH吗?
(DEFUN C:SWDX ()
(Prompt "Change SW Lines:")
(setq ss4 (ssget "x" '((0 . "LINE")(6 . "PHANTOM"))))
(setq TEST (tblsearch "LAYER" "X25"))
(if (= TEST nil)
(progn
(Command "-layer" "n" "X25" "C" "RED" "X25" "")
)
)
(command "CHANGE" ss4 "" "p""la" "X25" "c" "bylayer" "lt" "Phantom" "LW" "default" "")
(setq ss5 (ssget "x" '((0 . "DIMENSION"))))
(setq TEST (tblsearch "LAYER" "DIM"))
(if (= TEST nil)
(progn
(Command "-layer" "n" "DIM" "C" "RED" "X25" "")
)
)
(command "CHANGE" ss5 "" "p""la" "DIM" "c" "bylayer" "LW" "default" "")
;;; Need to change (3."xxxx") to (3. "Standard") for SS5
(setq ss9 (ssget "x" '((0 . "LINE")(6 . "*CENTER*"))))
(command "ERASE" ss9 "")
(princ))
我知道我的代码编写技能非常初级。。。
如果有更好的方法来做我所做的,我愿意。
如果有人想填空也没关系。。。
谢谢 您需要使用函数*entmod*来更改dimstyles。。。。
(defun c:Test (/ ss i sset e)
(if (setq ss (ssget "x" '((0 . "DIMENSION"))))
(repeat
(setq i (sslength ss))
(setq sset (ssname ss (setq i (1- i))))
(if (not (eq (cdr (assoc 3 (setq e (entget sset)))) "Standard"))
(entmod (subst (cons 3 "Standard") (assoc 3 e) e))
)
)
(princ)
)
(princ)
)
Tharwat 谢谢
TBLSEARCH问题怎么样?
可以同时搜索多个项目吗?
ie:检查几层??
不,您必须单独搜索每个名称-大卫
顺便说一句,您可以使用(entmod/append)修改所有实体:
(defun c:swdx (/ ss4 ss5 en ed)
(if (not (tblsearch "LAYER" "X25"))
(command "_.LAYER" "_N" "X25" "_C" "RED" "X25" ""))
(if (setq ss4 (ssget "_X" '((0 . "LINE")(6 . "PHANTOM"))))
(command "_.CHPROP" ss4 "" "_LA" "X25" "_LW" "Default" ""))
(and (setq ss5 (ssget "_X" '((0 . "DIMENSION"))))
(tblsearch "DIMSTYLE" "STANDARD")
(while (setq en (ssname ss5 0))
(setq ed (entget en)
ed (subst '(3 . "STANDARD") (assoc 3 ed) ed)
ed (subst '(8 . "DIM") (assoc 8 ed) ed))
(if (assoc 62 ed)
(setq ed (subst '(62 . 256) (assoc 62 ed) ed)))
(if (assoc 370 ed)
(setq ed (subst '(370 . -3) (assoc 370 ed) ed))
(setq ed (append ed '((370 . -3)))))
(entmod ed)
(ssdel en ss5)))
(prin1))
页:
[1]