明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1160|回复: 8

[提问] LISP插件 如何在里面加入线宽 多少

[复制链接]
发表于 2015-8-1 20:53 | 显示全部楼层 |阅读模式
(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)



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





发表于 2015-8-2 10:27 | 显示全部楼层
(setvar "plinewid" 50)
发表于 2015-8-2 11:00 | 显示全部楼层
类型: 整数
保存位置: 图形
初始值: -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 可以将值的单位从英寸转换为毫米的百分之一。)
  1. (cons 370 线宽数值(0,5,9,...211))
复制代码
 楼主| 发表于 2015-8-2 11:54 | 显示全部楼层
edata 发表于 2015-8-2 11:00
类型: 整数
保存位置: 图形
初始值: -1

你好 你说的怎么使用?  能教教我me >我是新手   添加在那个位置   我只有2个明经 币 够给你
 楼主| 发表于 2015-8-2 12:04 | 显示全部楼层
434939575 发表于 2015-8-2 10:27
(setvar "plinewid" 50)

你好 这个怎么使用?
发表于 2015-8-2 12:28 | 显示全部楼层
  1. (defun chlayer (layer color lineww / S)
  2. (if (null (tblsearch "LAYER" layer))
  3. (entmake
  4.   (list
  5.    '(0 . "LAYER")
  6.    '(100 . "AcDbSymbolTableRecord")
  7.    '(100 . "AcDbLayerTableRecord")
  8.     (cons 2 layer)        ;图层名称
  9.    '(70 . 0)              ;图层状态
  10.    (if color
  11.     (cons 62 color)       ;图层颜色
  12.      (cons 62 7)
  13.      )
  14.    (if lineww
  15.      (cons 370 lineww)       ;图层线宽
  16.      (cons 370 -3)
  17.      )
  18.    (cons 6 "Continuous")        ;图层线型 图层中没有bylayer
  19. )
  20. )
  21.   (progn ;;更新图层颜色线宽 如不需要则删除此段
  22.     (setq elist(entget(tblobjname "layer" layer)))
  23.     (if color (setq elist(subst(cons 62 color)(assoc 62 elist)elist)))
  24.     (if lineww (setq elist(subst(cons 370 lineww)(assoc 370 elist)elist)))
  25.     (entmod elist)
  26.     );更新颜色线宽结束         
  27. )
  28. (setq S (cadr (ssgetfirst)))
  29. (if S
  30.   (command "CHPROP" S "" "la" layer "c" "bylayer" "lw" "bylayer" "")
  31.   (setvar "clayer" layer)
  32. )
  33. (princ)
  34. )
  35. ;;(chlayer "图层名" 颜色数值 线宽数值)
  36. ;;线宽取值表0、5、9、13、15、18、20、25、30、35、40、50、53、60、70、80、90、100、106、120、140、158、200 和 211。

  37. (defun c:0 ()
  38. (chlayer "0" nil nil)
  39. )
  40. (defun c:1 ()
  41. (chlayer "0-1原始墙体" 1 40)
  42. )
  43. (defun c:2 ()
  44. (chlayer "0-2原始柱子" nil 40)
  45. )
  46. (defun c:3 ()
  47. (chlayer "0-3原始窗户" 3 nil)
  48. )

评分

参与人数 1明经币 +1 金钱 +20 收起 理由
青春的滋味 + 1 + 20

查看全部评分

 楼主| 发表于 2015-8-2 12:34 | 显示全部楼层
edata 发表于 2015-8-2 12:28

谢谢你!! 感谢,冒昧的问下。 我之前发的那个 颜色切换帖子  按照您的意思是太繁琐。   
那回复的那个方法 能不能应该在图层 切换上
发表于 2015-8-2 13:10 | 显示全部楼层
意义不大
  1. (defun chlayer (layer color lineww / S)
  2. (if (null (tblsearch "LAYER" layer))
  3. (entmake
  4.   (list
  5.    '(0 . "LAYER")
  6.    '(100 . "AcDbSymbolTableRecord")
  7.    '(100 . "AcDbLayerTableRecord")
  8.     (cons 2 layer)        ;图层名称
  9.    '(70 . 0)              ;图层状态
  10.    (if color
  11.     (cons 62 color)       ;图层颜色
  12.      (cons 62 7)
  13.      )
  14.    (if lineww
  15.      (cons 370 lineww)       ;图层线宽
  16.      (cons 370 -3)
  17.      )
  18.    (cons 6 "Continuous")        ;图层线型 图层中没有bylayer
  19. )
  20. )
  21.   (progn ;;更新图层颜色线宽 如不需要则删除此段
  22.     (setq elist(entget(tblobjname "layer" layer)))
  23.     (if color (setq elist(subst(cons 62 color)(assoc 62 elist)elist)))
  24.     (if lineww (setq elist(subst(cons 370 lineww)(assoc 370 elist)elist)))
  25.     (entmod elist)
  26.     );更新颜色线宽结束         
  27. )
  28. (setq S (cadr (ssgetfirst)))
  29. (if S
  30.   (command "CHPROP" S "" "la" layer "c" "bylayer" "lw" "bylayer" "")
  31.   (setvar "clayer" layer)
  32. )
  33. (princ)
  34. )
  35. ;;(chlayer "图层名" 颜色数值 线宽数值)
  36. ;;线宽取值表0、5、9、13、15、18、20、25、30、35、40、50、53、60、70、80、90、100、106、120、140、158、200 和 211。


  37. (defun defun_chlayer(lst / a i)
  38.   (setq i 0)
  39.   (while(setq a(car lst))
  40.     (setq i(1+ i))
  41.     (eval(read
  42.            (strcat
  43.            "(defun c:" (itoa i)"()"
  44.            "(chlayer \"" (car a) "\" "(if (cadr a) (itoa(cadr a)) "nil") " " (if (caddr a) (itoa(caddr a)) "nil") ")
  45.             )"
  46.            )
  47.           
  48.          ))
  49.     (setq lst(cdr lst))
  50.     )
  51.   )
  52. ;;主程序
  53. ;(defun_chlayer (list (list "图层名" 颜色值 线宽值)))
  54. ;自动生成 数字命令 如果和颜色一起使用则会冲突。
  55. (defun c:tt()
  56.   (defun_chlayer (list '("0-1原始墙体" 2 40) '("0-2原始柱子" nil nil)'("0-3原始窗户" 5 5)))
  57.   )
  58.           
  59.   
 楼主| 发表于 2015-8-2 13:16 | 显示全部楼层
edata 发表于 2015-8-2 13:10
意义不大

谢谢你。能在帮我出一个  CAD里面 只计算面积 与周长 能直接标注出来的代码么?   
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-5-9 21:51 , Processed in 0.172842 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表