明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2560|回复: 23

[提问] 有偿(已付款答谢)求改进LSP脚本

[复制链接]
发表于 2023-7-26 17:56:56 | 显示全部楼层 |阅读模式
本帖最后由 lzh720 于 2023-7-26 22:24 编辑

以下是线段统计长度的脚本
===============================
(princ "\n程序:duoduanxianqiuhe 命令:duoduanxian")
(defun C:duoduanxian (/ 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 2)" m"))
(princ) )
==================================
我想让这个脚本里统计的线段长度自动复制到剪贴板里用于复制到EXCEL
需要怎么修改这个脚本?
如果有用的话,我可以微信转账30块答谢(已付款答谢)
=======================
说一下我得软件环境,天正T20V9平台,AutoCAD2013_64
发表于 2023-7-26 21:05:09 | 显示全部楼层
本帖最后由 小鸟 于 2023-7-26 21:06 编辑
  1. ;;;以下是线段统计长度的脚本
  2. ;;;===============================
  3. (princ "\n程序:duoduanxianqiuhe 命令:duoduanxian")
  4. (defun C:duoduanxian (/ CURVE TLEN SS N
  5.           ;SUMLEN
  6.           )
  7. (vl-load-com)
  8. (setq SUMLEN 0)
  9. (setq SS (ssget '((0 . "CIRCLE,ELLIPSE,LINE,*POLYLINE,SPLINE,ARC"))))
  10. (setq N 0)
  11. (repeat (sslength SS)
  12. (setq CURVE (vlax-ename->vla-object (ssname SS N)))
  13. (setq TLEN (vlax-curve-getdistatparam CURVE (vlax-curve-getendparam CURVE)))
  14. (setq SUMLEN (+ SUMLEN TLEN))
  15. (setq N (1+ N)))
  16. (setq sumlen(/ sumlen 1000))
  17.   (SET-CLIP-STRING (rtos SUMLEN 2 2))
  18. (princ (strcat "\n共选择 " (itoa (sslength SS)) " 条线段. 线段总长: " (rtos SUMLEN 2 2)" m"))
  19. (princ) )
  20. ;;;==================================
  21. ;;;我想让这个脚本里统计的线段长度自动复制到剪贴板里用于复制到EXCEL
  22. ;;;需要怎么修改这个脚本?
  23. ;;;如果有用的话,我可以微信转账30块答谢
  24. ;;;
  25. ;;;=======================
  26. ;;;说一下我得软件环境,天正T20V9平台,AutoCAD2013_64

  27. ;;;=================================================================*
  28. ;;;功能:向系统剪贴板写入文字                                       *
  29. (defun SET-CLIP-STRING (STR / HTML RESULT)
  30.     (and (= (type STR) 'STR)
  31.    (setq HTML (vlax-create-object "htmlfile"))
  32.    (setq RESULT (vlax-invoke
  33.         (vlax-get (vlax-get HTML 'PARENTWINDOW)
  34.             'CLIPBOARDDATA
  35.         )
  36.         'SETDATA
  37.         "Text"
  38.         STR
  39.           )
  40.    )
  41.    (vlax-release-object HTML)
  42.    (princ "复制到剪贴板")
  43.     )
  44. )
  45. ;;;=================================================================*

评分

参与人数 1明经币 +1 收起 理由
VBALISPER + 1 很给力!

查看全部评分

回复 支持 1 反对 0

使用道具 举报

发表于 2023-7-26 19:43:24 | 显示全部楼层
lzh720 发表于 2023-7-26 19:40
我原先的脚本用了起码10年,从CAD2007到2023,天正和浩辰都用过,非常稳定可靠,年纪大了,懒得多敲字, ...

你这样试试

(defun C:NM (/ CURVE N SS SUMLEN TLEN zml-clip-setstring)
     (vl-load-com)
        (defun ZML-CLIP-SETSTRING (STR / HTML RESULT);;向系統剪貼板寫入文字
                (setvar "DIMZIN" 8)  ;消除十進制標註中的後續零
                (if(listp STR)
                        (setq str(vl-prin1-to-string STR))
                )
                (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)
                )
        )
        (ZML-CLIP-SETSTRING "防止出错,占位一下!")   
        (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))
        (ZML-CLIP-SETSTRING (rtos SUMLEN 2 2))
        (princ (strcat "\n共选择 " (itoa (sslength SS)) " 条线段. 线段总长: " (rtos SUMLEN 2 2)" m"))
        (princ)        
)
发表于 2023-7-26 18:03:04 | 显示全部楼层
运行完  直接去粘贴即可
(defun C:duoduanxian (/ CURVE N SS SUMLEN TLEN zml-clip-setstring)
        (defun ZML-CLIP-SETSTRING (STR / HTML RESULT);;向系統剪貼板寫入文字
                (setvar "DIMZIN" 8)  ;消除十進制標註中的後續零
                (if(listp STR)
                        (setq str(vl-prin1-to-string STR))
                )
                (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)
                )
        )
        (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))
        (ZML-CLIP-SETSTRING (rtos SUMLEN 2 2))
        (princ (strcat "\n共选择 " (itoa (sslength SS)) " 条线段. 线段总长: " (rtos SUMLEN 2 2)" m"))
        (princ)        
)
发表于 2023-7-26 18:03:23 | 显示全部楼层
只需要复制长度数字就行了吗?还是连这些文字一起复制
 楼主| 发表于 2023-7-26 18:04:58 | 显示全部楼层
ssyfeng 发表于 2023-7-26 18:03
只需要复制长度数字就行了吗?还是连这些文字一起复制

只需要复制长度,不要带那个m的单位,也不能有空格
发表于 2023-7-26 18:07:15 | 显示全部楼层
(defun C:tt (/ CURVE N SS str SUMLEN TLEN zml-clip-setstring)
        (defun ZML-CLIP-SETSTRING (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)
  )
)
(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)) " 条线段. 线段总长: " (setq str (rtos SUMLEN 2 2))" m"))
        (if str (progn (ZML-CLIP-SETSTRING str) (princ (strcat "\n线段总长度:" (setq str (rtos SUMLEN 2 2)) " 已复制到剪切板上。"))))
(princ) )
 楼主| 发表于 2023-7-26 18:41:30 | 显示全部楼层
ssyfeng 发表于 2023-7-26 18:07
(defun C:tt (/ CURVE N SS str SUMLEN TLEN zml-clip-setstring)
        (defun ZML-CLIP-SETSTRING (STR / HTM ...

命令是TT吗
发表于 2023-7-26 18:53:06 | 显示全部楼层
是的,你自己可以改
 楼主| 发表于 2023-7-26 18:53:45 | 显示全部楼层
ssyfeng 发表于 2023-7-26 18:07
(defun C:tt (/ CURVE N SS str SUMLEN TLEN zml-clip-setstring)
        (defun ZML-CLIP-SETSTRING (STR / HTM ...


能用但老是报错啊

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

x
发表于 2023-7-26 18:56:33 | 显示全部楼层
可以加我qq269126750,帮你看看
 楼主| 发表于 2023-7-26 19:04:54 | 显示全部楼层
ssyfeng 发表于 2023-7-26 18:56
可以加我qq269126750,帮你看看

修改了你的命令,我改回来TT再试试
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-17 00:35 , Processed in 0.202100 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表