4041186888 发表于 2011-6-29 16:16:46

已知一个坐标集合,如何画一条多段线?(已解决)

本帖最后由 4041186888 于 2011-6-30 16:57 编辑

我的目的就是将一堆离散点按一定规律连成一条多段线.我的思路就是提取全部坐标,已知一个坐标集合((x1 y1)(x2 y2)...(xn yn)),但是n是未知的,点和线二维或三维都无所谓,用entmake生成一条多段线,感觉用entmake重做这条线很麻烦.除了entmake还有没有什么比较简便的方法啊,比如利用command能实现么?
因为n是未知,或者有没有什么函数能够不让这条多段线一下完成,实现提取一个点画一下,同理(command "pline").

Andyhon 发表于 2011-6-29 16:46:27

之前有过一些讨论
http://www.google.com./search?as_q=mapcar+%27command++cons&as_epq=Pline&as_oq=&as_eq=&hl=zh-CN&num=10&lr=&cr=&as_ft=i&as_filetype=&as_qdr=all&as_occt=any&as_dt=i&as_sitesearch=http%3A%2F%2Fbbs.mjtd.com%2F&as_rights=&safe=images&btnG=Google+%E6%90%9C%E5%B0%8B

mandala 发表于 2011-6-29 16:58:49

可以用command+repeat来实现。不过如果有圆弧的话就很麻烦了。

4041186888 发表于 2011-6-29 22:24:24

本帖最后由 4041186888 于 2011-6-29 23:51 编辑

回复 Andyhon 的帖子

十分感谢,方法受用
(mapcar 'VL-CMDF (cons "pline" plist))
(VL-CMDF """")
完胜!!!

4041186888 发表于 2011-6-29 22:25:24

回复 mandala 的帖子

我也想到这个了 可以不知道如何写。。。麻烦给点提示呗

wwwliuyu 发表于 2011-6-29 23:32:27

(defun itpline(pointlis / point point1 n ss)
(setq n 0)
(setq point(car pointlis))
(setq ss(ssadd))
(repeat(-(length pointlis)1)
    (setq point1(nth (setq n(+ n 1))pointlis))
    (command "pline" point point1 "")
    (setq ss(ssadd (entlast)ss))
    (setq point point1)
    )
(command "PEDIT" "l" "J" ss "" "")
(entlast)
)

mandala 发表于 2011-6-30 09:27:16

4041186888 发表于 2011-6-29 22:25 static/image/common/back.gif
回复 mandala 的帖子

我也想到这个了 可以不知道如何写。。。麻烦给点提示呗

条件不够。楼上的只针对直线pline的情况,如果有圆弧的话,还需要凸度列表之类,用entmake来做,command不行。

4041186888 发表于 2011-6-30 16:51:22

回复 mandala 的帖子

呵呵 谢谢你 不过我是测绘专业的 所以基本极少用弧度

sl20pt 发表于 2011-7-1 12:00:27

谢谢的。我试试,看看行不行

mandala 发表于 2011-7-5 22:00:55

本帖最后由 mandala 于 2011-7-5 22:01 编辑

4041186888 发表于 2011-6-30 16:51 static/image/common/back.gif
回复 mandala 的帖子

呵呵 谢谢你 不过我是测绘专业的 所以基本极少用弧度

巧了,我就是搞测绘的。你想要的其实是一个展点后连线的程序,比如将gps里的点转入到cad里边去,是吧。不过我觉得起码在我平时工作中,连线并没有必要,只要将点坐标转入后,标出点位和点名即可,因为连线通常需要用到不同的线型,也需要用到直线和圆弧,并且还得考虑到跟周边地物的连接,所以你连了线后还得删掉重连,还不如全部不连,转入后再统一连线。
页: [1] 2
查看完整版本: 已知一个坐标集合,如何画一条多段线?(已解决)