找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 2360|回复: 1

[教学] 填充选线或描点挖洞

[复制链接]
发表于 2014-2-26 10:02:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
本帖最后由 Free-Lancer 于 2014-2-26 10:05 编辑

仅支持"普通"模式填充
矩形挖洞http://bbs.xdcad.net/thread-671357-1-1.html
  1. (defun c:tt (/ _drawpline _appendinnerloop ha key)
  2.   (defun _drawpline (/ p ptl len plobj)
  3.     (while (and        (setq p        (if ptl
  4.                           (getpoint (car ptl) "\nPoint: ")
  5.                           (getpoint "\nPoint: ")
  6.                         )
  7.                 )
  8.                 (setq ptl (cons p ptl))
  9.                 (progn
  10.                   (if (> (setq len (length ptl)) 1)
  11.                     (grdraw p (cadr ptl) -1 0)
  12.                   )
  13.                   t
  14.                 )
  15.            )
  16.     )
  17.     (if        (> len 3)
  18.       (progn
  19.         (setq
  20.           plobj        (vlax-invoke
  21.                   (fy:acspace)
  22.                   'AddLightweightPolyline
  23.                   (apply
  24.                     'append
  25.                     (mapcar '(lambda (x) (list (car x) (cadr x))) ptl)
  26.                   )
  27.                 )
  28.         )
  29.         (vla-put-closed plobj :vlax-true)
  30.       )
  31.     )
  32.     (redraw)
  33.     plobj
  34.   )
  35.   (defun _appendinnerloop (ha curves /)
  36.     (vla-appendinnerloop
  37.       ha
  38.       (list->variantarray curves vlax-vbobject)
  39.     )
  40.     (if        (= (vla-get-AssociativeHatch ha) :vlax-false)
  41.       (mapcar 'vla-delete curves)
  42.     )
  43.     (vla-evaluate ha)
  44.   )
  45.   (fy:begin)
  46.   (if (and (progn
  47.              (princ "\nPick Hatch Object .....")
  48.              (setq ha (ssget ":S:L" '((0 . "hatch") (75 . 0))))
  49.            )
  50.            (progn
  51.              (initget 128 "1 2")
  52.              (setq key (getkword "\n[1 - Points/2 - Select]<1>: "))
  53.              (if (or (null key) (= key ""))
  54.                (setq key "1")
  55.                (setq key "2")
  56.              )
  57.            )
  58.       )
  59.     (if        (= key "1")
  60.       (if (setq pl (_drawpline))
  61.         (_appendinnerloop (e2o (ssname ha 0)) (list pl))
  62.       )
  63.       (if
  64.         (and (progn
  65.                (princ "\nSelect closed pline,circle,spline,ellipse ..."
  66.                )
  67.                (ssget '((0 . "*line,circle,spline,ellipse")))
  68.              )
  69.              (setq el (vl-remove-if-not
  70.                         '(lambda (x) (vlax-curve-isclosed x))
  71.                         (fy:cset->objs)
  72.                       )
  73.              )
  74.         )
  75.          (_appendinnerloop (e2o (ssname ha 0)) el)
  76.       )
  77.     )
  78.   )
  79.   (fy:end)
  80.   (princ)
  81. )

评分

参与人数 1D豆 +5 收起 理由
炫翔 + 5 很给力!经验;技术要点;资料分享奖!

查看全部评分

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!

已领礼包: 55个

财富等级: 招财进宝

发表于 2014-3-9 16:26:03 | 显示全部楼层
漂亮!用的着啊:)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-6-11 12:25 , Processed in 0.201208 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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