SlopeSilviu 发表于 2022-7-6 09:37:03

从中提取长度和角度

我需要一个LISP从多行中提取“长度”和“角度”,这样我就可以将它们转换为word/excel格式。
我会使用数据提取,但在办公室我们使用AutoCAD 2006,正如一些人可能知道的那样,AutoCAD 2006没有数据提取选项。
 
在我的例子中,我有二维几何形状,仅用多段线绘制。我也有一个观点。我需要从这一点开始,画线到每个折线的转折点,然后从这些线中提取长度和角度。
我每天都有很多这样的形状,所以每天手动操作真的很痛苦。
 
这是一个图片附件,以便更好地了解我的情况。

JohnM 发表于 2022-7-6 09:42:24

从该点开始的所有直线是否都连接到上面多段线形状的每个顶点?
长度和角度的集合必须按特定顺序吗?

SlopeSilviu 发表于 2022-7-6 09:44:10

对不起,我忘了提这个。
每条线都是独立的,从点到多段线顶点绘制。
例:点为X
-顶点为1,2,3,4,5,6
所有的线都是从X到1,从X到2的下一条线,从X到3的下一条线,依此类推。

Tyke 发表于 2022-7-6 09:48:54

这个问题最近也有人问过。请参阅此链接:http://www.cadtutor.net/forum/showthread.php?58199-Extracting-multiple-3d-length-for-line-in-AutoCAD-2007
 
同时检查本页底部的类似线程。

SlopeSilviu 发表于 2022-7-6 09:52:40

对不起,我查一下。

Tyke 发表于 2022-7-6 09:54:47

@SlopeSilviu:这不是和你的另一个帖子一样吗?
 

SlopeSilviu 发表于 2022-7-6 09:57:46

大约是的,但它有一些不同的基线。
我还得出结论,只有LISP可以帮助我,所以我在这里“重做”了一篇文章。

JohnM 发表于 2022-7-6 10:01:08

我只是为了好玩才放在一起的
为什么不让它尽可能多地做呢。
这将绘制到每个顶点的线,并生成一个以逗号分隔的文件,名为lineinfo。txt位于“C:\”
运行程序后,打开excel并导入txt文件。
 

(defun c:mklns (/ pt1 ss ent lsttxt txlst ff)
       (setq pt1 (getpoint "Pick The Point"));_base point
       (setq ss (ssget '((0 . "LWPOLYLINE"))));_polyline object
       (if ss
       (progn
       (setq ent (entget(ssname ss 0)));_entity info for poly object
       (foreach item ent
(if (= (car item) 10)
       (progn
       (command "pline" pt1 (cdr item) "");_draw lines
       (setq lsttxt (strcat               ;_make comma seperated list of length and angle
       (rtos(distance pt1 (cdr item)))
       ","
       (angtos (angle pt1 (cdr item))0 4)
       );_strcat
       );_setq
       (setq txlst (cons lsttxt txlst));_compiled list of all line length and angles
       );_progn
       );_if
       );_foreach
(setq ff (open "C:/LineInfo.txt" "w"));_write to file
(foreach item txlst
       (write-line item ff)
       );_foreach
       (close ff)
       );_progn
       (alert "No Polyline Object Selected")
       );_if
       );_defun

SlopeSilviu 发表于 2022-7-6 10:05:04

谢谢约翰的快速回复。
我试着加载LISP,它确实加载了,但它什么都没做,可能是命令行缺少了什么,或者一定有什么我不明白的地方。
这是一张图片:
我希望这只是我的愚蠢。。。

pBe 发表于 2022-7-6 10:06:40


(defun c:test (/ adoc Pline Xpoint PtList PtAngleList NewLine)
(vl-load-com)
(setq adoc (vla-get-activedocument (vlax-get-acad-object)))
(if (setq Pline (car (entsel "\nSelect Pline:"))
      Xpoint (getpoint "\nSelect \"X\" Point: "))
       (progn
(setq PtList (mapcar
                'cdr (vl-remove-if-not '(lambda (x) (= (car x) 10)) (entget Pline))))
(setq PtAngleList (open (strcat (getvar 'Dwgprefix)(vl-filename-base (getvar 'Dwgname)) ".csv") "A"))
(foreach Pts (cdr PtList)
       (setq NewLine (vla-addline (vlax-get (vla-get-activelayout adoc) 'Block)
          (vlax-3d-point Xpoint) (vlax-3d-point Pts)))
       (write-line (strcat (rtos (vla-get-length NewLine) 2 2) ","
                     (rtos (vla-get-Angle NewLine) 2 2)) PtAngleList)
          )
       (print PtAngleList)
(close PtAngleList)
      )
         )
(princ)
)
页: [1] 2
查看完整版本: 从中提取长度和角度