明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 3592|回复: 12

請問region object 相剪\相加\的方法是什麽去了?

  [复制链接]
发表于 2004-7-31 10:48:00 | 显示全部楼层 |阅读模式
用vla-addregion创建了两个object



region obj_reg1 obj_reg2


region相剪\相加\的方法是什么去了?


发表于 2004-7-31 13:50:00 | 显示全部楼层
什么叫“什么去了”?
 楼主| 发表于 2004-7-31 17:13:00 | 显示全部楼层
cad里region是subtrace和union


lisp里是什么?


把region换回ename图元的region相加相减我知道


我想问问region为vla-object的时候有没有region object相加相减的方法?
发表于 2004-7-31 17:14:00 | 显示全部楼层
vla-boolean
 楼主| 发表于 2004-8-2 10:32:00 | 显示全部楼层
想问几个很看似粗浅但是本人尚未理解的问题 Vla-AddRegion的对象是modelspace集合\paperspace\block。这个集合是怎么样做出来?
我开始天真的以为只要
PS: obj is a Vla-Object
(vlax-make-variant(vla-saftarray-fill (vla-make-safearray vla-vbObject (cons 0 (list obj))) (list obj)))
就可以创建一个object集合了,但是实际上我也不知道我哪里错了,应该是错在一些基本的规则没弄清楚吧??
顺便想请教一下paperspace\block又是怎么用vla函数创建出来的。 vla-boolean里,它的对象又是怎么样的?看过activex里的介绍是一个需要进行运算的vla-object。
我想只有一个object怎么进行运算?虽然运算成功的条件是有相交的物体。但是如果有多个物体的时候是怎么计算的呢? 恕我没明白过来问的确些粗浅问题。
盼解答,不胜感激。
发表于 2004-8-2 12:59:00 | 显示全部楼层
这其实不是问题的深奥和粗浅的问题,而是你对ActiveX方法完全没有理解。。。


你要正确理解模型结构,如:document是属于aplication对象,所以获得document就是


(vla-get-activedocument (vlax-get-acad-object));后面就是获得ACAD的aplication对象,


而modelpace是属于document对象


模型空间就是


(vla-get-modelpace (vla-get-activexdocument (vlax-get-acad-object)))


至于,其它的对象的获得,你就参考帮助中的ActiveX and VBA reference的模型结构,然后点击某对象,查看其属性和方法(建议你先看帮助文件的开发者手册中的ActiveX部分)
 楼主| 发表于 2004-8-2 13:42:00 | 显示全部楼层
单个的modelspace的获得和使用我已经明白.


但我不明白modelspace集合的创建是怎么一回事


说明里解释说This collection represents all the objects in model space..


就是说我所有利用modelspace创建的vla-object全在这个集合中??


而这个集合用visual lisp如何表示出来的?


如何向其中添加元素?


后面又解释说道这个集合中的元素是不可删除的……


烦请明示一下。


或者说我是钻进了死胡同里。


单纯的研究说明书上的字眼真的有点不知说云。


真的想看的一段例子。。


比如,用vlisp方法如何从一段闭合的多义綫pline创建面域region??
发表于 2004-8-2 14:49:00 | 显示全部楼层
(defun c:tt (/ mspace objlist objarray cnt)
(setq mspace (vla-get-Modelspace
(vla-get-activedocument (vlax-get-acad-object)))
objlist (mapcar 'vlax-ename->vla-object
(ss_sslist (ssget '((0 . "LWPOLYLINE")))))
objarray (vlax-make-safearray vlax-vbObject '(0 . 0))
cnt 0)
(foreach obj objlist
(vlax-safearray-fill objarray (list obj))
(if (not
(vl-catch-all-error-p
(vl-catch-all-apply 'vla-addregion (list mspace objarray))))
(setq cnt (1+ cnt))))
(if (> cnt 0)(princ (strcat "\n" (itoa cnt) " region(s) created in Modelspace.")))
(princ)
)
;; ! *****************************************************************************
;; ! SS_sslist
;; ! *****************************************************************************
;; ! Function : Return a list of entities in selection set
;; ! Arguments: 'ss' - Selection Set to process
;; ! Return : A List of all entities found in selection set
;; ! Updated : December 30, 1998
;; ! e-mail : rakesh.rao@4d-technologies.com
;; ! Web : www.4d-technologies.com
;; ! **************************************************************************** (defun SS_sslist (ss / ssl cnt ELst)
(setq
ssl (if ss
(sslength ss)
0)
cnt 0
ELst '()
) (repeat ssl
(setq
ELst (cons (ssname ss cnt) ELst)
cnt (1+ cnt)
)
)
(reverse ELst)
)
发表于 2004-8-2 16:35:00 | 显示全部楼层
modelspace就是指模型空间,你在模型空间画的图不都在这个modelspace中吗,你认为模型空间可以删除吗? 你不是看不明白,是你还明白这个东西之前就去看它,所以看不明白,,,你应该先看帮助文件开发者手册中的ActiveX部分,看完了,看明白了,再去看对象模型参考 你要的例子(运行:test,选择:一个封闭的多线段) (defun object->variantArray (ptsList / arraySpace sArray)
(setq arraySpace (vlax-make-safearray vlax-vbobject
(cons 0 (- (length ptsList) 1))
)
)
(setq sArray (vlax-safearray-fill arraySpace ptsList))
(vlax-make-variant sArray)
) (Defun c:test( / mp ent pt1 pt2)
(setq mp (vla-get-modelspace (vla-get-activedocument (vlax-get-acad-object))))
(vla-addregion mp (object->variantarray (list (vlax-ename->vla-object (car (entsel))))))
)
 楼主| 发表于 2004-8-2 19:49:00 | 显示全部楼层
真是太感谢了。。


有了这2段生动的例子。。不明白的东西也就豁然贯通了。。


所谓的集合就是object的list 转换成viriant


困扰了几天的问题终于解决了不少。。。


最后还想借帖子问问。。


vlisp里将命令"list"后出现的那些information


用什么方式输出到word 或者数据库的呢?


或者说这个information属于对象的哪中类型


又或者他的vba 类名?





多次请教。。。只有谢了又谢!


^o^..b
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2024-11-18 23:50 , Processed in 0.167648 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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