世人皆醉 发表于 2023-11-22 11:21:07

关于CAD单行文字导出到CSV格式的一点疑问

各位大佬好,我想将CAD获取的多个文字数据导出到csv,但是能力不够,求大佬完善一下我的代码

(defun c:tt()
(command "._undo" "_begin")
    (setq k 0)
    (setq tag 0)
(setq s (ssget))
(setq nu (sslength s))
(while (< k nu)
      (setq en (entget (setq a (ssname s k))))
      (setq k (+ k 1))
      (if (= (cdr (assoc 0 en)) "TEXT")
         (progn
    (SETQ d1((cdr (assoc 1 en)))
   
         (setq tag (+ tag 1))
         ))
    ))
(setq f (open "C:/Users/Administrator/Desktop/1.csv""a" ))
(write-line                                     f)
(close f))想要的效果




xj6019 发表于 2023-11-22 11:21:08

简单搞了一下玩,排序参照黄大师的函数用法,路径可以自己改为自己实际需要的路径,目前在D盘根录目下

黄大师函数使用说明如下:

;;ssPts: 1 选择集,返回图元列表
;;         2 点表(1到n维 1维时key只能是x或X),返回点表
;;          3 图元列表,返回图元列表
;;Key: "xyzXYZ"任意组合,例如"yX",y在前表示y坐标优先,小y表示从小到大(注:二维点时,不能有z)
;;FUZZ: 允许误差
;;注:点表可以1到n维混合,Key长度不大於点的最小维数。
;;示例1 (HH:ssPts:Sort (ssget) "YxZ" 0.5);返回(<Entity name: 7ef7b3a8> <Entity name: 7ef7b3a0>)
;;示例2 (HH:ssPts:Sort (list '(2 3) '(3 5)) "Yx" 0.5);返回((3 5) (2 3))
;;示例3 (HH:ssPts:Sort '(<Entity name: 7ef79a28> <Entity name: 7ef79a10>) "YxZ" 0.5)
;;示例4 (HH:ssPts:Sort (list "DF" "ZX" "A" "DD" "A") "X" 1)=>("ZX" "DF" "DD" "A" "A")
;;示例5 (HH:ssPts:Sort (list 5 8 5 9) "X" 1)=>(9 8 5)

世人皆醉 发表于 2023-11-22 13:21:47

xj6019 发表于 2023-11-22 13:09
简单搞了一下玩,排序参照黄大师的函数用法,路径可以自己改为自己实际需要的路径,目前在D盘根录目下

...

这个顺序能调整按行变动么,比如说,先从第一行过去,第一行没了在往下来,这个代码好像是先按列在按行

xj6019 发表于 2023-11-22 13:40:55

可以的,顺序是可以调整的,规则就是参照黄大师函数的说明,你的想法的话就是将排序的那一句改为下面这样:
(setq entllst(HH:ssPts:Sort ss "Yx" 0.5))
改一下这一句,将 xY 改为Yx就是你要的排序方式了
页: [1]
查看完整版本: 关于CAD单行文字导出到CSV格式的一点疑问