明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1045|回复: 7

[源码] 一组多段线的最低点输出至excel

[复制链接]
发表于 2022-5-5 10:47:28 | 显示全部楼层 |阅读模式
本帖最后由 zwf100 于 2022-5-7 16:41 编辑

这是根据高手改编的把一组多段线的最低点输出至excel中,但是顺序是按多段线的绘图顺序输出的,请问有没有按多段线的起始点或者终点的Y坐标自上而下地输出至excel,就是要对多段线根据Y坐标线排序,然后再把最低点输出至excel。应该可以先排序多段线,也可以把各最低点列表再排序然后输出excel,请大神帮忙修改下。

本帖子中包含更多资源

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

x
发表于 2022-5-5 11:13:46 | 显示全部楼层
自己excel排序下不就是了?
 楼主| 发表于 2022-5-5 11:20:01 | 显示全部楼层
mikewolf2k 发表于 2022-5-5 11:13
自己excel排序下不就是了?

是可以,就是想一步到位
发表于 2022-5-5 12:02:55 | 显示全部楼层
节点坐标y值排序 找最低点   然后将最低点输出到Excel即可
发表于 2022-5-5 13:13:09 | 显示全部楼层
本帖最后由 yshf 于 2022-5-5 13:15 编辑

(defun c:zddx ( / ent file filex i j p ss)
    (setvar "dimzin" 0)
    (if (setq ss (ssget '((0 . "LWPOLYLINE"))))
        (if (setq filex (getfiled "指定文件输出路径" "" "xls" 1) )   
            (progn
                (setq file (open filex "w"))
                (repeat (setq i (sslength ss))
                    (setq i (1- i))
                    (setq ent (ssname ss i))
                    (setq dxf (entget ent))
                    (setq ptb (mapcar 'cdr (vl-remove-if '(lambda(a)(/= (car a) 10)) dxf)))
                    (setq ptb (vl-sort ptb '(lambda(a b)
                                               (< (cadr a) (cadr b))
                                            )
                              )
                    )
                    (write-line (strcat  (rtos (car (car ptb)) 2 4) "\t" (rtos (cadr (car ptb)) 2 4) ) file)
                )
                (close file)
            )

        )
    )
    (princ)
)
 楼主| 发表于 2022-5-5 20:29:30 | 显示全部楼层
本帖最后由 zwf100 于 2022-5-5 20:37 编辑
yshf 发表于 2022-5-5 13:13
(defun c:zddx ( / ent file filex i j p ss)
    (setvar "dimzin" 0)
    (if (setq ss (ssget '((0 .  ...

谢谢你!从上到下画三条多线,然后把第三条移到最上面,还是不对
发表于 2022-5-5 20:51:54 | 显示全部楼层
根据你提供的程序是找每一条的最低点,那当然与全部的最低不同的,如下

(defun c:zddx1 ( / ent file filex i j p ss)
    (setvar "dimzin" 0)
    (if (setq ss (ssget '((0 . "LWPOLYLINE"))))
        (if (setq filex (getfiled "指定文件输出路径" "" "xls" 1) )   
            (progn
                (setq file (open filex "w"))
                (setq pts nil)
                (repeat (setq i (sslength ss))
                    (setq i (1- i))
                    (setq ent (ssname ss i))
                    (setq dxf (entget ent))
                    (setq ptb (mapcar 'cdr (vl-remove-if '(lambda(a)(/= (car a) 10)) dxf)))
                    (mapcar '(lambda(pt)(setq pts (cons pt  pts))))
                )
                (setq pts (vl-sort pts '(lambda(a b)
                                            (< (cadr a) (cadr b))
                                        )     
                          )
                )
                (write-line (strcat  (rtos (car (car pts)) 2 4) "\t" (rtos (cadr (car pts)) 2 4) ) file)
                (close file)
            )

        )
    )
    (princ)
)
 楼主| 发表于 2022-5-6 12:46:02 | 显示全部楼层
yshf 发表于 2022-5-5 20:51
根据你提供的程序是找每一条的最低点,那当然与全部的最低不同的,如下

(defun c:zddx1 ( / ent file fi ...

感谢,可能你没明白我的意思。我是想让这些最低点再按Y的大小由上而下排序输出。或者说按对象的位置高低输出各自的最低点
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-14 14:31 , Processed in 0.340996 second(s), 25 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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