现在将多张CAD图纸导入到一个CAD文件中常使用拖入的办法,可是图纸太多重复劳动,哪个高手能编个程序将一个固定文件夹中的CAD文件全部导入CAD中,并在CAD文件中规则排列!急需!我的邮箱:yuanjingde@163.com(biechen注:凡给出最佳解答者(源码),给与100分奖励,参与者均有奖励,正确但非最佳答案也会给与高分,欢迎大家积极参与)
现在将多张CAD图纸导入到一个CAD文件中常使用拖入的办法,可是图纸太多重复劳动,哪个高手能编个程序将一个固定文件夹中的CAD文件全部导入CAD中,并在CAD文件中规则排列!急需!我的邮箱:yuanjingde@163.com
(biechen注:凡给出最佳解答者(源码),给与100分奖励,参与者均有奖励,正确但非最佳答案也会给与高分,欢迎大家积极参与)
12楼
以上的程序离使用还有一定的距离,但是基本方法已经实现了,正如它山所说,图纸的排列还有待改进
革命尚未成功,同志仍需努力
回复
13楼
当然,并不局限于VLisp代码,Arx,VBA均可
回复
14楼
编程?!!!
头大啊!!!
回复
16楼
俺们不会,高手的快进!
回复
17楼
简单写了一个
(defun c:lxf (/ WinShell filename filename1 shFolder path catchit pp RFN blk boxmin boxmax ppx ppst box box2 pdis pangle)
(vl-load-com)
(setq winshell(vlax-create-object "Shell.Application") filename ’())
;(vlax-dump-object winshell T)
(setq shFolder(vlax-invoke-method WinShell ’BrowseForFolder 0 "选取要插入的dwg文件夹" 1))
(setq
catchit(vl-catch-all-apply
’ (lambda ()
(setq shFolder(vlax-get-property shFolder ’self))
(setq path(vlax-get-property shFolder ’path))
)
)
)
(if(not(vl-catch-all-error-p catchit))
(setq filename (vl-directory-files path "*.dwg"))
)
(if (/= filename ’())
(progn (setq pp (getpoint "指定插入点") ppx (car pp) ppst 0)
(foreach filename1 filename
(setq RFN (STRCAT path "\\" filename1))
(command "insert" RFN pp 1 1 0)
(setq blk (entlast))
(vla-GetBoundingBox (vlax-ename->vla-object blk) ’boxmin ’boxmax)
(setq boxmin (vlax-safearray->list boxmin)
boxmax (vlax-safearray->list boxmax)
box (mapcar ’- boxmax boxmin)
box2 (mapcar ’+ boxmax boxmin)
midp (list (/ (car box2) 2.0) (/ (cadr box2) 2.0) (/ (caddr box2) 2.0))
pdis (distance pp midp) pangle (angle midp pp)
)
(setq pp (list (+ (car pp) (car box) ppst) (cadr pp) (caddr pp)) pp2 (polar pp pangle pdis))
(entmod (list (cons -1 blk)
(cons 10 pp2)
)
)
(setq ppst (car box))
)
)
)
)
回复
18楼
说明一下:因为插入点不一定是图元的中心,pp2是修正了后的插入点
回复
19楼
本问题结束,但以上程序的容错机能都有一定问题,因为是源代码所以尚可接受
如果谁有更好的代码仍然可以跟帖或开新帖发布
回复
20楼
来晚了!
回复
21楼
很容易实现,不过现在很忙,每天要去工地,自己的电脑cpu又烧掉了,所以没时间去编写,望谅
其实只要将你输入的文件名组成列表,然后用MEMBER比较一下文件夹下的文件名,看看存不存在,假如存在就插入,不存在就跳过
回复
22楼
TO:lqdcwnui
首先多谢你的回复,编程我不会阿,希望你能帮助解决这问题,在此先谢过了
回复