newbuser 发表于 2014-12-3 11:20:35

帮忙看哪里出错了

求各位高手指点,关于Y坐标比大小的问题 (setq a '(3 4 0))
(setq b '(1 2 0))
(apply 'max (mapcar '(lambda (x) (cadr x)) (list a b)))
返回 4
(mapcar '(lambda (x) (max (cadr x))) (list a b))
返回 (4 2)
我想返回 '(3 4 0)抓破头都搞不到一种简单的方法来实现,希望高手指点迷津。

自贡黄明儒 发表于 2014-12-3 11:25:43

本帖最后由 自贡黄明儒 于 2014-12-3 11:27 编辑

(mapcar '(lambda (x y) (max x y)) a b)

Andyhon 发表于 2014-12-3 11:29:57


(setq b '(5 2 0))
or
(setq b '(5 4 0))

===> ???

newbuser 发表于 2014-12-3 14:15:12

Andyhon 发表于 2014-12-3 11:29 static/image/common/back.gif

(setq b '(5 2 0))
or

我的目的很简单,就是想判断并获取竖直直线的上部顶点坐标,暂时不会出现Y值相等的类似情况。简化思路还请安迪长老赐教啊。

Andyhon 发表于 2014-12-3 15:01:25

是许多点取Y值大者;亦或是单纯的坚直线取高点!?

newbuser 发表于 2014-12-3 15:06:53

Andyhon 发表于 2014-12-3 15:01 static/image/common/back.gif
是许多点取Y值大者;亦或是单纯的坚直线取高点!?

单纯的一条直线而已。类似的用循环处理。(entmake        (list '(0 . "TEXT")
                      (cons 1 str-len)
                      '(10 1000 1000 0)
                      h1
                      (cons 72 2)
                      (cons 50 ang)
                )
       )那么问题又来了,怎么这个生成的文字插入点为0呢?无论是变量,还是定量插入点都为0.

Andyhon 发表于 2014-12-3 15:19:37

文字得多费心些
ex.

(entmake
'((0 . "TEXT")
(10 9 6 0.0)
(40 . 3.0)
(1 . "Test")
(50 . 0.0)
))

(entget (entlast)) ====>
((-1 . <Entity name: 7ef7d228>) (0 . "TEXT") (330 . <Entity name: 7ef79cb8>) (5 . "51C")
(100 . "AcDbEntity") (67 . 0) (410 . "Model") (8 . "0") (100 . "AcDbText")
(10 9.0 6.0 0.0) (40 . 3.0) (1 . "Test")
(50 . 0.0) (41 . 1.0) (51 . 0.0) (7 . "STANDARD")
(71 . 0) (72 . 0) (11 0.0 0.0 0.0) (210 0.0 0.0 1.0)
(100 . "AcDbText") (73 . 0)
)

newbuser 发表于 2014-12-3 18:47:41

Andyhon 发表于 2014-12-3 15:19 static/image/common/back.gif
文字得多费心些
ex.



多谢安迪长老的耐心解答和提醒。

Andyhon 发表于 2014-12-3 19:51:35

Command: (car (vl-sort (list a b) '(lambda (u v) (> (cadr u) (cadr v)))))
(3 4 0)

newbuser 发表于 2014-12-3 19:59:13

Andyhon 发表于 2014-12-3 19:51 static/image/common/back.gif
Command: (car (vl-sort (list a b) '(lambda (u v) (> (cadr u) (cadr v)))))
(3 4 0)

遍历论坛终于被安迪长老填补了这个算法的窟窿。多谢了,长老先僧。
页: [1] 2
查看完整版本: 帮忙看哪里出错了