Autocad软件控制里的读取变量怎么使用?

使用问题 · 661 次浏览
ShiFang 创建于 2024-04-05 10:12

他读取的是CAD命令返回的值还是有其他作用


回复内容
CL 2024-04-05 10:44
#1

具体用途需要结合cad的文档和实际需求。 一个例子是获取当前文档的名称,可以读取变量  DWGNAME。

ShiFang 回复 CL 2024-04-05 11:17 :

你好,这个可以读取cad命令的返回值吗?比如命令: DI DIST

距离 = 14595,XY 平面中的倾角 = 0,  与 XY 平面的夹角 = 0

X 增量 = 14595,  Y 增量 = 0,   Z 增量 = 0

里面的“距离”这个变量的值吗?
CL 回复 ShiFang 2024-04-05 11:21 :

可能没法直接获取。试试使用cad脚本将信息写入变量,再读取变量。

ShiFang 回复 CL 2024-04-05 11:26 :

这个是一个统计多线段长度的lsp文件,我现在想要获取他的输出值,方便看一下可以怎么加入写入变量的内容吗?

(princ "\n程序:统计线段长度 命令:te")(defun C:TE (/ CURVE TLEN SS N SUMLEN) (vl-load-com) (setq SUMLEN 0) (setq SS (ssget '((0 . "CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE,ARC")))) (setq N 0) (repeat (sslength SS) (setq CURVE (vlax-ename->vla-object (ssname SS N))) (setq TLEN (vlax-curve-getdistatparam CURVE (vlax-curve-getendparam CURVE))) (setq SUMLEN (+ SUMLEN TLEN)) (setq N (1+ N))) (setq sumlen(/ sumlen 1000))(princ (strcat "\n共选择 " (itoa (sslength SS)) " 条线段. 线段总长: "(rtos SUMLEN 2 3) "米."))(princ) )

CL 回复 ShiFang 2024-04-05 11:28 :

遗憾的是我不懂cad和lisp😂

ShiFang 回复 CL 2024-04-05 11:30 :
也非常感谢了,我现在清楚了他读取的系统变量就可以接着研究了😁
CL 回复 ShiFang 2024-04-05 11:50 :

这个可以作为参考


ShiFang 回复 CL 2024-04-05 12:01 :

冰雷木子 回复 ShiFang 2024-05-09 10:37 :

你试试这个,直接把获取到的长度输出到剪贴板,然后quicker获取剪贴板做变量就行

(defun SET-CLIP-STRING (STR / HTML RESULT)

    (and (= (type STR) 'STR)

         (setq HTML (vlax-create-object "htmlfile"))

         (setq RESULT (vlax-invoke

                          (vlax-get (vlax-get HTML 'PARENTWINDOW)

                                    'CLIPBOARDDATA

                          )

                          'SETDATA

                          "Text"

                          STR

                      )

         )

         (vlax-release-object HTML)

    )

)


(defun C:TE (/ CURVE TLEN SS N SUMLEN) 

  (vl-load-com) 

  (setq SUMLEN 0) 

  (setq SS (ssget '((0 . "CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE,ARC")))) 

  (setq N 0) 

  (repeat (sslength SS) 

    (setq CURVE (vlax-ename->vla-object (ssname SS N))) 

    (setq TLEN (vlax-curve-getdistatparam CURVE (vlax-curve-getendparam CURVE))) 

    (setq SUMLEN (+ SUMLEN TLEN)) 

    (setq N (1+ N))

  ) 

  (setq sumlen(/ sumlen 1000))

  (SET-CLIP-STRING (rtos SUMLEN 2 3))

  (princ (strcat "\n共选择 " (itoa (sslength SS)) " 条线段. 线段总长: "(rtos SUMLEN 2 3) "米."))

  (princ) 

)

ShiFang 回复 冰雷木子 2024-05-09 10:41 :
感谢!可以输出到剪切板了
ShiFang 2024-04-05 11:26
#2


ShiFang 最后更新于 2024-04-05 11:27
回复主贴