cibola 发表于 2022-7-6 06:59:40

坐标、块和文本

我正在寻找一个lisp,它将按层导出组成多段线、直线、块、文本弧和其他数据的所有点的笛卡尔坐标到csv文件中。
 
有没有人有这样的Lisp程序或者知道我在哪里能找到?
 
提前感谢!

Lee Mac 发表于 2022-7-6 07:03:08

当你说“所有点”。。。。如果你真的是指“所有点”,那么会有无穷多个点

tagkelas 发表于 2022-7-6 07:06:38

或者,Lee Mac,我们如何用lisp-rutine将点插入到多段线的所有顶点?
......
然后导出点….:
http://www.cadtutor.net/forum/showpost.php?p=22581&postcount=4

Lee Mac 发表于 2022-7-6 07:12:18

是的,我相信这是可以做到的——我看看有没有时间。

cibola 发表于 2022-7-6 07:13:19

嘿,谢谢你的建议。实际上,我要找的大部分内容都包含在。dxf文件。然而,我想知道是否有一种有效的方法可以格式化dxf数据或将其发送到数据库?

Lee Mac 发表于 2022-7-6 07:17:45

这应该将点插入并导出到csv或txt文件中。
 
[颜色=#990099];;Lee McDonnell 26.07.2009导出的多段线点
(defunc:ptExp(/doc spc ss file sel pts)
(vl load com)
(setqdoc(vla get ActiveDocument
(vlax get Acad Object))
spc(如果(zerop(doc b])
(如果(=((doc b][color=RE
(vla get modelspacedoc)
(vla get paperspacedoc))
(vla get modelspacedoc))
(如果(和((([#009900]0“*折线”
(setq文件
(getfield“输出文件”
(if*load*load)9[color=RED
(progn
(setq*加载文件(打开文件“a”
(vlax forObj(setqsel b](doc b])
(setqpts
[颜色=红色](vlax列表->3D点
(vlax getObj'坐标)
(cond(eq(Obj) [颜色=红色]
(mapcar
(功能
(lambda(x)
(写入行
(strcat
(rtos(carx)2(]44
(rtos(cadrx22chr900]44
(rtos(caddrx2
(vla addPointspc(vlax-3D-pointx
(princ
(strcat“\n>”)
(关闭文件)
(vla删除sel))
(princ))
(defunvlax列表->3D点(lst x/oLst)
(而lst
(setqoLst
(cons(list)([如果x0.0(caddrlst)))
lst((如果xcddrcdddrlst
oLst

tagkelas 发表于 2022-7-6 07:18:54

李·麦克
我做错什么了吗?!
 
看看这个样本。
在lisp例程中,“提升”不会写入txt文件。

Lee Mac 发表于 2022-7-6 07:23:24

我假设多段线在0,0。
 
但我可以纠正它。

Lee Mac 发表于 2022-7-6 07:26:48

试试这个:
 

;; Polyline Point Exported, by Lee McDonnell 26.07.2009

(defun c:ptExp (/ doc spc ss file sel pts)
(vl-load-com)
(setq doc (vla-get-ActiveDocument
             (vlax-get-Acad-Object))
       spc (if (zerop (vla-get-activespace doc))
             (if (= (vla-get-mspace doc) :vlax-true)
               (vla-get-modelspace doc)
               (vla-get-paperspace doc))
             (vla-get-modelspace doc)))
(if (and (setq ss (ssget '((0 . "*POLYLINE"))))
          (setq file
            (getfiled "Output File"
            (if *load *load "") "csv;txt" 9)))
   (progn
   (setq *load file file (open file "a"))
   (vlax-for Obj (setq sel (vla-get-ActiveSelectionSet doc))
       (setq pts
         (vlax-list->3D-point
         (vlax-get Obj 'Coordinates)
             (cond ((eq (vla-get-ObjectName Obj) "AcDbPolyline"))) Obj))         
       (mapcar
         (function
         (lambda (x)
             (write-line
               (strcat
               (rtos (car x) 2 2) (chr 44)
                   (rtos (cadr x) 2 2) (chr 44)
                     (rtos (caddr x) 2 2)) file)
             (vla-addPoint spc (vlax-3D-point x)))) pts))
   (princ
       (strcat "\n<< Points from "
         (itoa (vla-get-Count sel)) " Polylines written to file >>"))
   (close file)
   (vla-delete sel)))
(princ))
      
(defun vlax-list->3D-point (lst x Obj / oLst)
(while lst
   (setq oLst
   (cons (list (car lst) (cadr lst)
               (if x (vla-get-Elevation Obj) (caddr lst))) oLst)
         lst ((if x cddr cdddr) lst)))
oLst)

cibola 发表于 2022-7-6 07:29:38

谢谢,但它给了我以下错误消息:
错误:输入时虚线对中有额外的CDR
 
此外,这只会抓取多段线吗?我的画有几条线、几条弧和一点文字。我需要的大部分信息都在。dxf文件。。。有没有一种好方法可以将这些信息直接从AutoCAD导出到数据库?
页: [1] 2
查看完整版本: 坐标、块和文本