fsxm 发表于 2006-6-10 19:53:50

[LISP程序]:合并重线正式版!支持 区分图层,可设定合并间隙~

这个东东好像有很多人写过了的哦!
不过还是请大家试试我这个有什么不同吧!
特别是关于圆和弧合并的部分以前的几乎都存在多多小小的BUG
我发这个东东就能很好的解决各种复杂的ARC,circle的重叠情况
并可指定合并时的间隙~
支持3D直线~平行于XY面圆,弧~
可允许合并间隙呵呵这个功能很有用的!
比果一个圆开了一个5度的小口~要修补好也可以用这个:hbcx
指角度间隙为6度呵呵!这个弧就成了一个圆了~
小段直线的修复等等~~
如果一发现BUG如:要消时不消不要消时乱消
请速发贴指出多谢~~
在此多谢:学院派xyp1964给出的修改和意见!
调用命令为:hbcx (合并重线)

yangjr 发表于 2006-6-11 14:17:49

楼主忘了把调用命令贴出来啦。

muwahaha 发表于 2006-6-11 16:47:44

好象不能对重复的块进行消除吧

WHGF 发表于 2006-6-14 10:50:16

看样子不错!只是编译成Fas了,不能学习程序技巧了。谢谢!

fsxm 发表于 2006-6-16 08:55:37

暂时先发这个fas这样就不会束缚各位老大的思维了~!有可能想出更好的算法
以后再发lsp源程序吧~到时再拿去与各位自己写的的比较一下才能发现哪个更好一点这样大家才会一起进步^_^
直线合并的源程序早就公布了的~圆和弧的没有完全公开只发了一小部分在调试时的代码~

lin51050 发表于 2006-6-19 19:14:24

没有命令啊,就是hbcx吗

fsxm 发表于 2006-6-19 20:26:56

对啦!!
调用命令为:HBCX (合并重线)
下载后在autocad中加载时会给出提示的!

命令: ap APPLOAD 已成功加载 合并重线fsxm0618.fas。
命令:
※调用命令为:HBCX(合并重线) 作者:(fsxm飞诗寻梦)※
命令: HBCX
输入或鼠标直接量取直线合并时座标允许间隙<0.001>:30
输入或鼠标直接量取圆弧合并时角度允许间隙<1>:45
合并时是否分别图层:[是Y/否N]<Y>:n
选择对象: 指定对角点: 找到 6 个
选择对象:
选取了< 6 >个图元,合并了< 4 >个重元

twc999 发表于 2006-7-27 14:41:47

楼主能不能发一个给我?twc163@163.com   不管您发不发都在这里谢谢了.

hhc_1 发表于 2006-7-27 16:59:54

ET工具中提取出来的,体积有点大,但运行后会卸载模块,解压后直接安装即可,命令名ov及-ov,全名:overkill及-overkill

tc405003 发表于 2006-7-27 23:59:48

老大,可否给外源码,我现在正在写一个程序,很需要这个,或者贴一小部分,就是误差消重的那一部分可否

fsxm 发表于 2006-7-29 19:42:40

twc999你好!附件发到请查收!
注:如果由于种种原因不能在BBS上下载的
可到签名下的链子网络硬盘:fsxm.ys168.com下载%

tc405003 你好!
误差消重只要在程序中加入误差分析就可以了的不太难!~
重要的还是程序的思路和考虑的全面要做的要做到能消的不能少消,不能消的绝不多消%
这是在对ARC实体消重的一段希望能对你有所帮助(a-wc是误差):

(repeat (length aplis)
    (setq b (nth (setq k (1+ k)) aplis))
    (if        (null b)
      (setq b1 (caar aplis)
          b(list b1
                     (+ (getdxf 50 b1) 2pi)
                     (+ (getdxf 51 b1) 2pi)
             )
      )
    )
    (setq ea (caddr als)
          sa (cadr als)
          sb (cadr b)
          eb (caddr b)
    )
    (cond
      ((> (- sb ea) a-wc)
       (if
       (= md 1)
          (entmodARC als)
       )
       (setq als b)
      )
      ((<= ea eb)
       (setq als (subst (caddr b) (caddr als) als)
             md       1
       )
       (ssadd (car b) delss)
      )
      (T
       (ssadd (car b) delss)
      )
    )
)
(if (= md 1)
    (entmodARC als)
)
)

云飞日月 发表于 2006-7-31 21:17:30

为什么9楼的下不起来?

NET-JOB 发表于 2006-8-26 09:48:34

试用时发现,圆和浮现同时存在并选择在范围中时,会将弧线合并掉,即时弧线和圆相距很远。

fsxm 发表于 2006-8-26 17:28:31

谢谢你的测试!不过我还没有遇过到这个情况!请发个测试图给我好吗?多谢了!
你也可以到
http://p4.xdcad.net/forum/showthread.php?s=&threadid=584921
下载运行速度更快的程序!不过不再支持图层与3D空间~

NET-JOB 发表于 2006-8-31 23:58:37

我又重新试了,还是会把圆和弧线合并了的。我用CAD2002,文件在下面,运行之后,所以参数均用默认,同时选择图中图元得到结果如下:
命令:
命令: (LOAD "C:/Documents and Settings/77LIYX88/桌面/合并重线fsxm0618.fas")
※调用命令为:HBCX(合并重线) 作者:(fsxm飞诗寻梦)※
"\n※调用命令为:HBCX(合并重线) 作者:(fsxm飞诗寻梦)※\n"
命令: hbcx
输入或鼠标直接量取直线合并时座标允许间隙<0.001>:
输入或鼠标直接量取圆弧合并时角度允许间隙<1>:
合并时是否分别图层:[是Y/否N]<Y>:
选择对象: 指定对角点: 找到 5 个
选择对象:
.undo 输入要放弃的操作数目或 [自动(A)/控制(C)/开始(BE)/结束(E)/标记(M)/后退(B)]
<1>: be
命令: .erase
选择对象:   找到 1 个
选择对象:
命令: .undo 输入要放弃的操作数目或
[自动(A)/控制(C)/开始(BE)/结束(E)/标记(M)/后退(B)] <1>: e
命令:
选取了< 5 >个图元,合并了< 1 >个重元
命令: *取消*

圆和弧线合并了。
页: [1] 2
查看完整版本: [LISP程序]:合并重线正式版!支持 区分图层,可设定合并间隙~