青春的滋味 发表于 2015-8-1 20:53:05

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)



现在可以切换图层,自动颜色,   如何自动线宽???
)





434939575 发表于 2015-8-2 10:27:32

(setvar "plinewid" 50)

edata 发表于 2015-8-2 11:00:16

类型: 整数
保存位置: 图形
初始值: -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))

青春的滋味 发表于 2015-8-2 11:54:05

edata 发表于 2015-8-2 11:00 static/image/common/back.gif
类型: 整数
保存位置: 图形
初始值: -1


你好 你说的怎么使用?能教教我me >我是新手   添加在那个位置   我只有2个明经 币 够给你

青春的滋味 发表于 2015-8-2 12:04:45

434939575 发表于 2015-8-2 10:27 static/image/common/back.gif
(setvar "plinewid" 50)

你好 这个怎么使用?

edata 发表于 2015-8-2 12:28:04

(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)
)

青春的滋味 发表于 2015-8-2 12:34:21

edata 发表于 2015-8-2 12:28 static/image/common/back.gif


谢谢你!! 感谢,冒昧的问下。 我之前发的那个 颜色切换帖子按照您的意思是太繁琐。   
那回复的那个方法 能不能应该在图层 切换上

edata 发表于 2015-8-2 13:10:17

意义不大
(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)))
)
          

青春的滋味 发表于 2015-8-2 13:16:58

edata 发表于 2015-8-2 13:10 static/image/common/back.gif
意义不大

谢谢你。能在帮我出一个CAD里面 只计算面积 与周长 能直接标注出来的代码么?   
页: [1]
查看完整版本: LISP插件 如何在里面加入线宽 多少