prodromosm 发表于 2022-7-6 06:15:19

将属性导出到txt(litle

我在论坛上找到了这个代码lisp
 
(defun c:att2file ()
(setq File1 (getfiled "File name" "" "txt" 1))
(setq Fopen (open File1 "w"))
(princ "\nSelect blocks to write att coords: ")
(setq BlockSet (ssget '((0 . "INSERT") (66 . 1))))
(setq Ecount 0)
(repeat (sslength BlockSet)
    (setq Bname (ssname BlockSet Ecount))
    (setq Blabel (cdr (assoc 2 (entget Bname))))
    (setq AttName (entnext Bname))
    (setq AttData (entget AttName))
    (setq TxtIns (cdr (assoc 10 AttData)))
    (setq Xtxt (rtos (car TxtIns) 2 4))
    (setq ytxt (rtos (cadr TxtIns) 2 4))
    (setq XY_Txt (strcat Blabel " " xtxt "," ytxt))
    (write-line XY_Txt Fopen)
    (setq Ecount (1+ Ecount))
)
(close Fopen)
(princ)
)
 
当我导出坐标时,会得到这样的txt文件
 
 
问题是我需要一个文件
 
 
这是我的街区。
 
这可能吗?
 
谢谢
指向图纸

Tharwat 发表于 2022-7-6 06:21:08

如果您对例程感到满意,只需从例程中删除突出显示的代码。
 

prodromosm 发表于 2022-7-6 06:24:29

我把它们去掉,但现在结果不是P,X,Y,只有X,Y。我需要P,X,Y。
 
(defun c:att2file ()
(setq File1 (getfiled "File name" "" "txt" 1))
(setq Fopen (open File1 "w"))
(princ "\nSelect blocks to write att coords: ")
(setq BlockSet (ssget '((0 . "INSERT") (66 . 1))))
(setq Ecount 0)
(repeat (sslength BlockSet)
    (setq Bname (ssname BlockSet Ecount))
    (setq AttName (entnext Bname))
    (setq AttData (entget AttName))
    (setq TxtIns (cdr (assoc 10 AttData)))
    (setq Xtxt (rtos (car TxtIns) 2 4))
    (setq ytxt (rtos (cadr TxtIns) 2 4))
    (setq XY_Txt (strcat " " xtxt "," ytxt))
    (write-line XY_Txt Fopen)
    (setq Ecount (1+ Ecount))
)
(close Fopen)
(princ)
)
 
我发现,坐标不正确!!有什么想法吗

Tharwat 发表于 2022-7-6 06:25:59

你说的P,X,Y是什么意思?

prodromosm 发表于 2022-7-6 06:29:07

P、 点的个数,1,2,3,k1,s1,t1任意

prodromosm 发表于 2022-7-6 06:32:54

这是我观点的一个例子。
 
我最好将导出更新为
 
P、 X,Y,Z
 
1, 58.262 ,191.538 ,100
.
.
.
S1,80.776194.665,99.23
.
.
.
测试。图纸

Tharwat 发表于 2022-7-6 06:36:42

试试这个新的程序。。
 

(defun c:Test (/ f ss o i n sn pt e p)
;;   Tharwat 11.08.2013    ;;
(if (and (setq f (getfiled "File name" "" "txt" 1))
          (setq ss (ssget '((0 . "INSERT") (66 . 1))))
          (setq o (open f "w"))
   )
   (progn
   (repeat (setq i (sslength ss))
       (setq n(entnext (setq sn (ssname ss (setq i (1- i)))))
             pt (cdr (assoc 10 (entget sn)))
       )
       (while (not (eq (cdr (assoc 0 (setq e (entget n)))) "SEQEND"))
         (if (and (eq (cdr (assoc 0 e)) "ATTRIB")
                  (eq (strcase (cdr (assoc 2 e))) "POINT")
             )
         (setq p (cdr (assoc 1 e)))
         )
         (setq n (entnext n))
       )
       (if p
         (write-line
         (strcat p
                   ","
                   (rtos (car pt) 2)
                   ","
                   (rtos (cadr pt) 2)
                   ","
                   (rtos (caddr pt) 2)
         )
         o
         )
       )
   )
   (close o)
   )
)
(princ)
)

eea123 发表于 2022-7-6 06:39:32

塔尔****,
 
您可以为带有描述的导出制作一个类似但不同的Lisp,并让它使用点#、北距(Y)、东距(X)、高程(Z)和描述吗?
 
谢谢
预计起飞时间

Tharwat 发表于 2022-7-6 06:41:44

 
为什么?

eea123 发表于 2022-7-6 06:45:01

我不知道为什么会这样?我把你的全名打成了塔瓦。
页: [1] 2
查看完整版本: 将属性导出到txt(litle