youqiuyang 发表于 2005-1-7 13:41:00

有cad图形操作,用delphi编程。

for ii:=0 to OpenDialog1.Files.Count -1 do<BR>                                                                                                                       begin<BR>                                                                                                                                               //opendialog1.Filter:='cad 文件(*.dwg) | *.dwg|所有文件(*.*) |*.*';       <BR>                                                                                                                                               szFile:=OpenDialog1.Files;



                                                                                                                                                        CAD:=CreateOleObject('AutoCAD.Application');<BR>                                                                                                                                               Doc:=CAD.Documents.Open(szFile);


下面不会写了,要对这个文件实行删除两层tk层和tkmap层,然后把所有的图层都变成黑颜色。


求教斑主。因为不是专门搞cad的,所以这不会。


求救,help。不胜感激


文件再附件里面。

BDYCAD 发表于 2005-1-7 13:52:00

<B>噢! 你用        delphi                对CAD开发啦. 高手</B> , 我不会这门语言. 这里好少人用这个的,

youqiuyang 发表于 2005-1-7 14:10:00

那能不能帮助我写个用vb完成同样的功能。删除两层,然后保存层dwg就可以了。



1、我能不能得到这个dwg的层数,然后做循环。把每层都设置为acblack,就可以。


2、我需要对这个thisdrawing删除两层。不知道怎么删除亚。


help


3、想是一次性可以批量很多幅图操作。

BDYCAD 发表于 2005-1-7 15:52:00

本帖最后由 作者 于 2005-1-7 16:21:17 编辑 <br /><br /> 我会LISP, 其它不了解.



不过图层是不可以删除的. 要删除图层的做法是: 


1, 先将要删去的图层上面的对象统统删除或转到其它不删的图层去.


2, 再调用CAD的清理命令才可以清除那个要删的图层.


 请参见下面在lisp程序在删除图层的做法


(DEFUN C:DLAYER()<BR>       (SETQ LNAME (GETSTRING "\n要删除的图层名:"))<BR>       (command ".erase" (ssget "x" (list (cons 8 LNAME)))""<BR>                       "-layer" "s" "0" "" "purge" "la" LNAME "n"))

qustsummit 发表于 2005-1-10 20:48:00

再对当前文档所有层遍历,查找到这个层,然后删除或做别的操作不就行了?

qustsummit 发表于 2005-1-11 20:17:00

procedure TForm1.Button1Click(Sender: TObject);<BR>var<BR>cadApp:acadApplication;<BR>cadLayer:acadLayer;<BR>i:integer;


begin<BR>cadApp:=getActiveOleObject('autocad.application') as acadApplication;<BR>for i:=0 to cadApp.ActiveDocument.Layers.Count-1 do<BR>begin<BR>cadLayer := cadApp.ActiveDocument.Layers.Item(i);<BR>               if ((cadLayer.Name='k2') or (cadLayer.Name='k3')) then<BR>               cadLayer.Delete<BR>else<BR>       cadLayer.color:=acGreen;<BR>end;<BR>end;
页: [1]
查看完整版本: 有cad图形操作,用delphi编程。