完善主体资料,免费赠送VIP会员!
* 主体类型
* 企业名称
* 信用代码
* 所在行业
* 企业规模
* 所在职位
* 姓名
* 所在行业
* 学历
* 工作性质
请先选择行业
您还可以选择以下福利:
行业福利,领完即止!

下载app免费领取会员

NULL

ad.jpg

catia如何导出二维图?用代码制作catia二维图的图框

发布于:2020-09-04 14:26:18
首页/BIM专题
分享

小编就是个代码狂魔!这篇文章里说的图框,是不包括标题栏的,只有图纸外的边框。这两天刚好有同事提出这个需求,小编就把解决问题的过程拿出来跟大家分享~

需求是这样婶儿滴:

随便给一个Drawing文件,要在这张图纸上画出图框:最外面的框就是图纸的大小,中间的框左侧距图纸边20mm,其他边距离5;最内侧的框是中间的框再向内偏5mm

以中间的框左上角为基准,每向右向下为一个单元,要以一条短线隔开;在这个单元中间,横向以数字(1,2,3……)标记,纵向以字母(ABC……)标记,需要注意的是遇到字母“I”HJ之间的那个,不是L)的时候需要跳过。

腿腿教学网-catia如何导出二维图?用代码制作catia二维图的图框

接下来,小编就把生成这个图框的脚本的源代码贴出来,并做上简单的注释,来和大家分享如何用代码实现需求描述的功能!

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文件~

腿腿教学网-catia如何导出二维图?用代码制作catia二维图的图框

文章来源:富维安道拓产品研发中心

仅作分享交流,文章版权归原作者所有。

转载请注明来源本文地址:https://www.tuituisoft/bim/14219.html

未标题-1.jpg

上一篇:没有了

下一篇:没有了