vitalgg 发表于 2022-4-25 20:48:19

点位编号 这个块的属性也可以提取。

song宋_74729 发表于 2022-4-25 21:24:00

vitalgg 发表于 2022-4-25 20:48
点位编号 这个块的属性也可以提取。

点位编号 这个块的属性 方法呢

song宋_74729 发表于 2022-4-28 08:19:24

vitalgg 发表于 2022-4-25 18:31
写代码行不通的话,

直接用CAD的数据提取吧。 菜单- 工具- 数据提取。

(defun block:get-attributes (blk / lst)
"获取块属性,返回属性名和值的点对列表。"
(if (= (quote ename)
      (type blk))
    (if (safearray-value (setq lst (vlax-variant-value (vla-getattributes (vlax-ename->vla-object blk)))))
      (mapcar (quote (lambda (x)
            (cons (vla-get-tagstring x)
            (vla-get-textstring x))))
      (vlax-safearray->list lst)))
    nil))
;;;;;;;;;;;;;;;;
(defun pickset:to-list (ss)
"选择集->像素列表"
"像素列表"
(if ss (vl-remove-if-not (quote p:enamep)
      (mapcar (quote cadr)
      (ssnamex ss)))
    nil))
;;;;;;;;;;;;;;;;;
(defun c:j1()
    (defun export-pt (/ fp)
      (setq fp (open (strcat "D:/"
                           (car (string:to-list (@:timestamp) "."))
                           ".txt")
                     "w"))
      (mapcar
       '(lambda(x)
          (setq att% (block:get-attributes x))
          (write-line
         (strcat (cdr (assoc "CNTP" att%))"," ;;名称
                   (string:from-list (mapcar '@:to-string (entity:getdxf x 10))",")",";;坐标
                   (cdr (assoc "ELEV" att%))"," ;;标高
                   (cdr (assoc "DESC" att%))) ;; 描述
         fp))
       (pickset:to-list (ssget "x" '((0 . "insert")(2 . "cpoint")))) ;; 所有块像素
       )
      (close fp)
      (@:cmd "notepad" filename) ;; 用 notepad 打开生成的文件
      (princ))

是这样吗

vitalgg 发表于 2022-4-28 08:52:27

song宋_74729 发表于 2022-4-28 08:19
(defun block:get-attributes (blk / lst)
"获取块属性,返回属性名和值的点对列表。"
(if (= (quot ...

函数是一层套一层的,需要把所有调用函数都粘贴进去。

能联网的话就不用了 @lisp 会自动加载这些函数。

willing0 发表于 2022-6-6 16:03:15

很快就考虑换好了哈哈
页: 1 [2]
查看完整版本: (已解决)大神帮忙如何批量提取控制点名坐标高程至txt