Autolisp帮助
有人知道如何创建一个lisp来导出包含对象数据和坐标的csv文件吗?实例
od字段1、od字段2等。。。x1、y1、z1、x2、y2、z2等。。。。
理想情况下,它应该能够报告所有对象数据字段,无论其数量如何。它应该报告多段线的所有xyz坐标。
我还需要一个lisp从上述格式导入csv文件。
如果你好奇,这一切都是为了解决map3d在导出形状文件时设置的4个坐标限制。。。如果有人有另一种解决方法,我洗耳恭听!
Dalivore公司 不确定某处是否已经有这样一个。我知道有很多CSV导出和导入的东西,但如果它们特定于C3D/地图实体数据,我肯定不知道。 一个旧的解决方案称为DXF文件,包含所有对象数据和co ORD及其简单的文本文件! 我有一些东西埋在档案里。。。让我找到它。这是相当困难的,因为我总是命名我的代码随机当我开始。。。 此外,如果你有一个示例dwg,我可以用。。。那太棒了。 不完美,但。。。
(defun c:objectDataExtract(/ coordslist count ent f fieldnames fieldstring path ss ssents strcatlst tablelist x z)
(vl-load-com)
(if (and (setq path (getfiled "Specify .CSV file name:"
(getvar 'dwgprefix)
"csv"
1
)
)
(setq ss (ssget "x")); SELECT EVERYTHING
(setq ssEnts (vl-remove-if-not 'ade_odgettables (vl-remove-if 'listp (mapcar 'cadr (ssnamex ss))))));Filter out only that which has a table attached to it
(progn
(setq f (open path "w"))
(foreach ent ssents
(setq tablelist (ade_odgettables ent))
(setq count 0)
(repeat (length tablelist)
(foreach def (cdr (assoc "Columns" (ade_odtabledefn (nth count tablelist))))
(if (not (member (cdr (assoc "ColName" def)) fieldnames))
(setq fieldnames (cons (cdr (assoc "ColName" def)) fieldnames))
)
)
)
(setq strcatlst
(apply 'strcat (mapcar '(lambda (x)
(strcat x ": " (If (/= (type (setq fieldstring (ade_odgetfield ent (ade_odgettables ent) x 0))) 'STR)
(rtos fieldstring 2 2)
fieldstring) ",")) fieldnames)))
(setq coordsList (apply 'strcat (mapcar '(lambda (z) (strcat (rtos z 2) ",")) (vlax-get (vlax-ename->vla-object ent) 'Coordinates))))
(write-line (strcat strcatlst coordsList) f)
)
(setq f (close f))
)))
页:
[1]