明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3716|回复: 7

有多段线20个,直线3个,有什么命令把它们合成为一根多段线没有?

[复制链接]
发表于 2002-11-18 16:26:00 | 显示全部楼层 |阅读模式
发表于 2002-11-18 17:01:00 | 显示全部楼层

pedit命令

本帖最后由 作者 于 2002-11-18 17:01:58 编辑

有,用pedit命令,然后按提示操作就行。但pedit命令对被操作的对象有要求,被合并的对象必须[I]严格[/I]连续,我第一次实用此命令时,就因为连续问题,反复了许多次,才完成。
发表于 2002-11-18 19:46:00 | 显示全部楼层

这样!!!

你所说的线条有没有都连在一起?!

如果是全部连在一起的,那可以输入pe→回车→选所要连接的连在一起线条→按J→就可以了!!!(注意:选择线条必须一条一条的选,否则可能连不上)

还有如果是AUTOCAD2002版本,能安装EXPRESS辅助工具,它有一个命令很好用mpedit→选择所需连接的线条(这个命令不需一条一条的选择线条,可以一次性选择所有需要连接的线条)→按J→就可以连在一起了!!!
发表于 2002-11-18 20:59:00 | 显示全部楼层

原来我有这个程序,在R14下也可以,但要求选择的线段必须存在一条PLNE

本帖最后由 作者 于 2002-11-18 20:59:10 编辑

有时间的朋友可以帮忙改一下,改好了给我发一个:)
(defun c:pj(/ prg laname selet entname ent name n pw a b c olderr) J合并多义线主程序

(defun Pjlw(pjsel pjpw / prg laname selet entname ent name n pw sum)
  (setq selet pjsel pjsel nil pw pjpw pjpw nil)
  (setq n 0 sum 0)
  (if (and (/= selet nil) (/= pw nil))
     (repeat (sslength selet)
       (setq entname (ssname selet n))
       (setq ent (entget entname))
       (setq name (cdr (assoc 0 ent)))
       (if (or (= name "LINE") (= name "ARC"));改变直线段或弧线段线宽
         (progn
           (command "pedit" entname "y" "w" pw \r)
           (setq sum (1+ sum))
         )
       )
       (if (= name "CIRCLE");调用改变圆线宽函数
         (progn
           (chcircle ent)
           (setq sum (1+ sum))
         )
       )
       (setq n (1+ n))
     ) ;end repeat
  ) ;end if
) ;END PJlw

  ;(initget "l s o")
  (setq olderr *error* *error* wwz_err)

  (prompt "合并多义线...\n")
  (setq prg (strcase (getstring "\n输入层名L/指定层上实体S/<选择实体O>:") T))
  (if (= prg "l")
   (progn
    (setq laname (getstring "\n输入层名:"))
    (setq selet (ssget "x" (list (cons 8 laname))))
   )
  )
  (if (= prg "s")
   (progn
     (write-line "\n指定层上实体:")
     (setq a (car (entsel)))
     (setq c (entget a))
     (setq laname (cdr (assoc 8 c)))
     (setq selet (ssget "x" (list (cons 8 laname))))
   )
  )
  (if (or (= prg "o") (= prg ""))
   (progn
     (write-line "\n选择实体:")
     (setq selet (ssget))
   )
  )
  (setq n 0 sum 0)
  (setvar "CMDECHO" 0)
  (if selet
     (repeat (sslength selet)
       (setq entname (ssname selet n))
       (setq ent (entget entname))
       (setq name (cdr (assoc 0 ent)))
       (if (OR (= name "LWPOLYLINE") (= name "OLYLINE"));连接多义线,R14为LWPOLYLINE
        (progn
           (command "pedit" entname "J" selet "" "")
           (setq sum (1+ sum))
           ;(setq selet (ssdel entname selet))
        )
       ;ELSE 非多义线则改变成多义线,设线宽为0
        ;(progn
        ;  (if (or (= name "LINE") (= name "ARC")(= name "CIRCLE"))
        ;   (progn
        ;     (pjlw selet 0.0)
        ;     (command "pedit" entname "J" selet "" "")
        ;   )
        ;  )
        ;);end progn
       );end if
       (setq n (1+ n))
;       (setq selet (ssdel entname selet))
     ) ;end repeat
  ) ;end if
(setvar "CMDECHO" 1)
(if (> sum 0) (princ "\n连接完毕.\n"))

(setq *error*  olderr)
(princ)
) ;END PJ
 楼主| 发表于 2002-11-19 15:22:00 | 显示全部楼层

嗯,都是连在一起的,MPEDIT我试了,不同平面都不能连~#_#

同平面都好说啊。
 楼主| 发表于 2002-11-19 15:34:00 | 显示全部楼层

_3dpoly不在一个平面的线看来是连不了。

发表于 2002-11-19 18:25:00 | 显示全部楼层

是三维的线吗?!

原来你说是在三维上连成一条线啊!!!!

三维上连我自己有时都容易看错到底有没有接在一起,你的线有没有相交?!
发表于 2002-11-20 10:15:00 | 显示全部楼层

连接聚合线__这类问题请到”Autolisp/ visual lisp 编程技术”提出

本帖最后由 作者 于 2002-11-20 10:15:58 编辑

(defun C:PLINE_JOIN (/ HOLDECHO PRG SELET ENTNAME LAYNAME NAME N)
  (command "_.UNDO" "GROUP")
  (setq HOLDECHO (getvar "CMDECHO"))
  (initget "L S ")
  (prompt "\n连接聚合线...")
  (setq        PRG (getstring "\n输入层名(L)/指定层上实体(S)/<选择实体>: ")
  )
  (cond
    ((= PRG "L")
     (while (not (tblsearch "LAYER"
                            (setq LAYNAME (getstring "\n输入层名: "))
                 )
            )
     )
     (setq
       SELET (ssget "X"
                    (list (cons 8 LAYNAME)
                          (cons 0 "LWPOLYLINE,POLYLINE,LINE,ARC")
                    )
             )
     )
    )
    ((= PRG "S")
     (while (not (setq LAYNAME (entsel "\n指定层上实体: "))))
     (setq
       SELET (ssget
               "X"
               (list (cons 8 (cdr (assoc 8 (entget (car LAYNAME)))))
                     (cons 0 "LWPOLYLINE,POLYLINE,LINE,ARC")
               )
             )
     )
    )
    (t
     (prompt "\n选择实体: ")
     (setq SELET (ssget '((0 . "LWPOLYLINE,POLYLINE,LINE,ARC"))))
    )
  )
  (setq N 0)
  (setvar "CMDECHO" 0)
  (if SELET
    (while (setq ENTNAME (ssname SELET N))
      (setq NAME (cdr (assoc 0 (entget ENTNAME))))
      (if NAME
        (progn
          (if (or (= NAME "LWPOLYLINE") (= NAME "OLYLINE"))
            (command "_.pedit" ENTNAME "J" SELET "" "")
            (command "_.pedit" ENTNAME "" "J" SELET "" "")
          )
        )
      )
      (setq N (1+ N))
    )
  )
  (setvar "CMDECHO" HOLDECHO)
  (command "_.UNDO" "END")
  (princ)
)
(prompt "\n连接聚合线 Type Pline_join  ,  BY 龙龙仔")
(princ)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

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

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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