AUTO lisp图像填充

哪位大神用LISPhatch命令填充途中绿色封闭区域!... 哪位大神用LISP hatch 命令填充途中绿色封闭区域! 展开
 我来答
朱06CAD
推荐于2016-03-05 · 知道合伙人软件行家
朱06CAD
知道合伙人软件行家
采纳数:4172 获赞数:18070
高中,熟悉AutoCAD。会autolisp及VBA程序。

向TA提问 私信TA
展开全部
(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)
八子杰4
推荐于2016-02-15 · TA获得超过4.5万个赞
知道大有可为答主
回答量:6763
采纳率:90%
帮助的人:991万
展开全部
(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等分。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式