明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 28326|回复: 62

【悬赏5明经币求程序】求"交点打断"的lisp

  [复制链接]
发表于 2011-3-24 12:13:01 | 显示全部楼层 |阅读模式
5明经币
本帖最后由 chenjian2159 于 2011-4-7 17:59 编辑

求:如果有一大片的线,纵横交错,不在乎是哪个图层,能不能实现这样一个程序,每个交点的两根线(线是直线、弧线、PLINE线等)的在交点处打断。步骤:先框选一大片线,然后空格后,就打断有交点的线。

最佳答案

查看完整内容

这个程序可实现线,圆弧,多义线,圆,样条曲线等等的打断。 演示中只有线,其它的可自己试。
发表于 2011-3-24 12:13:02 | 显示全部楼层
本帖最后由 xiaxiang 于 2011-4-10 18:04 编辑

这个程序可实现线,圆弧,多义线,圆,样条曲线等等的打断。
演示中只有线,其它的可自己试。


本帖子中包含更多资源

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

x

评分

参与人数 1明经币 +1 收起 理由
VBALISPER + 1 赞一个!

查看全部评分

回复

使用道具 举报

发表于 2011-4-8 10:30:57 | 显示全部楼层
  1. ;;选择集求交点子程序
  2. (defun interss (ss / n1 ssl aobj1 aobj2 n2 ipts pts)
  3.   (setq    n1  0
  4.     ssl (sslength ss)
  5.   )
  6.   (while (< n1 (1- ssl))
  7.     (setq aobj1    (ssname ss n1)
  8.       aobj1    (vlax-ename->vla-object aobj1)
  9.       n2    (1+ n1)
  10.     )
  11.     (while (< n2 ssl)
  12.       (setq aobj2 (ssname ss n2)
  13.         aobj2 (vlax-ename->vla-object aobj2)
  14.         ipts  (vla-intersectwith
  15.             aobj1
  16.             aobj2
  17.             0
  18.           )
  19.         ipts  (vlax-variant-value ipts)
  20.       )
  21.       (if (> (vlax-safearray-get-u-bound ipts 1) 0) ;是否有交点
  22.     (progn
  23.       (setq    ipts
  24.          (vlax-safearray->list ipts)
  25.       )
  26.       (while (> (length ipts) 0)
  27.         (setq pts (cons (list (car ipts)
  28.                   (cadr ipts)
  29.                   (caddr ipts)
  30.                 )
  31.                 pts
  32.               ) ;此处可以在添加时判断是否有重合点
  33.         )
  34.         (setq ipts (cdddr ipts))
  35.       )
  36.     )
  37.       )
  38.       (setq n2 (1+ n2))
  39.     )
  40.     (setq n1 (1+ n1))
  41.   )
  42.   pts
  43. )

  44. (defun Break_ss (ss filter / pts pick thisdrawing oldos)

  45.   (if ss     
  46.     (progn
  47.       (setq pts        (interss ss)
  48.         pick    (getvar "pickbox")
  49.         thisdrawing    (vla-get-activedocument
  50.               (vlax-get-acad-object)
  51.             )
  52.       )
  53.       (if pts
  54.         (progn
  55.       (vla-startundomark thisdrawing)
  56.       (foreach x pts
  57.     (if (ssget
  58.           "_C"
  59.           (polar x (* -0.75 pi) (* 2. (expt (/ pick 2) 2)))
  60.           (polar x (* 0.45 pi) (* 2. (expt (/ pick 2) 2)))
  61.           filter
  62.         )
  63.       (vlax-for i (vla-get-activeselectionset thisdrawing)
  64.         (if
  65.           (not (or (equal (vlax-curve-getstartpoint i)
  66.                   x
  67.                   0.001
  68.                )
  69.                (equal (vlax-curve-getendpoint i)
  70.                   x
  71.                   0.001
  72.                )
  73.            )
  74.           )
  75.            (vl-cmdf    ".break"
  76.             (list (vlax-vla-object->ename i) x)
  77.             "f"
  78.             x
  79.             "@"
  80.            )
  81.         )
  82.       )
  83.     )
  84.       )
  85.      
  86.    
  87.     (vla-endundomark thisdrawing)
  88.       );progn
  89.         )
  90.       );progn
  91.   ) ;if
  92.   
  93.   (princ)
  94. )
  95. ;;;测试
  96. (defun c:tt()
  97.    (setq ss (ssget '((0 . "*line,arc,circle,ELLIPSE"))))
  98.    (if ss
  99.      (Break_ss ss '((0 . "*line,arc,circle,ELLIPSE")))
  100.      )
  101.    (princ)
  102.    )

点评

很不错的程序,对工作有时候还是很有用的。  发表于 2012-8-13 12:40
虽然看不懂,但确实解决了工作中常用到的重大难题。在此谢过。  发表于 2012-5-24 17:26
高手啊,实在是高!  发表于 2011-12-5 20:29

评分

参与人数 3明经币 +2 金钱 +10 收起 理由
yanghz1977 + 10 很给力!
flytoday + 1 怎么难增加个限制,就是闭合的线不断
yjr111 + 1 程序简洁明了,思路清晰,赞!

查看全部评分

回复

使用道具 举报

发表于 2011-4-8 17:33:38 | 显示全部楼层
请楼主给出一个足够复杂的样图。还有,对断开距离有没有要求?
回复

使用道具 举报

 楼主| 发表于 2011-4-9 15:07:09 | 显示全部楼层
两个都不错,请版主帮我平均分配下明经币!!!
回复

使用道具 举报

发表于 2011-4-19 18:09:18 | 显示全部楼层
感谢分享程序及chenjian2159老大, < 谢谢 ! >
回复

使用道具 举报

发表于 2011-10-13 18:31:04 | 显示全部楼层
xiaxiang 发表于 2011-3-24 12:13
这个程序可实现线,圆弧,多义线,圆,样条曲线等等的打断。
演示中只有线,其它的可自己试。

你好呀,我下载了,变成lisp程序后,加载不了,内里也不是什么程序,也没有显示命令名,这是怎么回事呀?我把部分文字贴出来:
<meta name="keywords" content="" />
<meta name="description" content=",明经通道" />
<meta name="generator" content="Discuz! X2" />
<meta name="author" content="Discuz! Team and Comsenz UI Team" />
<meta name="copyright" content="2001-2011 Comsenz Inc." />
<meta name="MSSmartTagsPreventParsing" content="True" />
<meta http-equiv="MSThemeCompatible" content="Yes" />
<base href="http://bbs.mjtd.com/" /><link rel="stylesheet" type="text/css" href="data/cache/style_1_common.css?B0m" /><link rel="stylesheet" type="text/css" href="data/cache/style_1_forum_attachment.css?B0m" /><script type="text/javascript">var STYLEID = '1', STATICURL = 'static/', IMGDIR = 'static/image/common', VERHASH = 'B0m', charset = 'gbk', discuz_uid = '0', cookiepre = 'ncjy_08db_', cookiedomain = '.mjtd.com', cookiepath = '/', showusercard = '1', attackevasive = '0', disallowfloat = 'newthread', creditnotice = '1|通道币|个,2|威望|,3|明经币|个,4|金钱|,5|贡献|,6|激情|', defaultstyle = '', REPORTURL = 'aHR0cDovL2Jicy5tanRkLmNvbS9mb3J1bS5waHA/bW9kPWF0dGFjaG1lbnQmYWlkPU5UZ3dPVEY4T0Rka05tVmxORGQ4TVRNeE9EVXdNVE13T1h3ek9UVTRNRGg4T0RVNU5EYyUzRA==', SITEURL = 'http://bbs.mjtd.com/', JSPATH = 'static/js/';</script>
<script src="static/js/common.js?B0m" type="text/javascript"></script><meta name="application-name" content="明经通道" />
<meta name="msapplication-tooltip" content="明经通道" />
<meta name="msapplication-task" content="name=首页;action-

害得我花了一个币,难道不是lisp程序?
回复

使用道具 举报

发表于 2011-10-13 21:20:33 | 显示全部楼层
zzl9105 发表于 2011-10-13 18:31
你好呀,我下载了,变成lisp程序后,加载不了,内里也不是什么程序,也没有显示命令名,这是怎么回事呀? ...

下载的文件是LSP文件没错,你可重新下载试试,不重复扣币。
回复

使用道具 举报

发表于 2011-10-31 22:40:53 | 显示全部楼层
以前好像看过一个英文版本的交点打断  很好用
回复

使用道具 举报

发表于 2011-11-15 11:47:15 | 显示全部楼层
8错。值得拥有!
回复

使用道具 举报

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

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-22 23:28 , Processed in 0.200558 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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