明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2046|回复: 5

如何合并两个变体

[复制链接]
发表于 2004-2-21 15:24:00 | 显示全部楼层 |阅读模式
大家知道用VLA方式获得的点都是双精度数组的变体,现在我得到两个这样的点,如果我们分别进行还原成点例如:pt'(x y z) 和pt1'(a b c)


能不能有一种方法可以把两个变体直接合并成一个变体对这一个变体进行还原后得到上面两个点的点集(pt pt1)
"觉得好,就打赏"
还没有人打赏,支持一下
发表于 2004-2-21 16:23:00 | 显示全部楼层
为什么要合并成一个变体?你想做什么?
 楼主| 发表于 2004-2-21 16:33:00 | 显示全部楼层
vla-addmline是需要一个点集合表的变体,而用VLA方法得到的点已经是变体了,创建起来比较麻烦,不知道斑竹有没有好的办法
发表于 2004-2-21 18:36:00 | 显示全部楼层
本帖最后由 作者 于 2004-2-21 19:04:11 编辑

参考帮助文件中,教程《花园小路》中的函数 (defun gp:list->variantArray (ptsList / arraySpace sArray)
(setq arraySpace (vlax-make-safearray vlax-vbdouble
(cons 0 (- (length ptsList) 1))
)
)
(setq sArray (vlax-safearray-fill arraySpace ptsList))
(vlax-make-variant sArray)
)
 楼主| 发表于 2004-2-21 20:58:00 | 显示全部楼层
meflying 斑竹这个把点表转化成变体的我知道,我就是不想分别把这两个变体变成点再合并成表再safearray 在转化成变体,就像我现在分别把两只生鱼做成两瓶罐头,我现在需要的是一个大瓶子装两只鱼,我需要的是把两只鱼装到一个瓶子里,而不是把两瓶罐头变成两只活鱼后再一块做罐头
发表于 2004-2-22 12:08:00 | 显示全部楼层
有何不行? (defun ptarray->ptsarray(ptarrays / i n arraySpace ptarray)
(setq i 0)
(setq n (length ptarrays))
(setq arraySpace (vlax-make-safearray vlax-vbdouble
(cons 0 (- (* 3 n) 1))
)
)
(repeat n
(setq ptarray (nth i ptarrays))
(vlax-safearray-put-element arraySpace (* 3 i) (vlax-safearray-get-element ptarray 0))
(vlax-safearray-put-element arraySpace (1+ (* 3 i)) (vlax-safearray-get-element ptarray 1))
(vlax-safearray-put-element arraySpace (+ (* 3 i) 2) (vlax-safearray-get-element ptarray 2))
(setq i (1+ i))
)
arraySpace
) (Defun c:test( / mp ent pt1 pt2)
(setq mp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
(setq ent (car (entsel)))
(setq ent (vlax-ename->vla-object ent))
(vla-getboundingbox ent 'pt1 'pt2)
(vla-addpolyline mp (ptarray->ptsarray (list pt1 pt2)))
)
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-10-1 23:44 , Processed in 0.193137 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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