土木在线论坛 \ 建筑设计 \ CAD下载及教程 \ 请教一个问题

请教一个问题

发布于:2007-09-12 21:24:12 来自:建筑设计/CAD下载及教程 [复制转发]
最近工作中遇到 的一个问题,如下:

有1000个点,位于xy平面以上,另有1000个点位于前面那些点的正下方。现在要将这些点对应连接起来,形成1000条平行于z轴的直线,有没有快捷的办法?请高手指点

全部回复(3 )

只看楼主 我来说两句
  • precon
    precon 沙发
    非常感谢!谢谢
    2008-05-15 14:49:15

    回复 举报
    赞同0
  • 小萝卜的头

    以下就是highflybird写的.......
    他应该不介意我代码发在这里吧..呵呵.
    ;;;test
    (defun c:test(/ sel1 sel2 lst1 lst2)
    (if (and (setq sel1 (ssget ’((0 . "POINT"))))
    (princ "\n请选择下面的点:")
    (setq sel2 (ssget ’((0 . "POINT"))))
    (= (sslength sel1) (sslength sel2))
    )
    (progn
    (setq lst1 (get-points-list sel1))
    (setq lst2 (get-points-list sel2))
    (setq lst1 (vl-sort lst1 ’sort-by-angle-distance))
    (setq lst2 (vl-sort lst2 ’sort-by-angle-distance))
    (mapcar ’make-line lst1 lst2)
    )
    )
    (princ)
    )
    ;;;sort
    (defun sort-by-angle-distance (e1 e2 / an1 an2 d1 d2 p1x p1y p2x p2y)
    (setq p1x (car e1))
    (setq p1y (cadr e1))
    (setq p2x (car e2))
    (setq p2y (cadr e2))

    (setq an1 (angle ’(0 0) (list p1x p1y)))
    (setq an2 (angle ’(0 0) (list p2x p2y)))
    (setq d1 (+ (* p1x p1x) (* p1y p1y)))
    (setq d2 (+ (* p2x p2x) (* p2y p2y)))
    (if (equal an1 an2 1e-8)
    (< d1 d2)
    (< an1 an2)
    )
    )
    ;;;make-line
    (defun make-line (pt1 pt2)
    (entmake
    (list
    ’(0 . "LINE")
    (cons 10 pt1)
    (cons 11 pt2)
    )
    )
    )
    ;;;get point set
    (defun get-points-list (sel / i ent lst pt pts)
    (setq i 0)
    (repeat (sslength sel)
    (setq ent (ssname sel i))
    (setq lst (entget ent))
    (setq pt (cdr (assoc 10 lst)))
    (setq pts (cons pt pts))
    (setq i (1+ i))
    )
    pts
    )
    2007-09-30 09:30:30

    回复 举报
    赞同0
加载更多
这个家伙什么也没有留下。。。

CAD下载及教程

返回版块

52.09 万条内容 · 682 人订阅

猜你喜欢

阅读下一篇

cad操作

我想请教一下各位, cad绘图时,多线段样式里边的元素特征只能设置一次,比如说我第一次设置的多线段是三道平行线,当我画完后,再设置两条平行线的多线段时就怎么也改不过来了,不知为何??谢谢指教啊!!!!

回帖成功

经验值 +10