樱木花道2 发表于 2013-11-11 15:46:46

lisp 圆心x,y坐标排序问题

本帖最后由 樱木花道2 于 2013-11-11 15:52 编辑

如题,lisp如何实现图中的排序?

樱木花道2 发表于 2013-11-11 15:50:24

按照以前前辈的代码生成的标号是这样的,如何改才能满足条件

自贡黄明儒 发表于 2013-11-11 16:15:32

取一个对象,其它对象与它的的夹角小于某一误差的参与排序,排序以距离来排序。

樱木花道2 发表于 2013-11-12 10:17:19

本帖最后由 樱木花道2 于 2013-11-12 13:39 编辑

自贡黄明儒 发表于 2013-11-11 16:15 http://bbs.mjtd.com/static/image/common/back.gif
取一个对象,其它对象与它的的夹角小于某一误差的参与排序,排序以距离来排序。
(defun c:tt ()
    (princ "\n请选择要排序的实体...")
      (setq bl1 (getpoint))
(setq bl2 (getpoint))
(if      (setq ss (ssget))
      (progn
            ;; 1、获取点位表
            (setq lst '()
                  i   0
            )
            (repeat (sslength ss)
                (setq en(ssname ss i)
                      ent (entget en)
                      pt(cdr (assoc 10 ent))
                      lst (cons pt lst)
                      i          (1+ i)
                )
            )
            ;; 2、排序

      
             (setq
                lst (vl-sort
                        lst
                        (function
                            (lambda (e1 e2)
                               (if (equal (angle bl1 bl2) (angle e1 e2) 1e-1)
                         (< (cadr e1) (cadr e2))
                     (< (car e1) (car e2))
                               )
                            )
                         )
                     )
            )
            ;; 3、写序号文字
            (setq i 1)
            (foreach pt      lst
                (command "_.text" "j" "mc""non"pt (getvar "TEXTSIZE") 0 (itoa i))
                (setq i (1+ i))
            )




      )
    )
    (princ)
)
前辈帮我看看有什么问题,还是出不来

llsheng_73 发表于 2013-11-13 16:56:02

1.如果想直接用大神们弄好的排序程序,你可以把你的图先旋转水平方向排列,让它排好序编完号后再旋转回去

2.另外如果你的圆是按你要排序的顺序绘制的,可以不用排序,直接SSGET后小小处理一下直接进行编号

3.如果以上两个办法都不可行,那只能自己编写排序函数

樱木花道2 发表于 2013-11-14 08:04:01

llsheng_73 发表于 2013-11-13 16:56 static/image/common/back.gif
1.如果想直接用大神们弄好的排序程序,你可以把你的图先旋转水平方向排列,让它排好序编完号后再旋转回去
...

恩,请教一个问题,上面程序中(progn (<(car e1) (car e2)) (setq dd 1)) 后与(<(car e1) (car e2)生成的排序不一样,这是为什么?

樱木花道2 发表于 2013-11-14 14:18:04

按照两位前辈的指点,问题已解决
页: [1]
查看完整版本: lisp 圆心x,y坐标排序问题