LISP插件 如何在里面加入线宽 多少
(defun chlayer (layer color / S)(if (null (tblsearch "LAYER" layer))
(entmake
(list
'(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(cons 2 layer) ;图层名称
'(70 . 0) ;图层状态
(cons 62 color) ;图层颜色
'(6 . "bylayer") ;图层线型
)
)
)
(setq S (cadr (ssgetfirst)))
(if S
(command "CHPROP" S "" "la" layer "c" "bylayer" "")
(setvar "clayer" layer)
)
(princ)
)
(defun c:1 ()
(chlayer "0-1原始墙体" 111)
)
(defun c:2 ()
(chlayer "0-2原始柱子" 112)
)
(defun c:3 ()
(chlayer "0-3原始窗户" 113)
现在可以切换图层,自动颜色, 如何自动线宽???
)
(setvar "plinewid" 50) 类型: 整数
保存位置: 图形
初始值: -1
设置新对象的线宽。
-1
将线宽设置为“随层”。
-2
将线宽设置为“随块”。
-3
将线宽设置为“DEFAULT”。“DEFAULT”由 LWDEFAULT 系统变量所控制。
其他以百分之一毫米为单位输入的有效值包括 0、5、9、13、15、18、20、25、30、35、40、50、53、60、70、80、90、100、106、120、140、158、200 和 211。
所有的值都必须以毫米的百分之一为单位输入。(乘上 2540 可以将值的单位从英寸转换为毫米的百分之一。)(cons 370 线宽数值(0,5,9,...211)) edata 发表于 2015-8-2 11:00 static/image/common/back.gif
类型: 整数
保存位置: 图形
初始值: -1
你好 你说的怎么使用?能教教我me >我是新手 添加在那个位置 我只有2个明经 币 够给你 434939575 发表于 2015-8-2 10:27 static/image/common/back.gif
(setvar "plinewid" 50)
你好 这个怎么使用? (defun chlayer (layer color lineww / S)
(if (null (tblsearch "LAYER" layer))
(entmake
(list
'(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(cons 2 layer) ;图层名称
'(70 . 0) ;图层状态
(if color
(cons 62 color) ;图层颜色
(cons 62 7)
)
(if lineww
(cons 370 lineww) ;图层线宽
(cons 370 -3)
)
(cons 6 "Continuous") ;图层线型 图层中没有bylayer
)
)
(progn ;;更新图层颜色线宽 如不需要则删除此段
(setq elist(entget(tblobjname "layer" layer)))
(if color (setq elist(subst(cons 62 color)(assoc 62 elist)elist)))
(if lineww (setq elist(subst(cons 370 lineww)(assoc 370 elist)elist)))
(entmod elist)
);更新颜色线宽结束
)
(setq S (cadr (ssgetfirst)))
(if S
(command "CHPROP" S "" "la" layer "c" "bylayer" "lw" "bylayer" "")
(setvar "clayer" layer)
)
(princ)
)
;;(chlayer "图层名" 颜色数值 线宽数值)
;;线宽取值表0、5、9、13、15、18、20、25、30、35、40、50、53、60、70、80、90、100、106、120、140、158、200 和 211。
(defun c:0 ()
(chlayer "0" nil nil)
)
(defun c:1 ()
(chlayer "0-1原始墙体" 1 40)
)
(defun c:2 ()
(chlayer "0-2原始柱子" nil 40)
)
(defun c:3 ()
(chlayer "0-3原始窗户" 3 nil)
) edata 发表于 2015-8-2 12:28 static/image/common/back.gif
谢谢你!! 感谢,冒昧的问下。 我之前发的那个 颜色切换帖子按照您的意思是太繁琐。
那回复的那个方法 能不能应该在图层 切换上 意义不大
(defun chlayer (layer color lineww / S)
(if (null (tblsearch "LAYER" layer))
(entmake
(list
'(0 . "LAYER")
'(100 . "AcDbSymbolTableRecord")
'(100 . "AcDbLayerTableRecord")
(cons 2 layer) ;图层名称
'(70 . 0) ;图层状态
(if color
(cons 62 color) ;图层颜色
(cons 62 7)
)
(if lineww
(cons 370 lineww) ;图层线宽
(cons 370 -3)
)
(cons 6 "Continuous") ;图层线型 图层中没有bylayer
)
)
(progn ;;更新图层颜色线宽 如不需要则删除此段
(setq elist(entget(tblobjname "layer" layer)))
(if color (setq elist(subst(cons 62 color)(assoc 62 elist)elist)))
(if lineww (setq elist(subst(cons 370 lineww)(assoc 370 elist)elist)))
(entmod elist)
);更新颜色线宽结束
)
(setq S (cadr (ssgetfirst)))
(if S
(command "CHPROP" S "" "la" layer "c" "bylayer" "lw" "bylayer" "")
(setvar "clayer" layer)
)
(princ)
)
;;(chlayer "图层名" 颜色数值 线宽数值)
;;线宽取值表0、5、9、13、15、18、20、25、30、35、40、50、53、60、70、80、90、100、106、120、140、158、200 和 211。
(defun defun_chlayer(lst / a i)
(setq i 0)
(while(setq a(car lst))
(setq i(1+ i))
(eval(read
(strcat
"(defun c:" (itoa i)"()"
"(chlayer \"" (car a) "\" "(if (cadr a) (itoa(cadr a)) "nil") " " (if (caddr a) (itoa(caddr a)) "nil") ")
)"
)
))
(setq lst(cdr lst))
)
)
;;主程序
;(defun_chlayer (list (list "图层名" 颜色值 线宽值)))
;自动生成 数字命令 如果和颜色一起使用则会冲突。
(defun c:tt()
(defun_chlayer (list '("0-1原始墙体" 2 40) '("0-2原始柱子" nil nil)'("0-3原始窗户" 5 5)))
)
edata 发表于 2015-8-2 13:10 static/image/common/back.gif
意义不大
谢谢你。能在帮我出一个CAD里面 只计算面积 与周长 能直接标注出来的代码么?
页:
[1]