找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 923|回复: 6

[研讨] 我也来个测试,Vlax-curve 部分函数

[复制链接]

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-5-11 16:27:14 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

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

×
  1. (defun c:t1 (/ ss l)
  2.   (setq l 0.)
  3.   (if (ssget)
  4.     (progn
  5.       (vl-cmdf ".time" "r" "on" "d" "")
  6.       (vlax-map-collection
  7.         (vla-get-activeselectionset
  8.           (vla-get-activedocument (vlax-get-acad-object))
  9.         )
  10.         '(lambda (x)
  11.            (setq l
  12.                   (+ (vlax-curve-getdistatparam x (vlax-curve-getendparam x))
  13.                      l
  14.                   )
  15.            )
  16.          )
  17.       )
  18.       (command ".time" "off" "d" "")
  19.     )
  20.   )
  21.   l
  22. )
  23. (defun c:t2 (/ ss l)
  24.   (setq l 0.)
  25.   (if (ssget)
  26.     (progn
  27.       (vl-cmdf ".time" "r" "on" "d" "")
  28.       (vlax-for        x
  29.                   (vla-get-activeselectionset
  30.                     (vla-get-activedocument (vlax-get-acad-object))
  31.                   )

  32.         (setq l
  33.                (+ (vlax-curve-getdistatparam x (vlax-curve-getendparam x))
  34.                   l
  35.                )
  36.         )
  37.       )
  38.       (command ".time" "off" "d" "")
  39.     )
  40.   )
  41.   l
  42. )
  43. (defun c:t3 (/ ss e l)
  44.   (if (setq ss (ssget))
  45.     (progn
  46.       (setq ssl (sslength ss)
  47.             l 0.)
  48.       (vl-cmdf ".time" "r" "on" "d" "")
  49.       (while (> ssl 0)
  50.         (setq e        (ssname ss (setq ssl (1- ssl)))
  51.               l        (+ (vlax-curve-getdistatparam e (vlax-curve-getendparam e))
  52.                    l
  53.                 )
  54.         )
  55.       )
  56.       (command ".time" "off" "d" "")
  57.     )
  58.   )
  59.   l
  60. )

运行效果

  1. 命令: t1
  2. 选择对象: 指定对角点: 找到 20000 个

  3. 选择对象:

  4.   消耗时间计时器 (关):    0 天 00:00:02.031

  5. 命令: t2
  6. 选择对象: 指定对角点: 找到 20000 个


  7.   消耗时间计时器 (关):    0 天 00:00:02.109

  8. 命令: t3
  9. 选择对象: 指定对角点: 找到 20000 个

  10. 选择对象:

  11.   消耗时间计时器 (关):    0 天 00:00:00.250

  12. 340355.0
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-5-11 16:32:29 | 显示全部楼层
斑竹能解释一下这个有什么用吗
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2004-5-11 16:36:40 | 显示全部楼层
最初由 playboy 发布
[B]斑竹能解释一下这个有什么用吗 [/B]

你说速度快的好用还是慢的好用?
再看一个用转换的,vlax-ename->vla-object  很耗时的

  1. (defun c:t4 (/ ss e l obj)
  2.   (if (setq ss (ssget))
  3.     (progn
  4.       (setq ssl (sslength ss)
  5.             l 0.)
  6.       (vl-cmdf ".time" "r" "on" "d" "")
  7.       (while (> ssl 0)
  8.         (setq e        (ssname ss (setq ssl (1- ssl)))
  9.               obj (vlax-ename->vla-object e)
  10.               l        (+ (vlax-curve-getdistatparam obj (vlax-curve-getendparam obj))
  11.                    l
  12.                 )
  13.         )
  14.       )
  15.       (command ".time" "off" "d" "")
  16.     )
  17.   )
  18.   l
  19. )

运行结果

  1. 命令: t4
  2. 选择对象: 指定对角点: 找到 20000 个

  3. 选择对象:

  4.   消耗时间计时器 (关):    0 天 00:00:03.031

  5. 340355.0
复制代码
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-11 19:36:16 | 显示全部楼层
t3为什么用了那么少的时间?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 488个

财富等级: 日进斗金

发表于 2004-5-12 00:48:51 | 显示全部楼层
vb方法就是慢。它放弃了直接用指针的方法,中间不知打了多少道弯。

ename其实就是个指针,sset也是,虽然用lisp过渡了一下,但用的还是arx方法.
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-5-12 01:37:15 | 显示全部楼层
vla-get-activeselectionset 在有些测试的时候是比ssget -》ename快的,这里怎么变的这么慢?而且慢这么多?嗯,我试试看

我的测试:
命令: t1
选择对象: 指定对角点: 找到 4000 个
消耗时间计时器 (关):    0 天 00:00:00.766
命令: t2
选择对象: 指定对角点: 找到 4000 个
  消耗时间计时器 (关):    0 天 00:00:00.797
命令: t3
选择对象: 指定对角点: 找到 4000 个
  消耗时间计时器 (关):    0 天 00:00:00.469
命令: t4
选择对象: 指定对角点: 找到 4000 个
  消耗时间计时器 (关):    0 天 00:00:01.078
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

已领礼包: 593个

财富等级: 财运亨通

 楼主| 发表于 2013-5-27 00:57:40 | 显示全部楼层
这也翻上来啊!那时的计算机不能和现在比,再写的话就是这样了
  1. (defun c:t5 (/ ss sl e l i)
  2.   (if (setq ss (ssget))
  3.     (progn
  4.       (setq sl (sslength ss)
  5.       i  -1
  6.       )
  7.       (vl-cmdf ".time" "r" "on" "d" "")
  8.       (repeat sl
  9.   (setq e  (ssname ss (setq i (1+ i)))
  10.         l  (+ (vlax-curve-getdistatparam e (vlax-curve-getendparam e))
  11.        l
  12.     )
  13.   )
  14.       )
  15.       (command ".time" "off" "d" "")
  16.     )
  17.   )
  18.   l
  19. )

论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-15 20:43 , Processed in 0.170092 second(s), 43 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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