找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 1085|回复: 13

[编程申请]:给大家出个题吧,想想有什么好的思路

[复制链接]
发表于 2005-9-15 18:40:31 | 显示全部楼层 |阅读模式

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

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

×
今天看同事在用探索者,里面个有墙填充感觉有些意思,看下图,如果用大红框选,就把墙线都填充了,这时的墙线是line,不是pline,
也不一定是封闭的,也就是我在图上画的小红框上的意思,有什么想法吗,感觉这个命令会在很多地方都可以用到,当然,这个命令是可以过滤选择的,在有轴线,标注等时也可以过滤出wall层的线噢
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2005-9-15 20:38:58 | 显示全部楼层
好像没什么难度,用pedit+填充就可以
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-15 20:56:15 | 显示全部楼层
明白了,刚才试了一下pedit,里面有可以选多条线,再合并,还有那么多选项,把这个命令我所想的难点就都解决了,看来熟悉内部命令各选项真是太有用了,惭愧啊
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-15 22:41:53 | 显示全部楼层
pedit不能实现过滤,不封闭就不能填充。
  1. [FONT=courier new](load "xyp_lib")
  2. ;|加载通用函数(可在签名栏直接下载)
  3. 如果已经下载xyp_lib并放到搜索路径下可以不再下载!
  4. 利用以下任何一种方式即可加载和运行通用函数内的所有子程序:
  5. 1.在acad.lsp中增加(load"xyp_lib")
  6. 2.在每个程序内增加(load"xyp_lib")
  7. 3.在command下,输入(load"xyp_lib")
  8. 4.在菜单.mnl中增加(load"xyp_lib")
  9. 5.将xyp_lib.vlx文件直接拽到cad屏幕
  10. [COLOR=red] ★通用函数下载地址:[/COLOR]
  11. [url]http://www.xdcad.net/forum/attachment.php?s=&postid=1606661[/url]
  12. [url]http://www.mjtd.com/bbs/dispbbs.asp?boardID=3&ID=37554&page=1[/url]|;

  13. ;;;墙体填充
  14. (defun c:test ()
  15.   (CMDLA0)
  16.   (setq        ss (ssget '((0 . "LINE,*POLYLINE,ARC") (8 . "WALLD")))
  17.         S1 (ssname ss 0)
  18.   )
  19.   (if S1
  20.     (progn
  21.       (setq entype (dxf 0 (entget S1)))
  22.       (if (or (= entype "LINE") (= entype "ARC"))
  23.         (command "pedit" S1 "y" "j" ss "" "w" "0" "")
  24.         (command "pedit" S1 "j" ss "" "w" "0" "")
  25.       )
  26.     )
  27.   )
  28.   (setq        s2   (entlast)
  29.         pts  (vlax-curve-getstartPoint s2)
  30.         pte  (vlax-curve-getendPoint s2)
  31.   )
  32.   (mkla "填充" 8)
  33.   (cond        ((equal pts pte)
  34.          (command "hatch" "solid" s2 "")
  35.          (command "explode" s2 "")
  36.         )
  37.         (T
  38.          (command "pedit" s2 "c" "")
  39.          (command "hatch" "solid" s2 "")
  40.          (command "explode" s2 "")
  41.          (command "erase" "l" "")
  42.         )
  43.   )
  44.   (CMDLA1)
  45. )[/FONT]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-16 00:03:48 | 显示全部楼层
xyp,你的这种想法和我先前的一样,但不对,你可以试试
(command "pedit" "m"  ss "" "y" "J" "J" "b" 400(这个数是可自己写的,就可以封口了) "")

这里面还有一个问题我没想出怎么办,就是把这些line都变成了pline,因为封了口,expole后就会多线,所以有什么办法命令执行完后,原来的line还是那些,就多了填充,我现在想的是选完ss后,copyclip,完事后erase那些连接好的pline,再把复制的东西粘贴到原坐标点_pasteorig,我没有想出更好的别的办法


试着编了一下,大形是有了,我说的那点还没有解决,要不就是把最后的pline删了,要不就是炸开,但最后短线会增多,我说的那种copy加paste不行
(defun c:ll ()
  (CMDLA0)
  (setq        ss (ssget '((0 . "LINE") (8 . "WALL")))
  )
  (command "_copyclip" ss "")
   (command "pedit" "m" ss "" "y" "J" "J" "b" 900 "")
  (setq ss2 (ssget "x" '((8 . "wall"))))
  (setq        sl (sslength ss2)
        sn (ssname ss2 0)
        i  0
  )

  (mkla "填充" 8)
  (repeat sl
    (progn
      (setq sn (ssname ss2 i))
      (command "hatch" "solid" sn "")
      (setq i (+ i 1))
    )
  );为了不选重多条pline后填充成为一体,一个封闭pline一个填充
  (command "erase" ss2 "")
  (command "_pasteorig")
   (CMDLA1)
)
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-16 07:22:06 | 显示全部楼层
原来线条拷贝到 工作层 如“wallhatch”层,填充后,删除wallhatch层的 *line
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-16 18:44:35 | 显示全部楼层
改了一下,可以了,不过要加载xyp的通用函数

  1. (defun c:ll ( / i sl sn ss ss1 ss2)
  2.    (command "undo" "be")
  3.   (CMDLA0)
  4.   (setq ss (ssget '((0 . "LINE") (8 . "WALL"))))
  5.   (mkla1 "templine")
  6.   (command "copy" ss "" "@" "@" "change" ss "" "p" "la" "templine" "")        ; (command
  7.                                        ; "_copyclip" ss "")
  8.   (setq ss1 (ssget "x" '((8 . "templine"))))
  9.   (command "pedit" "m" ss1 "" "y" "J" "J" "b" 900 "")
  10.   (setq ss2 (ssget "x" '((8 . "templine"))))
  11.   (setq sl (sslength ss2)
  12.         sn (ssname ss2 0)
  13.         i 0
  14.   )

  15.   (mkla "墙体填充" 8)
  16.   (repeat sl
  17.     (progn
  18.       (setq sn (ssname ss2 i))
  19.       (command "hatch" "solid" sn "")
  20.       (setq i (+ i 1))
  21.     )
  22.   )                                       ; 为了不选重多条pline后填充成为一体,
  23.                                        ; 一个封闭pline一个填充
  24.   (command "erase" ss2 "" "purge" "la" "templine" "n")
  25.   ;; (command "_pasteorig")
  26.   (CMDLA1)
  27.   (command "undo" "end")
  28.   (prin1)
  29.   )
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

使用道具 举报

发表于 2005-9-17 18:11:47 | 显示全部楼层
最初由 青马 发布
[B]改了一下,可以了,不过要加载xyp的通用函数[/B]

[php](defun c:test ()
  (CMDLA0)
  (setq ss (ssget '((0 . "LINE,*POLYLINE,ARC") (8 . "WALL,WALLD"))))
  (mkla "templine" 1)
  (command "copy"
           ss
           ""
           (list 0 0)
           (list 0 0)
           "change"
           ss
           ""
           "p"
           "la"
           "templine"
           "c"
           1
           ""
  )
  (setq ss1 (ssget "x" '((0 . "*POLYLINE") (8 . "templine"))))
  (if ss1
    (command "explode" ss1 "")
  )
  (setq ss1 (ssget "x" '((8 . "templine"))))
  (command "pedit" "m" ss1 "" "y" "J" "J" "b" 500 "")
  (setq ss1 (ssget "x" '((8 . "templine"))))
  (setq        sl (sslength ss1)
        i  -1
  )
  (mkla "墙体填充" 8)
  (repeat sl
    (setq sn (ssname ss1 (setq i (1+ i))))
    (command "hatch" "solid" sn "")
  )
  (CMDLA1)
  (command "erase" ss1 "" "purge" "la" "templine" "n")
  (princ)
)[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-18 01:11:40 | 显示全部楼层
不错,不错,和我的程序小小的区别是:
框选一个矩形房间的墙体的时候。。。。。。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-26 20:49:43 | 显示全部楼层
最初由 狂刀 发布
[B]不错,不错,和我的程序小小的区别是:
框选一个矩形房间的墙体的时候。。。。。。 [/B]


狂刀,你的程序是什么样的啊,说说,我发现这个程序的问题了,要是框选一个矩形房间,可能会把房间里面也给填上
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-27 03:21:48 | 显示全部楼层
是什么样?
8楼已经有演示了阿,演示的最末就是填充闭合部分墙体的示例
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2005-9-27 09:20:17 | 显示全部楼层
很难搞懂,真深奥,看来要改主意,学点别的了
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-9-28 01:26:18 | 显示全部楼层
看到了,我的机子有问题,一直是一个静止的图,你的那个为什么可以那么填充啊,是怎么农的
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-22 00:58 , Processed in 0.342045 second(s), 59 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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