嘿伙计们,
我有一个我一直在做的程序……这是Carry帮我为ProSteel创建的另一个程序的修改版本。
常规背后的理念是,我将能够隐藏或显示具有特定修改类型的ProSteel对象。
例如,如果我想显示模型中所有有钻孔的元素,这个例程将允许我这样做。
我已经设法得到了这个例程的一个合理的工作版本——修改了Carry为另一个练习提供的代码。还有一些需要改进的地方。
我当前的代码是:
- (defun c:hxd (/ ss num con ent3A ent3B acadapp shapeinfo HFCs1)
- (vl-load-com)
- ;--------------------------Read Data From Bolt--------------------------------
- (prompt "\nSelect ELEMENT:")(princ)
- (setq ss (ssget '((0 . "KS_PLATE,KS_SHAPE"))));8=Name Layer 0=ks_object
- (setq num (sslength ss));n° object
- (setq con 0)
- (repeat num
- (setq ent3A (ssname ss con))
- (setq ent3B ent3A)
- (setq acadapp (vlax-get-acad-object))
- (setq shapeinfo (vla-getinterfaceobject acadapp "PSCOMWRAPPER.Ks_ComShapeInfo"))
- (vlax-invoke-method shapeinfo 'setobject (vlax-ename->vla-object ent3A))
- (vlax-invoke-method shapeinfo 'getinfo);ritrova le informazioni nel database
- (setq shapeinfo (vla-getinterfaceobject acadApp "PSCOMWRAPPER.Ks_ComShape"))
- (setq shapeinfo (vlax-ename->vla-object ent3B))
- (setq HFCs1 (vlax-get-property shapeinfo 'HoleFieldCount))
- [b](if (= HFCs1 0)
- (command "Ps_Hide" ent3b "")
- )[/b]
- (vlax-release-object shapeinfo)
- (setq shapeinfo nil)
- (setq acadApp nil)(princ)
- (setq con (1+ con))
- )
- )
虽然上面的这个例程确实执行了我需要的任务,但我想更改如何处理选择集以隐藏/显示。
目前,该代码将识别并隐藏所有没有孔修改的对象-逐个处理选择集。我不想使用这种方法,而是将每个已识别的元素添加到选择集,并一次将它们全部隐藏。我认为需要注意的代码区域以粗体突出显示。在我看来,这可以通过将每个对象添加到选择集来实现,但根据我的理解……我只能添加到已经存在的选择集。我对如何绕过这个障碍知之甚少。
所以,我只是想知道是否有人能帮我想出一个解决这个难题的办法。
任何帮助都将不胜感激。 |