Delphi开发AutoCAD之选择并删除对象

全屏阅读

2012-06-01 09:06:10 作者: 所属分类:程序设计 阅读:4925 评论:0

标签:

  Delphi与AutoCAD进行连接(ActiveX),可以开发出很多程序。VB API手册中也详细了讲述了关于VBA开发CAD的方法。但是有些方法并没有实例,比如选择当前画布中所有对象。 

  在我们开发一个小程序的时候,有时候会遇到实时进行修改的情况。如果不进行原对象的删除操作,将在不同参数下出现许多对象。比如我们要获得长度为5的线,但是第一次我们绘制的是长度为10的线,这样在刷新的过程中我们需要将长度为5的线删除。关于单对象的删除,比较简单,在VBA开发文档中有详细的描述。但是对象多的时候,关于选择就是一件繁琐的事情,可能会使你的代码量增加几倍。这样我们需要一次性删除所有对象。 

  关于选择操作,首先我们要在文档中添加一个新的选择集(或者利用先前的选择集) 

//样例代码: 
var 
  cad:AcadApplication; 
  ft,FilterData,pointsArray:Variant; 
  Set_Select:AcadSelectionSet; 
begin 
  cad:=GetActiveOleObject('AutoCAD.Application') as AcadApplication;//Createoleobject 
  cad.Visible:=true; 
  Set_Select_Count:=cad.ActiveDocument.selectionSets.count; 
  if Set_Select_Count=0 then Set_Select:=cad.ActiveDocument.SelectionSets.Add('Select_All') 
  else 
    begin 
      for Set_Select_Count:=0 to cad.ActiveDocument.selectionSets.count-1 do //遍历选择集,如果'Select_All'已经存在就不建了。 
    begin 
           if cad.ActiveDocument.selectionSets.Item(Set_Select_Count).Name='Select_All' then 
              Set_Select:=cad.ActiveDocument.SelectionSets.Item(Set_Select_Count) 
         else 
            Set_Select:=cad.ActiveDocument.SelectionSets.Add('Select_All'); 
        end; 
    end; 
  ft:= VarArrayCreate([0,0],VT_I2); 
  ft[0]:=100; 
  //ft[1]:=0; 
  FilterData:=VarArrayCreate([0,0],VT_Variant);; 
  //FilterData[0] := ''; 
  //FilterData[1] := ''; 
  Set_Select.Select(acSelectionSetAll,'', '',ft,FilterData); 
  //Set_Select.Highlight(True);//该代码高亮显示选择的对象 
  //ShowMessage(IntToStr(Set_Select.Count));//该代码将显示选择的对象数 
  Set_Select.Erase; //Erase方法删除选择集中的所有项。选择集仍然存在,但不再包含任何项。原来包含在选择集中的项也不再存在。 
cad.ZoomExtents; 
end;

  关于全选所有对象,还有另一个办法就是利用SendCommand命令。效果是一样的,大家可以自己建立不同的项目,对比两者之间的差异和效率问题

顶一下
(1)
100%
订阅 回复
踩一下
(0)
0%
» 郑重声明:本文由不吃醋的猫发布,所有内容仅代表个人观点。版权归懒猫窝窝不吃醋的猫共有,欢迎转载, 但未经作者同意必须保留此段声明,并给出文章连接,否则保留追究法律责任的权利! 如果本文侵犯了您的权益,请留言。
  • 目前有 0 条留言 其中:访客:0 条, 博主:0 条

    给我留言