明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2134|回复: 5

求助:线段直线合并

[复制链接]
发表于 2012-11-13 11:53:07 | 显示全部楼层 |阅读模式
本帖最后由 xd-xdcad 于 2012-11-13 11:54 编辑

附件程序一直用的不错,这段时间使用,为什么有时连接不成功呢?
附件功能是将首尾相连的直线、多段线、圆弧等合并成一个多段线整体

程序如下:
(defun l_to_pl (ssa / ss1 lines ent n)
  (defun l_to_pl:main (/ ent ss1 n)
    (setq ent (ssname lines 0))
    (if        (member        (cdr (assoc 0 (entget ent)))
                '("POLYLINE" "LWPOLYLINE")
        )
      (if (/= 1 (logand (cdr (assoc 70 (entget ent))) 1))
        (command "._pedit" ent "j" lines "" "")
      )
      (command "._pedit" ent "y" "j" lines "" "")
    )
    (setq lines (ssdel ent lines))
    (setq ss1 (ssadd))
    (repeat (setq n (sslength lines))
      (setq ent (ssname lines (setq n (1- n))))
      (if (entget ent)
        (setq ss1 (ssadd ent ss1))
      )
    )
    (setq lines ss1)
    (while (> (sslength lines) 0) (l_to_pl:main))
  )
  (command "._undo" "be")
  (setq ss1 (ssadd))
  (repeat (setq n (sslength ssa))
    (setq ent (ssname ssa (setq n (1- n))))
    (if        (and (entget ent)
             (member (cdr (assoc 0 (entget ent)))
                     '("LINE" "ARC" "POLYLINE" "LWPOLYLINE")
             )
        )
      (setq ss1 (ssadd ent ss1))
    )
  )
  (setq lines ss1)
  (l_to_pl:main)
  (command "._undo" "e")
)

(defun c:lp (/ a)
  (setq a (ssget))
  (l_to_pl a)
;;;(l_to_pl lines)
;;;(while (> (sslength (setq lines (l_to_pl lines))) 0) (progn))
)


本帖子中包含更多资源

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

x
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2012-11-13 13:02:56 | 显示全部楼层
本帖最后由 叮咚 于 2012-11-13 13:04 编辑

  1. (defun c:lx(/ olcm ss)
  2. (setq olcm (getvar "cmdecho"))
  3. (setvar "cmdecho" 0)
  4. (setq ss (ssget '((0 . "line,lwpolyline,arc"))))
  5. (if ss
  6. (progn
  7. (command "_pedit" "m" ss "")
  8. (vl-catch-all-apply '(lambda()
  9. (command "y")
  10. ))
  11. (command "j" "" "")
  12. )
  13. (princ "\n未选择可用对象!")
  14. )
  15. (setvar "cmdecho" olcm)
  16. (princ)
  17. )


好像 polyline (三维多段线)不能合并

评分

参与人数 1明经币 +1 收起 理由
xd-xdcad + 1 很给力!

查看全部评分

 楼主| 发表于 2012-11-13 14:14:47 | 显示全部楼层
叮咚 发表于 2012-11-13 13:02
好像 polyline (三维多段线)不能合并

能够成功,但在命令行中总是显示“无效的选项关键字”?
发表于 2012-11-13 14:43:06 | 显示全部楼层
(defun c:ddd()

(setq ss (ssget "x" '((0 . "*LINE") (8 . "1"))))
(setq len (sslength ss))
(setq n 0)
(repeat len
(setq ent (ssname ss n))
(command "join" ent ss "" "")
(setq n (1+ n))
) ;end repeat

(setq old (getvar "peditaccept"))
(command "peditaccept" 1)
(setq a (car (entsel "\n 请选择一条直线:")))
(setq ss1 (ssget "x" '((0 . "*LINE") (8 . "1"))))
(command "chprop" ss1 "" "c" 3 "")
(command "pedit" a  "j" ss1 "" "w" 0.5 "")
(setvar "peditaccept" old)
)
 楼主| 发表于 2012-11-13 14:46:08 | 显示全部楼层
phoenixdjq 发表于 2012-11-13 14:43
(defun c:ddd()

(setq ss (ssget "x" '((0 . "*LINE") (8 . "1"))))

加载时提示参数类型错误,我的是CAD2004
发表于 2012-11-13 14:58:49 | 显示全部楼层
不好意思

(8 . "1")

我是定义的图层1中的线段

你可以去掉,或者改成别的层

评分

参与人数 1明经币 +1 收起 理由
xd-xdcad + 1 很给力!

查看全部评分

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

本版积分规则

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

GMT+8, 2025-6-5 08:40 , Processed in 0.159166 second(s), 33 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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