绘图标准化在初始线型的时候,原用command命令,并且修改线型文件。其实可以用entmake(entmakex)函数创建。更加简洁。
原文出处:CAD绘图初始化探讨与setup函数解析
http://bbs.mjtd.com/forum.php?mo ... 015&fromuid=7303580
创建虚线:(lts为1000)
- (defun make_dash( / temp-list)
- (setq temp-list (list '(0 . "LTYPE") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLinetypeTableRecord")
- '(2 . "DASHED") '(70 . 0) '(3 . "Dashed __ __ __ __ __ __ __ __ __ __ __ __ __ _")
- '(72 . 65) '(73 . 2) '(40 . 0.4) '(49 . 0.3) '(74 . 0) '(49 . -0.1) '(74 . 0)))
- (entmakex temp-list)
- )
创建点划线:
- (defun make_axis( / temp-list)
- (setq temp-list (list '(0 . "LTYPE") '(100 . "AcDbSymbolTableRecord") '(100 . "AcDbLinetypeTableRecord")
- '(2 . "DOTE") '(70 . 0) '(3 . "DOTE _________________._________________")
- '(72 . 65) '(73 . 4) '(40 . 2.725) '(49 . 2.5) '(74 . 0) '(49 . -0.1) '(74 . 0) '(49 . 0.025) '(74 . 0) '(49 . -0.1) '(74 . 0)))
- (entmakex temp-list)
- )
如果创建失败,返回为nil,是图纸中已含该线型的定义。可以修改。比如修改虚线:
- (defun std-dashed(en / code73 code40 vallist ent X)
- ;函数std-dashed,参数en 图元名。返回值,标准虚线,由vallist参数内定。
- ;Desiged by 林霄云 2018年9月17日
- ;(tblobjname "ltype" "dashed");用于测试。可以作为参数传递对象。
- ;(0 . LTYPE) (0 . LTYPE) (5 . 249) (100 . AcDbSymbolTableRecord) (100 . AcDbLinetypeTableRecord) (2 . DASHED) (70 . 0) (3 . Dashed __ __ __ __ __ __ __ __ __ __ __ __ __ _)
- ; (72 . 65) (73 . 2) (40 . 0.4) (49 . 0.3) (74 . 0) (49 . -0.1) (74 . 0))
- (setq code73 2 code40 0.4 vallist '(0.3 -0.1))
- (setq ent (entget en))
- ;第一步,去掉49、74
- (setq ent
- (vl-remove-if '(lambda(X)
- (if (= 49 (car X) ) t )
- );lambda
- ent
- ));
- (setq ent
- (vl-remove-if '(lambda(X)
- (if (= 74 (car X) ) t )
- );lambda
- ent
- ));
- ;第二步,更新40,73
- (setq ent (subst (cons 40 code40)(assoc 40 ent) ent))
- (setq ent (subst (cons 73 code73)(assoc 73 ent) ent))
- ;第三步,添加新的49、74
- (mapcar '(lambda(x)(setq ent (append ent (list (cons 49 x)(cons 74 0))))) vallist)
- (princ ent)
- (entmod ent)
- );defun
本文可作为entmake创建图元的补充:
entmake创建图元必要条件(慢慢更新)
http://bbs.mjtd.com/forum.php?mo ... 482&fromuid=7303580
|