wanchr 发表于 2023-11-28 18:51:32

请问图元信息里的10坐标组怎么提高他精度

(setq a (list (cdr (assoc 10 (b))))),

通过10提取的精度好像不足,改单位里的精度也不起作用,你们是怎么处理的
谢谢帮我。

飞雪神光 发表于 2023-11-29 11:06:04

wanchr 发表于 2023-11-29 09:20
(defun extract-entity-coordinates (ss)
(setq coordinates '())



(defun extract-pts (ss)
        (defun BF-list-delsame (lst buzz)
                (if Lst
                        (cons (car Lst)
                                (BF-list-delsame
                                        (vl-remove-if
                                                '(lambda (x) (equal (car lst) x buzz))
                                                (cdr lst)
                                        )
                                        buzz
                                )
                        )
                )
        )
(if (sslength ss)
    (progn
                        (setq pts '())
      (setq num (sslength ss))
      (setq i 0)
                        (while (< i num)
      (setq ty (ssname ss i))
      (setq tylx (cdr (assoc 0 (entget ty))))
                                (cond
          ((= tylx "CIRCLE")
                                                (setq pts (append pts (list (cdr (assoc 10 (entget ty))))))
                                        )
                                )
                                (setq i (1+ i))
      )
                )
)
        (BF-list-delsame pts 0.1)
)
(extract-pts (ssget))

wanchr 发表于 2023-11-29 09:20:13

飞雪神光 发表于 2023-11-29 08:28
导出之前就去重 明经上找个去重函数 还有再回复我 请点击下方的回复 否则看不到
                     ...

(defun extract-entity-coordinates (ss)
(setq coordinates '())

(if (sslength ss)
    (progn
      (setq total-entities (sslength ss))
      (setq i 0)

      (while (< i total-entities)
      (setq entity (ssname ss i))
      (setq entity-type (cdr (assoc 0 (entget entity))))

      (cond
          ((= entity-type "CIRCLE")
              (setq entity-coordinates(mapcar (function (lambda (x) (rtos x 2 8))) (cdr (assoc 10 (entget entity))))))
       ; 上面一行怎么把xyz,连起来,用于下面的比较
          (t
         (setq entity-coordinates '()))
      )

      (setq coordinates (append coordinates entity-coordinates)) ;这里比较去重,二个表怎么比较啊,
      (setq i (1+ i))
      )
    )
)

coordinates
)
把用到的函数告诉我啊,我水货不知道怎么弄。

wanchr 发表于 2023-11-29 20:47:30

本帖最后由 wanchr 于 2023-11-29 20:58 编辑

飞雪神光 发表于 2023-11-29 18:47
去重已经完成了 输出就用write-line princ 啥的 rtos设置输出精度
(defun extract-coordinates()
(setq aa (extract-entity-coordinates ss)) ; 这里是去重后对象的坐标信息
(setq bb (mapcar (lambda (coord)
                                  (apply 'list (mapcar (lambda (num)
                                                      (rtos num 2 8))
                                                      coord)))
                               aa)))
aa里面是下面这种坐标
((1.48815e+06 1.10276e+06 1.46543e-06)
(1.48915e+06 1.10276e+06 1.46543e-06))
上面转换不成功,到底要怎么处理这个数据吗。rtos 这个函数真搞不懂,我是想他保留3位小数的。

飞雪神光 发表于 2023-11-28 19:02:17

如果是代码中的运算不需要处理 如果需要导出用(rtos x 2 9)

wanchr 发表于 2023-11-28 19:16:41

rtos 处理的x是哪里来的,
(assoc 10 (b)) 得到的(10 324559.0 707949.0 0.0),带着括号 。
我目的是在框选的对象中提取坐标。

飞雪神光 发表于 2023-11-28 19:29:20

提取之后做什么? 是运算还是导出文本 x就是 坐标中的 三个值

goldwheat 发表于 2023-11-28 19:43:16

(defun c:ttpt ()
(setq entsel^ (entsel "\选择直线试试..."))
(setq pt (cdr (assoc 10 (entget (car entsel^)))))
(mapcar (function (lambda (x) (rtos x 2 8))) pt)
)
;返回结果所示("15270.12355823" "5956.51764391" "0.00000000")

xj6019 发表于 2023-11-28 20:12:35

你提取的10组码后,所见并不是所得,它的实际精度要大的多的多,用rtos设置一个需要的精度转为字符串后,你就能看到了

wanchr 发表于 2023-11-28 21:38:54

(setq entity-coordinates(mapcar (function (lambda (x) (rtos x 3 8))) (cdr (assoc 10 (entget entity))))))
这句话确实能弄到坐标,可是他有缺陷,问题出在哪里
23284'-1.23880236"
58995'-8.70445769"
0.00000000"
这是提到txt的坐标
可实际我看到的图元信息是:
((-1 . <图元名: 2088797cef0>) (0 . CIRCLE) (330 . <图元名: 20887974820>) (5 . 1BB7) (100 . AcDbEntity) (67 . 0) (410 . Model) (8 . 1507) (100 . AcDbCircle) (10 279409.0 707949.0 0.0) (40 . 200.0) (210 0.0 0.0 1.0))
大哥们这是哪里出问题了啊。

飞雪神光 发表于 2023-11-28 22:03:43

wanchr 发表于 2023-11-28 21:38
(setq entity-coordinates(mapcar (function (lambda (x) (rtos x 3 8))) (cdr (assoc 10 (entget entity)) ...

(rtos x 3 8) 是2 8 不是3 8

wanchr 发表于 2023-11-28 22:38:59

本帖最后由 wanchr 于 2023-11-28 22:40 编辑

哥你真行,换上2 8 果然行了,再问一下,能把x y z 放一行,就是把xyz,放一行,我想要比较他们,删掉重复出现过坐标,只留下唯一 ,请问要怎么处理。怎么给文本里的数据去重

飞雪神光 发表于 2023-11-29 08:28:29

本帖最后由 飞雪神光 于 2023-11-29 08:29 编辑

wanchr 发表于 2023-11-28 22:38
哥你真行,换上2 8 果然行了,再问一下,能把x y z 放一行,就是把xyz,放一行,我想要比较他们,删掉重复出 ...
导出之前就去重 明经上找个去重函数 还有再回复我 请点击下方的回复 否则看不到
                      ↓
                      ↓
                      ↓
                      ↓
                      ↓
                      ↓
                      ↓
页: [1] 2 3
查看完整版本: 请问图元信息里的10坐标组怎么提高他精度