找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 667|回复: 2

[求助] [求助]:如何创建对象数组?...............

[复制链接]
发表于 2004-6-27 11:21:18 | 显示全部楼层 |阅读模式

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

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

×
下面这段代码的第三行为何有错(1-2行可能有笔误,大概是这样的)
(setq  o_array(vlax-make-safearray vb-object  '(0 1)))
(setq en1(car(entsel)) en2(car(entsel))
(vlax-safearray-fill o_array '(en1 en2))

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

已领礼包: 593个

财富等级: 财运亨通

发表于 2004-6-27 12:16:54 | 显示全部楼层

Re: [求助]:如何创建对象数组?...............

最初由 zhanzujie 发布
[B]下面这段代码的第三行为何有错(1-2行可能有笔误,大概是这样的)
(setq  o_array(vlax-make-safearray vb-object  '(0 1)))
(setq en1(car(entsel)) en2(car(entsel))
(vlax-safearray-fill o_array '(en1 en2))

... [/B]

1 转贴一个函数

  1. ;|转换选择集为变体数组
  2. 功  能  返回一个由选择集内容填满的子对象的变体数组。
  3. 参  数  ss: 选择集
  4. 返回值  变体数组
  5. 示  例  (selectionsetToArray mySS)
  6. 注意
  7. 使用该函数可以将选择集转换为数组传递给ActiveX函数。
  8. 如果需要其它的子类型,只需更改引用vlax-vbObject。
  9. |;
  10. (defun selectionsetToArray (ss / c r)
  11.   (setq c -1)
  12.   (repeat (sslength ss)
  13.     (setq r (cons (ssname ss (setq c (1+ c))) r))
  14.   )
  15.   (setq r (reverse r))
  16.   (vlax-safearray-fill
  17.     (vlax-make-safearray vlax-vbObject (cons 0 (1- (length r))))
  18.     (mapcar 'vlax-ename->vla-object r)
  19.   )
  20. )


2 先将选择集构造一个这样的表
((linelength1 lineentity1) (linelength2 lineentity2) ... (linelengthn lineentityn))
然后使用 vl-sort  排序就可以实现
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-6-27 14:50:48 | 显示全部楼层

Re: [求助]:如何创建对象数组?...............

最初由 zhanzujie 发布
[B]....如何对直线选择集中的直线依其长度进行排序? [/B]

试试这个程序: (可扩展为任意曲线)
[php]
(defun c:test (/ ll)
  (setq ss (ssget '((0 . "line")))) ;; 构造直线选择集
  (setq ll (acet-ss-to-list ss)) ;;将选择集子实体列表
  (setq ll (vl-sort ll   (function   (lambda (e1 e2)(< (len e1)(len e2)))))) ;; 以实体长度排序
)
(defun len (e);;求实体长度子函数
  (vlax-curve-getDistAtParam e (vlax-curve-getEndParam e))
)
[/php]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-9-27 06:52 , Processed in 0.186430 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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