本帖最后由 amook147 于 2025-8-29 18:17 编辑

lsp写的插件 ,标注1W个10毫米X10毫米的矩形面积   用时1分30秒  能不能在快点  


有什么办法能实现在30秒以内完成?



网友答: (defun c:tt(/ L S SS)
(setq s  (ssget '((0 . "LWPOLYLINE")))
       ss (getvar "millisecs")
       l  (cdr(reverse(mapcar 'cadr (ssnamex s))))
)
(foreach m l
   (entmake (list '(0 . "TEXT")  (cons 1 "100mm\\U+00B2" )
                  (cons 10 (polar (vlax-curve-getstartpoint m) (* 0.25 pi) 7.0707))
                  (cons 40 0.6)) )
)
(princ(strcat"历时: "(itoa(- (getvar "millisecs") ss)) "毫秒") )
)

网友答:
pyj643921 发表于 2025-8-29 18:29
看你是用什么方法标注的,如果用command命令标注肯定慢,试试用entmake函数生成,还不快就换其它语言吧
AI给的建议  让AI修改了一下  测试结果减少了至少一半的时间。。。。



合并实体创建操作(减少函数调用)
原代码中create-area-label每次调用都会单独执行entmake,可改为批量收集所有标注数据,一次性创建(适用于 1 万个图形的场景)。


网友答: 能用就行,在lisp追求速度是痛苦的,map和数组要绕去VBA函数,
要并行没并行,要simd没simd,就连分析瓶颈在哪里都不知道高精度计时器,缓存命中数这些在哪里查...
所以与其那么痛苦不如将就一下就算了.

网友答: 看你是用什么方法标注的,如果用command命令标注肯定慢,试试用entmake函数生成,还不快就换其它语言吧

网友答:
pyj643921 发表于 2025-8-29 18:29
看你是用什么方法标注的,如果用command命令标注肯定慢,试试用entmake函数生成,还不快就换其它语言吧

感谢 我试试

网友答:
选择对象: 指定对角点: 找到 100000 个
共有 100000 个矩形标注面积用时 2031 毫秒

网友答: 试了下源泉的批量标注100*100 1W个也要1分半左右

网友答:
yegucheng0129 发表于 2025-8-30 14:16
试了下源泉的批量标注100*100 1W个也要1分半左右

我用2012版CAD  40秒就完事了  2020版的就慢  

网友答: lisp慢可以理解。不要那么挑剔

网友答: 就当给自己的福利。休息一下
  • 上一篇:read的应用之无限命令
  • 下一篇:没有了