找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1160|回复: 12

[求助]:如何对已有的填充图案加上边框线?

[复制链接]
发表于 2006-11-18 14:24:37 | 显示全部楼层 |阅读模式

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

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

×
我们正常时往往是在画好的边框里填充图案,但有没有一个相反的办法为已有的填充图案加上它的外框呢?

请高手指教。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2006-11-18 14:44:50 | 显示全部楼层
acad2006,2007的填充命令本身就有重建边界这个功能。

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

使用道具 举报

发表于 2006-11-18 18:23:17 | 显示全部楼层
民工兄弟,为什么使用这个选项后,结果有时是一个整体有时又是分散的线段呢?
原来我想,可能关联填充用这个选项后是一个整体,可经试验不是那么回事,懵了,找不到规律。
整体了好调整,分散了就麻烦,所以有此一问。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2006-11-19 14:17:39 | 显示全部楼层
对,请高手解答一下3楼这个问题。以供新手学习,我们需要更多关于此类比较怪的方法,希望高手能出相关的专题学习
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-19 17:11:10 | 显示全部楼层
明经通道上有一个恢复图案填充边界的程序,不知行不行,各位试试:
  1. ;;; HATCHB.LSP ver 1.6
  2. ;;; Recreates hatch boundary by selecting a hatch
  3. ;;; Boundary is created in current layer/color/linetype in WCS
  4. ;;; By Jimmy Bergmark
  5. ;;; Copyright (C) 1997-2002 JTB World, All Rights Reserved
  6. ;;; Website:[url]www.jtbworld.com[/url] / [url]http://jtbworld.vze.com[/url]
  7. ;;; E-mail: [email]info@jtbworld.com[/email] / [email]jtbworld@hotmail.com[/email]
  8. ;;; 2000-02-12 - First release
  9. ;;; 2000-03-27 - Counterclockwise arc's and ellipse's fixed
  10. ;;;Objects created joined to lwpolyline if possible
  11. ;;;Error-handling, undo of command
  12. ;;;Can handle PLINETYPE = 0,1,2
  13. ;;; 2000-03-30 - Integrating hatchb and hatchb14
  14. ;;;Selection of many hatches
  15. ;;;Splines supported if closed.
  16. ;;; 2001-04-02 - Fixed bug with entmake of line with no Z for r14
  17. ;;; 2001-07-31 - Removed an irritating semicolon to enable polylines to be created.
  18. ;;; 2001-10-04 - Changed mail and homepage so it's easy to find when new versions comes up.
  19. ;;; Tested on AutoCAD r14, 2000, 2000i, 2002
  20. ;;; should be working on older versions too.

  21. (defun c:hb () (c:hatchb))                ; this line can be commented out if there is an existing command called hb
  22. (defun c:hatchb        (/              esblayed1           ed2                loops1bptfpart
  23.                  etnoe              plist           icbul        nrang1ang2obj
  24.                  *ModelSpace* *PaperSpace* space        cw
  25.                  errexit      undox           olderr        oldcmdecho
  26.                  ss1              lastent           en1                en2
  27.                  ss              lwp           list->variantArray
  28.                  3dPoint->2dPoint           A2k                ent
  29.                  i              ss2           knot-list
  30.                  controlpoint-list           kn                cn
  31.                  pos              xv
  32.                 )
  33.   (setq A2k (wcmatch (getvar "ACADVER") "15*"))
  34.   (if A2k
  35.     (defun list->variantArray (ptsList / arraySpace sArray)
  36.       (setq arraySpace
  37.              (vlax-make-safearray
  38.                vlax-vbdouble
  39.                (cons 0 (- (length ptsList) 1))
  40.              )
  41.       )
  42.       (setq sArray (vlax-safearray-fill arraySpace ptsList))
  43.       (vlax-make-variant sArray)
  44.     )
  45.   )
  46.   (if A2k
  47.     (defun 3dPoint->2dPoint (3dpt)
  48.       (list (float (car 3dpt)) (float (cadr 3dpt)))
  49.     )
  50.   )

  51.   (defun errexit (s)
  52.     (princ "\nError:")
  53.     (princ s)
  54.     (restore)
  55.   )

  56.   (defun undox ()
  57.     (command "._ucs" "_p")
  58.     (command "._undo" "_E")
  59.     (setvar "cmdecho" oldcmdecho)
  60.     (setq *error* olderr)
  61.     (princ)
  62.   )

  63.   (setq        olderr *error*
  64.          restore
  65.         undox
  66.          *error*
  67.         errexit
  68.   )
  69.   (setq oldcmdecho (getvar "cmdecho"))
  70.   (setvar "cmdecho" 0)
  71.   (command "._UNDO" "_BE")
  72.   (if A2k
  73.     (progn
  74.       (vl-load-com)
  75.       (setq *ModelSpace* (vla-get-ModelSpace
  76.                            (vla-get-ActiveDocument (vlax-get-acad-object))
  77.                          )
  78.             *PaperSpace* (vla-get-PaperSpace
  79.                            (vla-get-ActiveDocument (vlax-get-acad-object))
  80.                          )
  81.       )
  82.     )
  83.   )


  84.                                         ; For testing purpose
  85.                                         ; (setq A2k nil)

  86.   (if (/= (setq ss2 (ssget '((0 . "HATCH")))) nil)
  87.     (progn
  88.       (setq i 0)
  89.       (while (setq ent (ssname ss2 i))
  90.         (setq ed1 (entget ent))
  91.         (if (not (equal (assoc 210 ed1) '(210 0.0 0.0 1.0)))
  92.           (princ "\nHatch not in WCS!")
  93.         )
  94.         (setq xv (cdr (assoc 210 ed1)))
  95.         (command "._ucs" "_w")
  96.         (setq loops1 (cdr (assoc 91 ed1)))
  97.                                         ; number of boundary paths (loops)
  98.         (if (and A2k (= (strcase (cdr (assoc 410 ed1))) "MODEL"))
  99.           (setq space *ModelSpace*)
  100.           (setq space *PaperSpace*)
  101.         )
  102.         (repeat        loops1
  103.           (setq ed1 (member (assoc 92 ed1) ed1))
  104.           (setq bptf (cdr (car ed1)))        ; boundary path type flag
  105.           (setq ic (cdr (assoc 73 ed1))) ; is closed
  106.           (setq noe (cdr (assoc 93 ed1))) ; number of edges
  107.           (setq ed1 (member (assoc 72 ed1) ed1))
  108.           (setq bul (cdr (car ed1)))        ; bulge
  109.           (setq plist nil)
  110.           (setq blist nil)
  111.           (cond
  112.             ((> (boole 1 bptf 2) 0)        ; polyline
  113.              (repeat noe
  114.                (setq ed1 (member (assoc 10 (cdr ed1)) ed1))
  115.                (setq plist (append plist (list (cdr (assoc 10 ed1)))))
  116.                (setq blist (append blist
  117.                                    (if (> bul 0)
  118.                                      (list (cdr (assoc 42 ed1)))
  119.                                      nil
  120.                                    )
  121.                            )
  122.                )
  123.              )
  124.              (if A2k
  125.                (progn
  126.                  (setq polypoints
  127.                         (apply 'append
  128.                                (mapcar '3dPoint->2dPoint plist)
  129.                         )
  130.                  )
  131.                  (setq VLADataPts (list->variantArray polypoints))
  132.                  (setq
  133.                    obj (vla-addLightweightPolyline space VLADataPts)
  134.                  )
  135.                  (setq nr 0)
  136.                  (repeat (length blist)
  137.                    (if (/= (nth nr blist) 0)
  138.                      (vla-setBulge obj nr (nth nr blist))
  139.                    )
  140.                    (setq nr (1+ nr))
  141.                  )
  142.                  (if (= ic 1)
  143.                    (vla-put-closed obj T)
  144.                  )
  145.                )
  146.                (progn
  147.                  (if (= ic 1)
  148.                    (entmake '((0 . "POLYLINE") (66 . 1) (70 . 1)))
  149.                    (entmake '((0 . "POLYLINE") (66 . 1)))
  150.                  )
  151.                  (setq nr 0)
  152.                  (repeat (length plist)
  153.                    (if (= bul 0)
  154.                      (entmake (list (cons 0 "VERTEX")
  155.                                     (cons 10 (nth nr plist))
  156.                               )
  157.                      )
  158.                      (entmake (list (cons 0 "VERTEX")
  159.                                     (cons 10 (nth nr plist))
  160.                                     (cons 42 (nth nr blist))
  161.                               )
  162.                      )
  163.                    )
  164.                    (setq nr (1+ nr))
  165.                  )
  166.                  (entmake '((0 . "SEQEND")))
  167.                )
  168.              )
  169.             )
  170.             (t                                ; not polyline
  171.              (setq lastent (entlast))
  172.              (setq lwp T)
  173.              (repeat noe
  174.                (setq et (cdr (assoc 72 ed1)))
  175.                (cond
  176.                  ((= et 1)                ; line
  177.                   (setq ed1 (member (assoc 10 (cdr ed1)) ed1))
  178.                   (if A2k
  179.                     (vla-AddLine
  180.                       space
  181.                       (vlax-3d-point (cdr (assoc 10 ed1)))
  182.                       (vlax-3d-point (cdr (assoc 11 ed1)))
  183.                     )
  184.                     (entmake
  185.                       (list
  186.                         (cons 0 "LINE")
  187.                         (list 10
  188.                               (cadr (assoc 10 ed1))
  189.                               (caddr (assoc 10 ed1))
  190.                               0
  191.                         )
  192.                         (list 11
  193.                               (cadr (assoc 11 ed1))
  194.                               (caddr (assoc 11 ed1))
  195.                               0
  196.                         )
  197.                                         ;(cons 210 xv)
  198.                       )
  199.                     )
  200.                   )
  201.                   (setq ed1 (cddr ed1))
  202.                  )
  203.                  ((= et 2)                ; circular arc
  204.                   (setq ed1 (member (assoc 10 (cdr ed1)) ed1))
  205.                   (setq ang1 (cdr (assoc 50 ed1)))
  206.                   (setq ang2 (cdr (assoc 51 ed1)))
  207.                   (setq cw (cdr (assoc 73 ed1)))
  208.                   (if (equal ang2 6.28319 0.00001)
  209.                     (progn
  210.                       (if A2k
  211.                         (vla-AddCircle
  212.                           space
  213.                           (vlax-3d-point (cdr (assoc 10 ed1)))
  214.                           (cdr (assoc 40 ed1))
  215.                         )
  216.                         (entmake (list (cons 0 "CIRCLE")
  217.                                        (assoc 10 ed1)
  218.                                        (assoc 40 ed1)
  219.                                  )
  220.                         )
  221.                       )
  222.                       (setq lwp nil)
  223.                     )
  224.                     (if        A2k
  225.                       (vla-AddArc
  226.                         space
  227.                         (vlax-3d-point (cdr (assoc 10 ed1)))
  228.                         (cdr (assoc 40 ed1))
  229.                         (if (= cw 0)
  230.                           (- 0 ang2)
  231.                           ang1
  232.                         )
  233.                         (if (= cw 0)
  234.                           (- 0 ang1)
  235.                           ang2
  236.                         )
  237.                       )
  238.                       (entmake (list (cons 0 "ARC")
  239.                                      (assoc 10 ed1)
  240.                                      (assoc 40 ed1)
  241.                                      (cons 50
  242.                                            (if (= cw 0)
  243.                                              (- 0 ang2)
  244.                                              ang1
  245.                                            )
  246.                                      )
  247.                                      (cons 51
  248.                                            (if (= cw 0)
  249.                                              (- 0 ang1)
  250.                                              ang2
  251.                                            )
  252.                                      )
  253.                                )
  254.                       )
  255.                     )
  256.                   )
  257.                   (setq ed1 (cddddr ed1))
  258.                  )
  259.                  ((= et 3)                ; elliptic arc
  260.                   (setq ed1 (member (assoc 10 (cdr ed1)) ed1))
  261.                   (setq ang1 (cdr (assoc 50 ed1)))
  262.                   (setq ang2 (cdr (assoc 51 ed1)))
  263.                   (setq cw (cdr (assoc 73 ed1)))
  264.                   (if A2k
  265.                     (progn
  266.                       (setq obj        (vla-AddEllipse
  267.                                   space
  268.                                   (vlax-3d-point (cdr (assoc 10 ed1)))
  269.                                   (vlax-3d-point (cdr (assoc 11 ed1)))
  270.                                   (cdr (assoc 40 ed1))
  271.                                 )
  272.                       )
  273.                       (vla-put-startangle
  274.                         obj
  275.                         (if (= cw 0)
  276.                           (- 0 ang2)
  277.                           ang1
  278.                         )
  279.                       )
  280.                       (vla-put-endangle
  281.                         obj
  282.                         (if (= cw 0)
  283.                           (- 0 ang1)
  284.                           ang2
  285.                         )
  286.                       )
  287.                     )
  288.                     (princ "\nElliptic arc not supported!")
  289.                   )
  290.                   (setq lwp nil)
  291.                  )
  292.                  ((= et 4)                ; spline
  293.                   (setq ed1 (member (assoc 94 (cdr ed1)) ed1))
  294.                   (setq knot-list nil)
  295.                   (setq controlpoint-list nil)
  296.                   (setq kn (cdr (assoc 95 ed1)))
  297.                   (setq cn (cdr (assoc 96 ed1)))
  298.                   (setq pos (vl-position (assoc 40 ed1) ed1))
  299.                   (repeat kn
  300.                     (setq
  301.                       knot-list        (cons (cons 40 (cdr (nth pos ed1)))
  302.                                       knot-list
  303.                                 )
  304.                     )
  305.                     (setq pos (1+ pos))
  306.                   )
  307.                   (setq pos (vl-position (assoc 10 ed1) ed1))
  308.                   (repeat cn
  309.                     (setq controlpoint-list
  310.                            (cons
  311.                              (cons 10 (cdr (nth pos ed1)))
  312.                              controlpoint-list
  313.                            )
  314.                     )
  315.                     (setq pos (1+ pos))
  316.                   )
  317.                   (setq knot-list (reverse knot-list))
  318.                   (setq controlpoint-list (reverse controlpoint-list))
  319.                   (entmake (append
  320.                              (list '(0 . "SPLINE"))
  321.                              (list (cons 100 "AcDbEntity"))
  322.                              (list (cons 100 "AcDbSpline"))
  323.                              (list (cons 70
  324.                                          (+ 1
  325.                                             8
  326.                                             (* 2 (cdr (assoc 74 ed1)))
  327.                                             (* 4 (cdr (assoc 73 ed1)))
  328.                                          )
  329.                                    )
  330.                              )
  331.                              (list (cons 71 (cdr (assoc 94 ed1))))
  332.                              (list (cons 72 kn))
  333.                              (list (cons 73 cn))
  334.                              knot-list
  335.                              controlpoint-list
  336.                            )
  337.                   )
  338.                   (setq ed1 (member (assoc 10 ed1) ed1))
  339.                   (setq lwp nil)
  340.                  )
  341.                )                        ; end cond
  342.              )                                ; end repeat noe
  343.              (if lwp
  344.                (progn
  345.                  (setq en1 (entnext lastent))
  346.                  (setq ss (ssadd))
  347.                  (ssadd en1 ss)
  348.                  (while        (setq en2 (entnext en1))
  349.                    (ssadd en2 ss)
  350.                    (setq en1 en2)
  351.                  )
  352.                  (command "_.pedit" (entlast) "_Y" "_J" ss "" "")
  353.                )
  354.              )
  355.             )                                ; end t
  356.           )                                ; end cond
  357.         )                                ; end repeat loops1
  358.         (setq i (1+ i))
  359.       )
  360.     )
  361.   )
  362.   (restore)
  363.   (princ)
  364. )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2006-11-20 16:55:50 | 显示全部楼层
最初由 zzsong 发布
[B]民工兄弟,为什么使用这个选项后,结果有时是一个整体有时又是分散的线段呢?
原来我想,可能关联填充用这个选项后是一个整体,可经试验不是那么回事,懵了,找不到规律。
整体了好调整,分散了就麻烦,所以有此一... [/B]


这个跟填充原来的边界有关,原来的边界如果包含椭圆、spline,acad没法把它们连接成pline,所以是分散的。

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

使用道具 举报

发表于 2006-11-20 22:54:52 | 显示全部楼层
还是有疑虑,为什么这么说呢?因为平常很少接触椭圆、spline作边界的啊,可这事又是经常发生的。
难道没别的可能?……
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-21 16:38:12 | 显示全部楼层
最初由 zzsong 发布
[B]还是有疑虑,为什么这么说呢?因为平常很少接触椭圆、spline作边界的啊,可这事又是经常发生的。
难道没别的可能?…… [/B]


这个问题要是问游手好闲,他肯定说跟人品有关

你首先要找到问题发生的规律:
如果是跟特定的图形有关,你可以发上来看看
如果是跟软件有关,你换台电脑试试
如果是跟姿势有关,你倒立操作试试
要是被小游不幸言中......
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-21 17:21:46 | 显示全部楼层
民工果然不同凡响,看来偶得闭门思过了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-22 12:47:04 | 显示全部楼层
这个问题可能是这样,你原来的填充图案是点选边界生成的话,那么重建边界后就是个连结的pl线。
但是如果你原来的填充图案是选择对象,窗选生成的话,那么重建边界后就是分散的line线?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-22 14:36:17 | 显示全部楼层
最初由 andyhua5240 发布
[B]这个问题可能是这样,你原来的填充图案是点选边界生成的话,那么重建边界后就是个连结的pl线。
但是如果你原来的填充图案是选择对象,窗选生成的话,那么重建边界后就是分散的line线? [/B]


好像是这样,本来这个区域选定方式就对填充速度有很大影响,现在看来还影响到边界的信息。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2006-11-22 17:52:46 | 显示全部楼层
也忘了这种情况是点选还是选择对象,不过马上简单地试验一下,果然如andyhua5240 所言,点选边界的话生成的是pl线,选择对象后则生成的是分散的line线。
但我又发现,就是即使是点选边界的情况, 如果进行了编辑,比如剪切,则重建边界后还是分散的line线,还是不太爽。
不过还是很感谢两位,起码弄懂了原因。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-11-16 01:10 , Processed in 0.202570 second(s), 56 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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