明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 11908|回复: 43

源码无聊贴:xj(连接首尾相连线条成封闭多义线) --by 狂刀 2007.9

    [复制链接]
发表于 2011-5-10 23:31:42 | 显示全部楼层 |阅读模式
本帖最后由 狂刀lxx 于 2011-5-10 23:34 编辑



请留意演示,有多分支选择gong neng
以下是源码,纯无聊抛砖引玉,有要修改完善者勿扰


  1. ;| xj(连接首尾相连线条成封闭多义线) --by 狂刀 2007.9
  2. 说明: 方式:单点一条,自动搜索,多分支提示.
  3. |;
  4. (defun c:xj (/ E ESS FIL OS P1 PA PX0 PX1 ROOP SS SS2 SSS SSS2 X ee)
  5.   (princ "\n 连接首尾相连线条成封闭多义线------by 狂刀 2007.9")
  6.   (command ".undo" "be")
  7.   (setq fil '((0 . "LINE,ARC,*POLYLINE"))
  8. os (getvar "osmode")
  9. pa (getvar "PEDITACCEPT")
  10. ssend(ssadd))
  11.   (setvar "osmode" 0)
  12.   (setvar "PEDITACCEPT" 1)
  13.   ;; 生成首尾相连选集.
  14.   (while (and (princ "\n 选形成多义线的其中一条边线 <退出>:")
  15.        (setq ss (ssget ":S" fil))
  16.   )
  17.     (setq sss (ssadd)
  18.    sss2(ssadd)
  19.    roop nil)
  20.     (setq e (ssname ss 0)
  21.    e0 e
  22.    p0 (vlax-curve-getstartpoint e)
  23.    p1(vlax-curve-getendpoint e))
  24.     (vlax-put (vlax-ename->vla-object e) 'color 1)
  25.     (ssadd e sss)
  26.     (subxj ee p0)
  27.     (subxj ee p1)
  28.     (command ".pedit" "m" sss "" "j" 0.01  "")
  29.     (setq ee (entlast))
  30.     (redraw ee 3)
  31.     ;(vlax-put (vlax-ename->vla-object ee) 'color 3)
  32.     (ssadd ee ssend)
  33.   )
  34.   (mapcar '(lambda(x)(redraw x 4))(xss2lst ssend))
  35.   (setvar "PEDITACCEPT" pa)
  36.   (setvar "osmode" os)
  37.   (command ".undo" "e")
  38.   (princ)
  39. )
  40. ;;
  41. (defun subxj (EE p1 / PX0 PX1 ROOP X esss ess)
  42.   (setq e ee)
  43.   (while (and (setq ss2 (ssget "c" p1 p1 fil))
  44.   (not rooP)
  45.     )
  46.       (setq ess (xss2lst ss2)
  47.      esss(xss2lst sss))
  48.       (mapcar'(lambda(x)(setq ess(vl-remove x ess))) esss)
  49.       (if (not (member e0 ess))
  50. (if (and ess (< 1 (length ess)))
  51.    (progn (mapcar '(lambda (x) (redraw x 3)) ess)
  52.    (setq e (car (entsel "\n 选择分支:")))
  53.    (mapcar '(lambda (x) (redraw x 4)) ess)
  54.    )
  55.    (setq e (car ess))
  56. )
  57.       )
  58.       (if (and e (not (ssmemb e sss)))
  59. (progn
  60.    (ssadd e sss)
  61.    (vlax-put (vlax-ename->vla-object e) 'color 1)
  62.    (setq px0 (vlax-curve-getstartpoint e)
  63.   px1 (vlax-curve-getendpoint e)
  64.    )
  65.    (if (equal p1 px0 1e-4)
  66.      (setq p1 px1)
  67.      (setq p1 px0)
  68.    )
  69. )
  70. (setq roop T)
  71.       )
  72.     )
  73. )
  74. ;; 配套函数, 提取选集实体名列表.
  75. (defun xss2lst (ss / i e lst)
  76.   (setq i -1)
  77.   (while (setq e (ssname ss (setq i (1+ i))))
  78.     (setq lst (cons e lst))
  79.   )
  80.   (reverse lst)
  81. )

本帖子中包含更多资源

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

x

点评

谢谢分享  发表于 2012-3-14 08:26
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2024-4-18 14:14:28 | 显示全部楼层
1006882982 发表于 2012-6-26 03:27
(defun c:pp()
    (setq cm (getvar "cmdecho"))
    (setvar "cmdecho" 0)

感谢分享~
单线或多线转多段线~
发表于 2023-6-21 11:16:32 | 显示全部楼层
這個功能效率很高,謝謝樓主分享    謝謝分享
发表于 2018-2-9 11:16:45 | 显示全部楼层
狂刀无聊出品都这么帮,希望你天天都无聊,呵呵,谢谢分享
发表于 2011-5-11 08:20:52 | 显示全部楼层
谢谢楼主的分享
收藏了,下来学习领会
谢谢
发表于 2011-5-12 19:35:26 | 显示全部楼层
收藏备用,呵呵
发表于 2011-5-12 19:48:10 | 显示全部楼层
no function definition: VLAX-CURVE-GETSTARTPOINT
发表于 2011-5-12 19:52:20 | 显示全部楼层
收藏备用
发表于 2011-6-6 14:00:56 | 显示全部楼层
备用!正在收集这方面的资料做水力计算!
发表于 2011-6-6 16:53:15 | 显示全部楼层
谢谢分享。程序利用点的方式获取物体进行组建多义线。
发表于 2011-6-6 18:37:17 | 显示全部楼层
狂刀的程序,一定要收藏!
发表于 2011-6-6 21:35:17 | 显示全部楼层
希望你天天都无聊,呵呵
发表于 2011-6-9 10:48:54 | 显示全部楼层
正缺这功能呢
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 19:52 , Processed in 0.175956 second(s), 29 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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