明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 1678|回复: 11

[提问] 关于多段线生成数据文件排列问题

[复制链接]
发表于 2015-2-5 21:47:48 | 显示全部楼层 |阅读模式
本帖最后由 yhly555 于 2015-2-6 10:24 编辑

;这是一个多段线生成数据文件的程序,从论坛上收集的,
;现在的问题是这个程序提取出来的坐标排列按逆时针输出,
;且似乎是以多段线的底点坐标开始输出的,
;现在我想让它实现以西北方向起点,按顺时针方向输出
;请各位大神帮忙实现一下,谢谢了
(defun c:ppl (/ s filename e n fn jd pt pts);多段线生成数据文件
(if (setq s (ssget ":S" '((0 . "*POLYLINE")))) ;点选带过滤形式
    (progn
      (setq e (ssname s 0))
      (setq bihe (cdr(assoc 70 (entget e))))
      (if (= 128 bihe)
      (setq n ( + 1 (fix (vlax-curve-getendparam e))));如果不闭合就在vlax函数上加1
      (setq n (fix (vlax-curve-getendparam e)))       ;如果闭合就不在vlax函数上加1
    )
      (if (not (setq filename
      (getfiled "选择文件存储目录" "多段线生成数据文件.csv" "csv" 5)
       )
)
(setq filename "c:\\多段线生成数据文件.csv")
      )
      (setq fn (open filename "w")
         jd n
      )
      (setvar "dimzin" 0);;;;;;;;;;;;;;;;;;;;;;;;;;;;

      (repeat n
(setq pt (vlax-curve-getpointatparam e (setq jd (1- jd))))

(if (null pts)
(setq pts (list pt))
(if (not (equal pt (car pts) 1e-3));(> (distance pt (car pts)) 1e-3)
    (setq pts (cons pt pts))
);if
) ;_去除重复  if;;;;;;;;;;;;;;;;;;;;;;;这一步无效

      );repeat

      (setq n 1)
      (mapcar '(lambda (x)
(write-line
   (strcat
   (itoa n)
   ","   
   (rtos (car x));;;;;;;;;;;;;;;;已经修改为测量,地质等使用模式   xy调换
   ","
   (rtos (cadr x)) ;_与前面的 dimzin 配合采用用户 UNITS 精度设置
   )
   fn
)
(setq n (1+ n))
       )
      pts
      )
      (close fn)
    )
)
;(startapp "Notepad.EXE" filename);此句可调用记事本程序并打开该文件
(princ)
)


;补充一下,我用的AutoCAD2006版的,因有某些软件的必要性,所以我只能用2006版。


本帖子中包含更多资源

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

x
发表于 2015-2-6 09:05:14 | 显示全部楼层
本帖最后由 fan_zh 于 2015-2-6 09:08 编辑

复制代码
发表于 2015-2-6 09:11:09 | 显示全部楼层
  1. (defun c:tt()
  2.   (setq e(car(entsel)))
  3.   (setq pt(plinexy e))
  4.   (setq pt(if(pldir pt)pt(reverse pt)));;如果pt不是顺时针方向将其反向
  5.   (modplver e(clockwise pt));;将pt(clockwise pt)的起点调整为西北角
  6. )
以上为部分代码
收个币吧

本帖子中包含更多资源

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

x

点评

这样收币没必要的,毕竟你只是搬运了一下  发表于 2015-2-9 17:09
发表于 2015-2-6 09:21:28 | 显示全部楼层
以某点为起点从新排列
 楼主| 发表于 2015-2-6 10:01:13 | 显示全部楼层
fan_zh 发表于 2015-2-6 09:11
以上为部分代码
收个币吧

多谢你们的热情,可惜我没有明经币,不然两个我都愿意给你……
 楼主| 发表于 2015-2-6 10:02:18 | 显示全部楼层
鱼与熊掌 发表于 2015-2-6 09:21
以某点为起点从新排列

谢谢你指点,具体怎么操作可以说一下吗?谢谢!
发表于 2015-2-9 17:10:46 | 显示全部楼层
本帖最后由 llsheng_73 于 2015-2-9 17:13 编辑

多线段处理
http://bbs.mjtd.com/forum.php?mo ... &fromuid=202795
沙发兄弟的原贴
其中 PoInPl和pldir两个函数都可以进一步优化,毕竟那是一年多以前写的了
 楼主| 发表于 2015-2-9 23:17:06 | 显示全部楼层
本帖最后由 yhly555 于 2015-2-9 23:31 编辑
llsheng_73 发表于 2015-2-9 17:10
多线段处理
http://bbs.mjtd.com/forum.php?mod=viewthread&tid=108947&fromuid=202795
沙发兄弟的原贴

你太帅了,我想把坐标点的XY对调后(测量用的坐标)写入到TXT中,坐标标保留3位有效数据,可否帮忙实现一下,太感谢了!快到春节了,祝您和您的家人身体健康,万事如意,阖家欢乐!
发表于 2015-2-10 09:33:21 | 显示全部楼层
fan_zh 发表于 2015-2-6 09:11
以上为部分代码
收个币吧

拿别人的码收币不太好,但我记得好多码我也是花币下载的,不确定这个是不是
收币只是希望大家能多来论坛赚币,有什么不妥?
论坛是给大家学习用的,不是刚注册就伸手来拿程序的
发表于 2015-2-10 11:44:05 | 显示全部楼层
yhly555 发表于 2015-2-9 23:17
你太帅了,我想把坐标点的XY对调后(测量用的坐标)写入到TXT中,坐标标保留3位有效数据,可否帮忙实现一 ...

一些简单的可以自己试着弄一下,慢慢的你自己就会了。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-25 15:48 , Processed in 0.203918 second(s), 32 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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