明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1878|回复: 9

line合成为pline

[复制链接]
发表于 2008-11-24 15:48:00 | 显示全部楼层 |阅读模式

下面的程序是把LINE合成PLINE的,但运行起来速度较慢,如何能改进?有2222个对象,完成需要约30秒

(defun l2pl (/ SS1)
  (vl-load-com)
  (vl-cmdf ".undo" "BE") ;开始
  (setq ss1 (ssget "X"
            (list
                  (cons 0  "LINE")
                  (cons 6  "CONTINUOUS")
                  (cons -4  "<>,*,*")
                  (list 10 1.25 0 0)
    (cons -4  "<>,*,*")
                  (list 10 -1.25 0 0)
    (cons -4  "<>,*,*")
                  (list 11 1.25 0 0)
    (cons -4  "<>,*,*")
                  (list 11 -1.25 0 0)
           )
           )
  )  
  (if (/= ss1 nil)
      (command "_.PEDIT" "M" ss1 "" "Y" "J" "0" "")
  )
  (vl-cmdf ".undo" "E") ;结束
  (princ)
)

发表于 2008-11-24 15:54:00 | 显示全部楼层

pe就搞定的编程太浪费了

发表于 2008-11-24 16:32:00 | 显示全部楼层

我一直用这个,选一次就搞定

(defun c:J (/ ped)
  (setq ped (getvar "peditaccept"))
  (setvar "peditaccept" 1)
  (command "pedit" pause "j" "all" "" "")
  (setvar "peditaccept" ped)
  (princ)
)

 楼主| 发表于 2008-11-24 18:31:00 | 显示全部楼层

其实咱仨用的都是PE,我的也是一次搞定,只是对象一多,感觉速度有点慢,不知有没有更好的方法

发表于 2008-11-25 20:00:00 | 显示全部楼层

;************************************************将所有line变成闭合多义线
(defun c:ple (/ ssa ssa-ent ent-p i)
(command "undo" "be");设置返回起始点
(setq ssa (ssget))
(setq i 0)
(while (< i (sslength ssa))
(setq ssa-ent (ssname ssa i))
(setq ent-p (cdr(assoc 0 (entget ssa-ent))))
(if (not (null ent-p));判断原图元是否已串入多义线
(if (or (= ent-p "LWPOLYLINE") (= ent-p "POLYLINE"));判断原图元属性
(command "pedit" ssa-ent "j" ssa "" "")
(command "pedit" ssa-ent "y" "j" ssa "" "")
))
(setq i (1+ i))
)
(command "undo" "e");设置返回终止点
(princ)
);defun

这个程序也挺好用,但是如果两条线没有连接,就合并不了,有什么办法解决没有呢

发表于 2008-11-25 23:55:00 | 显示全部楼层
不错,学习中。。。
 楼主| 发表于 2008-11-27 12:52:00 | 显示全部楼层

 但是如果两条线没有连接,就合并不了,有什么办法解决没有呢

(command "_.PEDIT" "M" ss1 "" "Y" "J" "0" "") 把0给一个合适的值如1,在此范围内的就可以合并

发表于 2008-11-27 19:41:00 | 显示全部楼层

选择对象: 指定对角点: 找到 2 个
选择对象:
*无效选择*
需要点或
窗口(W)/上一个(L)/窗交(C)/框(BOX)/全部(ALL)/栏选(F)/圈围(WP)/圈交(CP)/编组(G)/类
(CL)
函数被取消
选择对象:
是否将直线和圆弧转换为多段线?[是(Y)/否(N)]? <Y> *取消*
选择多段线或 [多条(M)]:
选择多段线或 [多条(M)]: *取消*

(command "_.PEDIT" "M" ss1 "" "Y" "J" "0" "") 把0给一个合适的值如1,在此范围内的就可以合并

有上面的错误提示,怎么办呢?

 楼主| 发表于 2008-11-29 16:34:00 | 显示全部楼层
我试了没有出现你这种情况,你再试试
发表于 2008-11-29 19:46:00 | 显示全部楼层
(setvar "peditaccept" 1)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-7-30 05:28 , Processed in 0.190733 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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