entmake创建线型——绘图标准化
绘图标准化在初始线型的时候,原用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
给力 同为结构人感谢楼主为标准化画图做的贡献 強烈支持!!!! 请问如何创建复杂线型?(带字符串的) 原地踏步 发表于 2018-9-20 20:48
请问如何创建复杂线型?(带字符串的)
先取得复杂线型dxf的定义数据:(entget (tblobjname "ltype" "复杂线型名称“)) 林霄云 发表于 2018-9-25 08:51
先取得复杂线型dxf的定义数据:(entget (tblobjname "ltype" "复杂线型名称“))
我有另外一个思路 我觉得不如自己做一个dwt模板文件 更省事 林霄云 发表于 2018-9-25 08:51
先取得复杂线型dxf的定义数据:(entget (tblobjname "ltype" "复杂线型名称“))
所谓“创建”,就是图中原本不存在的。用tblobjname只能返回nil。 学习一下,:handshake 林霄云 发表于 2018-9-25 08:51
先取得复杂线型dxf的定义数据:(entget (tblobjname "ltype" "复杂线型名称“))
不清楚哪些是必要的,哪些是多余的,生成不出来
页:
[1]