gS7 发表于 2022-7-6 07:10:09

需要Lisp程序导出Le

嗨,兄弟们,
 
我需要一个Lisp程序将带有坐标的导出级别和代码导出到Excel文件
 
例子:
东距,北距,代码,电平
 
附加的文件
 
调查数据。图纸

Organic 发表于 2022-7-6 07:17:38

为什么你没有一个观点或任何定义它们的东西?我假设文本的东、北坐标和其中的标高是快照?
 
您是否考虑过使用AutoCad的内置数据提取?

Tyke 发表于 2022-7-6 07:25:14

在这种情况下,数据提取将不起作用,因为两个文本实体没有连接,但它们具有相同的插入点。图形中也没有点,所以我认为您希望文本的插入点作为坐标。此示例图形中的所有文字图元的Z值都为0.0,是否始终如此?如果是这样,可以省略Z值。
 
但在其他方面,编写LISP例程是一项相当简单的工作。你看过李的网站了吗?他有很多Lisp程序的例程,也许有一个可以做你想做的。
http://www.lee-mac.com/index.html

pBe 发表于 2022-7-6 07:33:37

试试这个
 
(defun c:NE2CSV( / ofl i e data j k lst coord)
(vl-load-com)      
(if (and (= 1 (getvar 'DwgTitled))
      (setq data nil ss (ssget '((0 . "TEXT")))))
(progn
(setq fl(Strcat (getvar 'Dwgprefix)
                           (cadr (fnsplitl (getvar 'Dwgname)))
                           ".csv")
                   ofl (open fl "w"))
(repeat (setq i (sslength ss))
                     (setq e (vlax-ename->vla-object (ssname ss (setq i (1- i)))))
              (setq data (cons
                                 (mapcar '(lambda (d)
                                                (vlax-get e d))
                                       '("TextString" "TextAlignmentPoint")) data)))
        (setq data (vl-sortdata
              '(lambda (a b)
                   (setq a (cadr a) b (cadr b))
               (cond
                   ((> (cadr a) (cadr b)) T)
                   ((equal (cadr a) (cadr b) 0.1) (< (car a) (car b)))
               )
             )
          ))
               (while (and (setq j (car data))
                           (setq k (cdr data)))
                     (setq lst (list j (car k))
                           lst (if (numberp
                                     (read (caar lst))) lst (reverse lst))
                           coord (cadar lst))
                (write-line (strcat (rtos (cadr coord))
                           "," (rtos (car coord))
                           "," (caadr lst)
                           "," (caar lst))
                     ofl)
                     (setq data (cdr k))
                     )
               (close ofl)
       )
   )
(princ)
)

eldon 发表于 2022-7-6 07:39:17

 
一旦将数据输入Excel,快速排序将使其能够匹配坐标、标高和代码。
 
但我不确定AutoCAD的哪个版本首先进行了数据提取

Tyke 发表于 2022-7-6 07:50:10

 
非常正确的eldon,但正如pBe用他的Lisp程序例程演示的那样,这一切都是一下子完成的。不错的一个pBe

gS7 发表于 2022-7-6 07:54:09

精彩的Pbe。。。。。。。
你救了我。。。。
你创建的很棒的lisp程序
非常感谢你

eldon 发表于 2022-7-6 07:57:50

 
实际上,数据提取是在AutoCAD 2008中引入的。
 
我的观点是OP不需要lisp,因为该命令已经存在。然而,如果您不想让人们知道普通AutoCAD是如何工作的,请继续使用lisps。

Tyke 发表于 2022-7-6 08:05:57

 
我不知道数据提取是什么时候引入的,谢谢你的信息。你说的“我的观点是OP不需要lisp”是对的,但有时,对于经验不足的用户来说,使用lisp例程更“舒适”。我很乐意让用户知道普通AutoCAD的工作原理,但我的经验是,普通用户对普通AutoCAD的工作原理不感兴趣。一个悲伤的事实,但却是真实的。你的贡献很有价值,我从来没有批评的意思。扔掉你的链条,如果你作为一个测量员知道我的意思。

pBe 发表于 2022-7-6 08:15:30

 
很高兴为您服务。
 
干杯
 
 
 
谢谢你,小家伙。
 
继续编码
页: [1]
查看完整版本: 需要Lisp程序导出Le