2个回答
推荐于2016-03-05 · 知道合伙人软件行家
关注
展开全部
(defun C:MJL3 ( / @p1 &k &kk &kw);;填充独立单元
(if (null vlax-dump-object) (vl-load-com) )
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(setq #os (getvar "osmode"))
(setvar "osmode" 0)
(setq @p1 (getpoint "\n请点击要填充的封闭区域"))
(if (/= @p1 nil)
(progn
(command "line" (list 0 0) (list 1 1) "")
(setq &kk (entlast));;绘制一条直线
(while @p1
(command "bpoly" @p1 "");;检查图形是否封闭
(setq &k (entlast))
(if (/= (cdr (assoc 0 (entget &k))) "LWPOLYLINE") (setq &k nil) )
;;如果图形没有封闭就不填充
(if (/= &k nil)
(progn
(command "_.hatch" "SOLID" &k "")
(entdel &k)
(setq &k (entlast))
(setq &kw (ssadd))
(setq &kw (ssadd &k &kw))
(command "_.chprop" &kw "" "c" 253 "");;253是颜色可以修改
)
)
(setq @p1 (getpoint "\n请点击要填充的封闭区域"))
)
(entdel &kk);;删除直线
)
)
(setvar "osmode" #os)
(prin1)
);;粘贴到记事本以(.lsp)为后缀命名,打开AutoCAD,加载autoLISP就可以使用。
;;**************************************************************************
(defun C:MJL4 ( / @p1 &k &kw &kw1 i en3 en1 #os);;填充是整个图形。
(if (null vlax-dump-object) (vl-load-com) )
(setvar "cmdecho" 0)
(setvar "blipmode" 0)
(setq #os (getvar "osmode"))
(setvar "osmode" 0)
(setq &kw (ssadd))
(setq &kw1 (ssadd))
(setq @p1 (getpoint "\n请点击要填充的封闭区域"))
(if (/= @p1 nil)
(progn
(command "line" (list 0 0) (list 1 1) "")
(setq en3 (entlast))
(while @p1
(command "bpoly" @p1 "")
(setq &k (entlast))
(if (/= (cdr (assoc 0 (entget &k))) "LWPOLYLINE") (setq &k nil) )
(if (/= &k nil)
(progn
(command "_.hatch" "SOLID" &k "")
(setq &kw1 (ssadd &k &kw1))
(setq &k (entlast))
(setq &kw (ssadd &k &kw))
(command "_.chprop" &kw "" "c" 253 "")
)
)
(setq @p1 (getpoint "\n请点击要填充的封闭区域"))
)
(if (/= (sslength &kw1) 0)
(progn
(command "_.hatch" "SOLID" &kw1 "")
(setq en1 (entlast))
(setq i 0)
(repeat (sslength &kw1)
(setq &k (ssname &kw1 i))
(entdel &k)
(setq i (+ i 1))
)
(setq i 0)
(repeat (sslength &kw)
(setq &k (ssname &kw i))
(entdel &k)
(setq i (+ i 1))
)
)
)
(command "_.chprop" en1 "" "c" 253 "")
(entdel en3)
)
)
(setvar "osmode" #os)
(prin1)
)
(prompt "\n命令<C:MJL4>")
(prin1)
展开全部
(defun c:sd()
(setq oldcm (getvar "cmdecho")
oldos (getvar "osmode")
)
(setvar "cmdecho" 0)
(setvar "osmode" 33)
(command "_undo" "be")
(if (setq p1 (getpoint "\n指定第一点p1:"))
(if (setq p2 (getpoint p1 "\n指定第二点p2:"))
(progn
(grdraw p1 p2 7)
(if (setq p3 (getpoint p2 "\n指定第三点p3:"))
(progn
(setvar "osmode" 33)
(command "_pline" p1 p2 p3 "c")
(command "_hatch" "solid" (entlast) "")
(command "_chprop" (entlast) "" "c" 1 "")
)
)
)
)
)
(command "_undo" "e")
(setvar "cmdecho" oldcm)
(setvar "osmode" oldos)
(princ)
)
自定义填充图案
一、填充图案的定义格式
1. 标题行
由填充图案名称和填充图案描述组成,标题行以“*”为开始标记,填充图案名称和描述由逗号分开,其格式为:
*pattern-name [, description](“填充图案名称[,填充图案描述])
星号后面紧跟的是图案名称,执行HATCH命令选择图案时,将显示该名称。方括号内是图案由 HATCH 命令的“?”选项显示时的可选说明。如果省略说明,则图案名称后不能有逗号。
2. 模式行
由图案直线定义和填充线的控制信息组成,一个填充图案中可以定义多种类型的图案直线,其格式为:
angle, x-origin, y-origin, delta-x, delta-y, dash-1, dash-2, ...
其中各项意义如下:
angle:填充线图案直线与水平方向的夹角。
x-origin、y-origin:第一条图案直线经过的起点坐标点
delta-x:相邻垂直距离最近的两条图案直线沿画线方向上的位移值
delta-y:相邻垂直距离最近的两条图案直线之间的间距(有方向之分)
dash-1~n:为一条直线的长度参数,可取正负值或为零,取正值表示该长度段为实线,取负值表示该段为留空,取零则画点。
二、填充图案定义遵循或应注意的规则:
·图案的模式行可以有一行或多行。
·图案定义中的每一行最多可以包含 80 个字符。
·图案定义必须以字母或数字开头,而不能以特殊字符开头。
·AutoCAD 将忽略空行和分号右边的文字。
·文件名必须与图案名相同。
·曲线需要先转为直线,建议16或24等分。
(setq oldcm (getvar "cmdecho")
oldos (getvar "osmode")
)
(setvar "cmdecho" 0)
(setvar "osmode" 33)
(command "_undo" "be")
(if (setq p1 (getpoint "\n指定第一点p1:"))
(if (setq p2 (getpoint p1 "\n指定第二点p2:"))
(progn
(grdraw p1 p2 7)
(if (setq p3 (getpoint p2 "\n指定第三点p3:"))
(progn
(setvar "osmode" 33)
(command "_pline" p1 p2 p3 "c")
(command "_hatch" "solid" (entlast) "")
(command "_chprop" (entlast) "" "c" 1 "")
)
)
)
)
)
(command "_undo" "e")
(setvar "cmdecho" oldcm)
(setvar "osmode" oldos)
(princ)
)
自定义填充图案
一、填充图案的定义格式
1. 标题行
由填充图案名称和填充图案描述组成,标题行以“*”为开始标记,填充图案名称和描述由逗号分开,其格式为:
*pattern-name [, description](“填充图案名称[,填充图案描述])
星号后面紧跟的是图案名称,执行HATCH命令选择图案时,将显示该名称。方括号内是图案由 HATCH 命令的“?”选项显示时的可选说明。如果省略说明,则图案名称后不能有逗号。
2. 模式行
由图案直线定义和填充线的控制信息组成,一个填充图案中可以定义多种类型的图案直线,其格式为:
angle, x-origin, y-origin, delta-x, delta-y, dash-1, dash-2, ...
其中各项意义如下:
angle:填充线图案直线与水平方向的夹角。
x-origin、y-origin:第一条图案直线经过的起点坐标点
delta-x:相邻垂直距离最近的两条图案直线沿画线方向上的位移值
delta-y:相邻垂直距离最近的两条图案直线之间的间距(有方向之分)
dash-1~n:为一条直线的长度参数,可取正负值或为零,取正值表示该长度段为实线,取负值表示该段为留空,取零则画点。
二、填充图案定义遵循或应注意的规则:
·图案的模式行可以有一行或多行。
·图案定义中的每一行最多可以包含 80 个字符。
·图案定义必须以字母或数字开头,而不能以特殊字符开头。
·AutoCAD 将忽略空行和分号右边的文字。
·文件名必须与图案名相同。
·曲线需要先转为直线,建议16或24等分。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询