跟阿忠学家具设计,月薪8000只是起步
CAD插件-修改线宽度
在CAD中只有多段线可以设置宽度、直线、圆、弧、样条曲线都无法设置宽度,要想设置宽度,还需要将这些图形转换成多段线,圆用编辑多段线PE命令还没法直接转换。
在网上看到一个插件,可以直接选择多段线、直线、圆和弧后设置宽度,省略了转换的步骤,不知道大家能不能用得上,在这里分享给大家。
百度网盘分享被百度屏蔽了,下面直接将代码发给大家,大家复制粘贴到写字版中,另存为PW.LSP或其他文件名的LSP文件。
代码如下:
(defun pw_err (s)
(princ "\n命令中止!")
(command "ucs" "restore" "recent" ^c)
(if sset
(progn
(setq sscnt (sslength sset))
(while (> sscnt 0)
(redraw (ssname sset (setq sscnt (1- sscnt))) 4)
)
)
)
(setvar "clayer" old_clayer)
(setvar "cecolor" old_cecolor)
(setvar "celtype" old_celtype)
(setvar "celtscale" old_celtscale)
(setvar "osmode" old_osmode)
(setvar "dimzin" old_dimzin)
(setvar "blipmode" old_blipmode)
(setq *error* old_err)
(gc)
(princ)
)
(expand 5)
(defun c:pw ()
(command "_.undo" "_begin")
(setq old_err *error*
*error* pw_err
)
(princ
""
)
(setq old_clayer (getvar "clayer"))
(setq old_cecolor (getvar "cecolor"))
(setq old_celtype (getvar "celtype"))
(setq old_celtscale (getvar "celtscale"))
(setq old_osmode (getvar "osmode"))
(setq old_dimzin (getvar "dimzin"))
(setq old_blipmode (getvar "blipmode"))
(setvar "cmdecho" 0)
(setvar "osmode" 0)
(setvar "dimzin" 8)
(setvar "blipmode" 0)
(if (= (tblsearch "ucs" "recent") nil)
(command "ucs" "save" "recent" ^c)
(command "ucs" "save" "recent" "y" ^c)
)
(command "ucs" "" ^c)
(setq sset (ssget))
(if (null sset)
(progn
(princ "\n未选择到物体!")
(exit)
)
)
(setq sscnt (sslength sset)
lwplsset (ssadd)
plsset (ssadd)
lsset (ssadd)
arcsset (ssadd)
ccsset (ssadd)
)
(while (> sscnt 0)
(setq temp (ssname sset (setq sscnt (1- sscnt))))
(setq temptype (cdr (assoc 0 (entget temp))))
(cond (
(= temptype "LWPOLYLINE")
(ssadd temp lwplsset)
)
(
(= temptype "POLYLINE")
(ssadd temp plsset)
)
(
(= temptype "LINE")
(ssadd temp lsset)
)
(
(= temptype "ARC")
(ssadd temp arcsset)
)
(
(= temptype "CIRCLE")
(ssadd temp ccsset)
)
)
)
(setq lwplsscnt (sslength lwplsset))
(setq plsscnt (sslength plsset))
(setq lsscnt (sslength lsset))
(setq arcsscnt (sslength arcsset))
(setq ccsscnt (sslength ccsset))
(if (and (= lwplsscnt 0)
(= plsscnt 0)
(= lsscnt 0)
(= arcsscnt 0)
(= ccsscnt 0)
)
(progn (princ
"\n未选择到任何有效的 (LW)POLYLINE、LINE、ARC 或 CIRCLE!"
)
(exit)
)
)
(princ (strcat "\n统计: 选中 "
(itoa lwplsscnt)
" 个 LWPOLYLINE,"
(itoa plsscnt)
" 个 POLYLINE,"
(itoa lsscnt)
" 个 LINE,"
(itoa arcsscnt)
" 个 ARC,"
(itoa ccsscnt)
" 个 CIRCLE.\n"
)
)
(while (> lwplsscnt 0)
(redraw (ssname lwplsset (setq lwplsscnt (1- lwplsscnt))) 3)
)
(while (> plsscnt 0)
(redraw (ssname plsset (setq plsscnt (1- plsscnt))) 3)
)
(while (> lsscnt 0)
(redraw (ssname lsset (setq lsscnt (1- lsscnt))) 3)
)
(while (> arcsscnt 0)
(redraw (ssname arcsset (setq arcsscnt (1- arcsscnt))) 3)
)
(while (> ccsscnt 0)
(redraw (ssname ccsset (setq ccsscnt (1- ccsscnt))) 3)
)
(setq plwid (getvar "plinewid"))
(initget 4)
(setq input (getreal (strcat "\n请输入多段线宽度 <"
(rtos (getvar "plinewid")2 5)
">:"
)
)
)
(if input
(setq plwid input)
)
(setvar "plinewid" plwid)
(setq lwplsscnt (sslength lwplsset))
(setq plsscnt (sslength plsset))
(setq lsscnt (sslength lsset))
(setq arcsscnt (sslength arcsset))
(setq ccsscnt (sslength ccsset))
(while (> lwplsscnt 0)
(command "pedit"
(ssname lwplsset (setq lwplsscnt (1- lwplsscnt)))
"w"
plwid
""
^C^C
)
)
(while (> plsscnt 0)
(command "pedit"
(ssname plsset (setq plsscnt (1- plsscnt)))
"w"
plwid
""
^C^C
)
)
(while (> lsscnt 0)
(command "pedit"
(ssname lsset (setq lsscnt (1- lsscnt)))
""
"w"
plwid
""
^C^C
)
)
(while (> arcsscnt 0)
(command "pedit"
(ssname arcsset (setq arcsscnt (1- arcsscnt)))
""
"w"
plwid
""
^C^C
)
)
(while (> ccsscnt 0)
(setq cc (ssname ccsset (setq ccsscnt (1- ccsscnt))))
(setq cclist (entget cc))
(setq ccdia (* (cdr (assoc 40 cclist)) 2))
(setq centpt (cdr (assoc 10 cclist)))
(setq cclayer (cdr (assoc 8 cclist)))
(if (assoc 62 cclist)
(setq cccolor (itoa (cdr (assoc 62 cclist))))
)
(if (assoc 6 cclist)
(setq ccltype (cdr (assoc 6 cclist)))
)
(if (assoc 48 cclist)
(setq cclts (cdr (assoc 48 cclist)))
)
(entdel cc)
(if (> ccdia plwid)
(progn
(setq nj (- ccdia plwid))
(setq njpluswid (+ ccdia plwid))
)
(progn
(setq nj 0)
(setq njpluswid ccdia)
(princ "\n输入宽度大于或等于圆直径,将填充圆!")
)
)
(setvar "clayer" cclayer)
(if cccolor
(setvar "cecolor" cccolor)
(setvar "cecolor" "bylayer")
)
(if ccltype
(setvar "celtype" ccltype)
(setvar "celtype" "bylayer")
)
(if cclts
(setvar "celtscale" cclts)
(setvar "celtscale" 1)
)
(command "DONUT" nj njpluswid centpt "" ^c)
)
(command "ucs" "restore" "recent" ^c)
(setq sscnt (sslength sset))
(while (> sscnt 0)
(redraw (ssname sset (setq sscnt (1- sscnt))) 4)
)
(setvar "clayer" old_clayer)
(setvar "cecolor" old_cecolor)
(setvar "celtype" old_celtype)
(setvar "celtscale" old_celtscale)
(setvar "osmode" old_osmode)
(setvar "dimzin" old_dimzin)
(setvar "blipmode" old_blipmode)
(command "_.undo" "_end")
(gc)
(princ)
)
使用方法如下:
1、输入AP,回车,加载下载的插件。
2、输入PW,回车,选择要转化的线后回车,如图所示。
3、根据提示输入宽度后,回车,满足条件的线就被设置为指定宽度。此插件处理不了样条曲线。
CAD使用技巧可以访问:CAD实用技巧、CAD使用技巧、CAD疑难解答汇总
家具设计课堂是国内做家具设计在线教育的线上培训机构,初入家具设计行业的准家具设计师建议在此技术提升。跟阿忠学家具设计,月薪8000只是起步!您想找一份高薪设计类的研发工作,或许家具设计课堂能帮您实现您的初衷愿景。报名学习QQ:415284424。