下载app免费领取会员
小编就是个代码狂魔!这篇文章里说的图框,是不包括标题栏的,只有图纸外的边框。这两天刚好有同事提出这个需求,小编就把解决问题的过程拿出来跟大家分享~
随便给一个Drawing文件,要在这张图纸上画出图框:最外面的框就是图纸的大小,中间的框左侧距图纸边20mm,其他边距离5;最内侧的框是中间的框再向内偏5mm。
以中间的框左上角为基准,每向右向下为一个单元,要以一条短线隔开;在这个单元中间,横向以数字(1,2,3……)标记,纵向以字母(A,B,C……)标记,需要注意的是遇到字母“I”(H与J之间的那个,不是L)的时候需要跳过。

Subcatmain()
DimlView,lBView,lTexts,lFact,lSlct,lVisprp
DimLn,Lt
DimLH,LW,Hlb,Vlb,HNum,VNum,lFont
'刚刚这段是定义了一堆变量,没啥可解释的
SetlSlct=CATIA.ActiveDocument.Selection
SetlVisprp=lSlct.VisProperties
SetlView=CATIA.ActiveDocument.Sheets.ActiveSheet.Views.ActiveView
SetlBView=CATIA.ActiveDocument.Sheets.ActiveSheet.Views.Item("BackgroundView")
SetlTexts=lBView.Texts
SetlFact=lBView.Factory2D
'刚刚这段是给之前定义的一些变量赋值,或者叫指定对象吧,小编不知道这个过程用程序猿的术语该怎么说…
LH=CATIA.ActiveDocument.Sheets.ActiveSheet.GetPaperHeight
LW=CATIA.ActiveDocument.Sheets.ActiveSheet.GetPaperWidth
HNum=Int((LW-25)/100)+1
VNum=Int((LH-10)/100)+1
'获取图纸的尺寸,并计算一下这张图纸横/竖有多少个单元
lBView.Activate
'激活背景视图
'DrawBolder
SetLn=lFact.CreateLine(0,0,0,LH)'outerbolderleft
lSlct.AddLn
SetLn=lFact.CreateLine(0,0,LW,0)'outerbolderbottom
lSlct.AddLn
SetLn=lFact.CreateLine(0,LH,LW,LH)'outerboldertop
lSlct.AddLn
SetLn=lFact.CreateLine(LW,0,LW,LH)'outerbolderright
lSlct.AddLn
lVisprp.SetRealWidth3,1'changethefrontnumbertomidifyouterbolderlinewidth
lSlct.Clear
'上面的代码已经自带注释了,小编只说这一段,下面就不一一解释了~上面这段是画最外侧那个边框,像Factory2D.CreateLine(x1,y1,x2,y2)这些用法,可以在CATIA安装目录的Bin文件夹下,有一个叫Automation.chm的文件里查到。
SetLn=lFact.CreateLine(20,5,20,LH-5)'midbolderleft
lSlct.AddLn
SetLn=lFact.CreateLine(20,5,LW-5,5)'midbolderbottom
lSlct.AddLn
SetLn=lFact.CreateLine(20,LH-5,LW-5,LH-5)'midboldertop
lSlct.AddLn
SetLn=lFact.CreateLine(LW-5,5,LW-5,LH-5)'midbolderright
lSlct.AddLn
lSlct.Clear
SetLn=lFact.CreateLine(25,10,25,LH-10)'innerbolderleft
lSlct.AddLn
SetLn=lFact.CreateLine(25,10,LW-10,10)'innerbolderbottom
lSlct.AddLn
SetLn=lFact.CreateLine(25,LH-10,LW-10,LH-10)'innerboldertop
lSlct.AddLn
SetLn=lFact.CreateLine(LW-10,10,LW-10,LH-10)'innerbolderright
lSlct.AddLn
lVisprp.SetRealWidth2,1'changethefrontnumbertomidifyinnerbolderlinewidth
lSlct.Clear
lFont="FAWFONT"
'addHLabelsand"丨"
Fori=1ToHNum‘循环神马的,大学任何一门程序的课里都会有吧~
Hlb=""&i
Ifi<HNumThen'最后一个单元一般都不到100mm,因此这里先处理除最后一个单元以外的那些
SetLt=lTexts.Add(Hlb,20+100*(i-1)+50,5+2.5)
Lt.AnchorPosition=catMiddleCenter
Lt.SetFontName0,0,lFont
SetLn=lFact.CreateLine(20+100*i,5,20+100*i,10)
‘以上,画的是图纸下方的文字和分隔短线,通过y坐标的表达式能看出来
SetLt=lTexts.Add(Hlb,20+100*(i-1)+50,LH-5-2.5)
Lt.AnchorPosition=catMiddleCenter
Lt.SetFontName0,0,lFont
SetLn=lFact.CreateLine(20+100*i,LH-10,20+100*i,LH-5)
‘以上,画的是图纸上方的文字和分隔短线,通过y坐标的表达式能看出来
Else’开始处理最后一个不到100宽的那个格
SetLt=lTexts.Add(Hlb,20+100*(i-1)+((LW-20)Mod100)/2,5+2.5)
Lt.AnchorPosition=catMiddleCenter
Lt.SetFontName0,0,lFont
SetLt=lTexts.Add(Hlb,20+100*(i-1)+((LW-20)Mod100)/2,LH-5-2.5)
Lt.AnchorPosition=catMiddleCenter
Lt.SetFontName0,0,lFont
EndIf
Next
‘以下是V方向的元素,与H方向道理相同,不再解释。
'addVLabelsand"一"
Forj=1ToVNum
Ifj<9Then
Vlb=""&Chr(65+j-1)
Else
Vlb=""&Chr(65+j)
EndIf
Ifj<VNumThen
SetLt=lTexts.Add(Vlb,20+2.5,LH-5-100*(j-1)-50)
Lt.AnchorPosition=catMiddleCenter
Lt.SetFontName0,0,lFont
SetLn=lFact.CreateLine(20,LH-5-100*j,25,LH-5-100*j)
SetLt=lTexts.Add(Vlb,LW-5-2.5,LH-5-100*(j-1)-50)
Lt.AnchorPosition=catMiddleCenter
Lt.SetFontName0,0,lFont
SetLn=lFact.CreateLine(LW-5-5,LH-5-100*j,LW-5,LH-5-100*j)
Else
SetLt=lTexts.Add(Vlb,20+2.5,LH-5-100*(j-1)-((LH-5)Mod100)/2)
Lt.AnchorPosition=catMiddleCenter
Lt.SetFontName0,0,lFont
SetLt=lTexts.Add(Vlb,LW-5-2.5,LH-5-100*(j-1)-((LH-5)Mod100)/2)
Lt.AnchorPosition=catMiddleCenter
Lt.SetFontName0,0,lFont
EndIf
Next
lView.Activate‘之前不是激活背景视图了吗,最后再给人家还原到本来激活的视图去
EndSub
怎么样,有没有看的眼花缭乱啊!其实,这只是很基础的功能,代码的量也很小啦!
什么?在哪编写啊?如果你电脑上装了CATIA,那么就新建个txt文档,在里面写,然后后缀改成.catvbs或者.catscript,双击就可以运行啦!不过格式你可能要自己小小改动一下啦!
如果上面的代码,你双击运行出错,多半是因为你当前的CATIA打开的不是一个Drawing文件~

文章来源:富维安道拓产品研发中心
仅作分享交流,文章版权归原作者所有。
转载请注明来源本文地址:https://www.tuituisoft/bim/14219.html
上一篇:没有了
下一篇:没有了