明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
查看: 2528|回复: 5

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

[复制链接]
发表于 2005-1-7 13:41:00 | 显示全部楼层 |阅读模式
for ii:=0 to OpenDialog1.Files.Count -1 do
begin
//opendialog1.Filter:='cad 文件(*.dwg) | *.dwg|所有文件(*.*) |*.*';
szFile:=OpenDialog1.Files[ii]; CAD:=CreateOleObject('AutoCAD.Application');
Doc:=CAD.Documents.Open(szFile); 下面不会写了,要对这个文件实行删除两层tk层和tkmap层,然后把所有的图层都变成黑颜色。 求教斑主。因为不是专门搞cad的,所以这不会。 求救,help。不胜感激 文件再附件里面。
发表于 2005-1-7 13:52:00 | 显示全部楼层
噢! 你用 delphi 对CAD开发啦. 高手 , 我不会这门语言. 这里好少人用这个的,
 楼主| 发表于 2005-1-7 14:10:00 | 显示全部楼层
那能不能帮助我写个用vb完成同样的功能。删除两层,然后保存层dwg就可以了。



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


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


help


3、想是一次性可以批量很多幅图操作。
发表于 2005-1-7 15:52:00 | 显示全部楼层
本帖最后由 作者 于 2005-1-7 16:21:17 编辑

我会LISP, 其它不了解. 不过图层是不可以删除的. 要删除图层的做法是:  1, 先将要删去的图层上面的对象统统删除或转到其它不删的图层去. 2, 再调用CAD的清理命令才可以清除那个要删的图层.  请参见下面在lisp程序在删除图层的做法 (DEFUN C:DLAYER()
(SETQ LNAME (GETSTRING "\n要删除的图层名:"))
(command ".erase" (ssget "x" (list (cons 8 LNAME)))""
"-layer" "s" "0" "" "purge" "la" LNAME "n"))
发表于 2005-1-10 20:48:00 | 显示全部楼层
再对当前文档所有层遍历,查找到这个层,然后删除或做别的操作不就行了?
发表于 2005-1-11 20:17:00 | 显示全部楼层
procedure TForm1.Button1Click(Sender: TObject);
var
cadApp:acadApplication;
cadLayer:acadLayer;
i:integer; begin
cadApp:=getActiveOleObject('autocad.application') as acadApplication;
for i:=0 to cadApp.ActiveDocument.Layers.Count-1 do
begin
cadLayer := cadApp.ActiveDocument.Layers.Item(i);
if ((cadLayer.Name='k2') or (cadLayer.Name='k3')) then
cadLayer.Delete
else
cadLayer.color:=acGreen;
end;
end;
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2025-4-11 10:05 , Processed in 0.203638 second(s), 24 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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