NAPA技巧.docx
《NAPA技巧.docx》由会员分享,可在线阅读,更多相关《NAPA技巧.docx(20页珍藏版)》请在冰豆网上搜索。
![NAPA技巧.docx](https://file1.bdocx.com/fileroot1/2023-2/13/96909817-2935-410c-9a27-ea0040b2ee72/96909817-2935-410c-9a27-ea0040b2ee721.gif)
NAPA技巧
1.如何输出报告
一般我们使用LIST命令时,结果会显示在主窗口上;
但我们只要在菜单中选择TOOLS/ListWindow...
然后再使用LIST命令,结果就会出现在ListWindow上;
然后我们可以使用预览和打印命令查看和输出报告。
2.怎样生成电子版报告
根据上面的方法,将把报告直接打印到打印机上;
为了解决这个问题;
建议安装Acrobat5.0以上的完全版,
这样会有AcrobatDistiller打印机可以使用。
只要我们在ListWindow上选择该打印机,
我们就可以输出报告成Acrobat文件了。
缺点是Acrobat只支持行编辑,而且编辑能力较差。
如果在Window2000中将AcrobatDistiller打印机设为默认打印机,
以后就不用再每次进入NAPA都重新选择该打印机了。
另一个办法是将ListWindow中的内容全部选中,Paste到Notepad,Word等其它编辑程序中,
缺点是在ListWindow中的格式将不复存在。
但我们可以通过Excel引入TXT文件的方法解决它。
3.如何把报告的起始页设为第8页
修改起始页可以有以下办法。
在ListWindow中选择菜单File/NewList...
注意是NewList...,不是NewList
这样会有一个窗口,在里面可以设置起始页。
如果用命令的格式(一般在宏里较常用)
NLPN=8(意思是Newlistpagenumber=8)
(大部分NAPA命令都是一些简写,大家只要记住它的英文说法,就不会忘记命令了)
NL还有其它很多用法
注意:
NL在大部分子任务目录下都可以使用,但在Task?
>主目录和某些子任务目录下不能使用。
4.如何输出NAPA图形窗口中的内容到AutoCAD中去?
首先,将图形窗口中的东西输出成为DXF文件:
将需要输出的内容显示到窗口中;
然后在菜单中选择Print/printwithOption,
在Sendto栏中选择ExportFile,
怎么样,看到了吗?
下面我就不说了。
某些图形窗口中可以在窗口中点击右键,选择SendView...
还有些图形窗口中上面两个都没有...
没办法,建议重新开个图形窗口,一般建议打开PlotWindow或GeometryWindow。
上面所说的仅仅是输出两维图形,
如果想输出3D的DXF;
则需要用命令:
!
end 回到主任务目录
def 进入Define子任务目录
filed:
>11.dxf 确定输出的文件及目录
todxfhull 将Hull输出到DXF文件中
TODXF的具体用法可以用!
expltodxf查看
5.如何输出进水角曲线?
!
end
stab 进入STAB子任务目录
plotoical1cal2 绘制OpeningImmersion曲线,cal1cal2是两个需要输出的进水点。
建议在执行上面的命令前,先打开PlotWindow或GeometryWindow。
这样在看到图形后就可以把它存为DXF文件。
在AutoCAD中进行润色加工。
(NAPA的图形功能还是比较弱的)
6.如何得到最大KG曲线和最小GM曲线
!
end
cr 进入criteria子任务目录
T(4181) 吃水设置
TR0 纵倾设置
plotgmlim(orplotkglim) 绘制GM限制曲线或KG限制曲线。
以上只是最基本的输出。
应该注意的是RCR(RelevantCRiteria)的设置。
可以在CR下用RCR或者ARG(ARGument)命令查看
初始值是选用了NAPA预设的IMO的定义,但该规范有问题。
2室的同志可以用RCRMARIC调用SYSDB中我自行定义的校验规范组。
具体如下:
CGR, MARIC
CRI, V.AREA30,V.AREA40,V.AREA34,V.GZ0.2,V.MAXGZ25,V.GM0.15,
V.IMOWEATHER,VISIBILITY
OK
建议将RCR中的VISIBILITY去除(该项是用来校验视线的,我会列专题专门描述)
同时要让V.IMOWEATHER规范生效(就是那个该死的A/B条款),需要加入PROF(PROFile)定义(我将列专题描述)
可以在CR下用PROF或者ARG(ARGument)命令查看
这样RCR的定义为
RCRV.AREA30,V.AREA40,V.AREA34,V.GZ0.2,V.MAXGZ25,V.GM0.15,V.IMOWEATHER
注意:
将NITER参数(即迭代次数)的数值从100改到1000以上,这样的话保证有计算结果。
(LIXF同学已经碰到过这个问题了)
这样再输出曲线时结果就正确了。
注意TR中只能有一个值,多了无效。
同时我们可以输出具体的数值表:
TR02-246
lislim
可以看到我们可以设置多个TR(纵倾)。
但结果的格式并不理想。
我们可以在窗口中选中需要的部分,将其复制到TXT文本中去,然后用EXCEL打开,并整理汇总。
7. 如何修改报告的页眉?
页眉是由!
header命令控制的。
大家可以用!
expl!
header查看它的用法。
单独输入!
head可以查看当前的!
head定义,一般刚进入NAPA时,默认值如下:
!
HEADER1 *YCN *LISTN *DT
!
HEADER2 *CSID *H1 *TM
!
HEADER3 *PRV *H2 *SGN
!
HEADER4 *SNAM *PGN
这些带*的变量的值可以用*DTX查看。
其中一些可以在REF子任务目录下定义修改。
当大家定义了自己的!
header后,一定要用NL命令,不然无效。
什么?
不知道NL,那我是白讲了,请查看第3节。
8.!
expl的说明。
前面我在介绍命令时,经常提到!
expl命令,其实这个命令的全称是!
explain,即解释,说明。
(NAPA对命令有一个自动匹配的动作,这意味着我们可以经常使用简写来减少敲键盘的次数,比如LIST命令,如果在某个任务目录下没有其它以L开头的命令,我们就可以打L,系统会自动匹配这个命令,如果在这个任务目录下有一个命令LIG,那对不起了,我们起码要打入LIS,系统才会匹配到该命令,不然,系统会返回一个错误信息。
一般来说,打三个字母基本就可以避免命令的重复问题。
)
这是一个超级命令,即意味着可以在任何目录下使用这个命令。
我们可以用它来查看命令的具体用法。
!
expl还有一个用法,就是可以用来查看错误信息的具体内容。
比如提示一个错误信息E13。
我们就可以用!
expl13来查看该错误的具体说明。
当然,不是每次都有满意的答复,大部分的说明只是很泛泛的,但有一些是非常有用的。
尤其是对于定义线型时提示的一些信息可以帮助我们尽快地找到错误的源头。
!
expl的具体用法大家可以用!
expl!
expl来查看。
9. 其它一些常用的命令
!
END 回到主任务目录。
这个前面已经出现过了,最大的作用就是不管在什么子任务目录下,都可以马上回到主任务目录下。
(一般出现在宏的第一句)
!
COM 列出当前目录下的可以执行的命令的列表。
!
L 列出最近执行过的命令,具体用法可以!
EXPL!
L查看。
ARG Arguments的简写,该命令在HYD,CP,LD,DAM,CR等任务目录下运行,主要是对计算和输出的一些设置。
LIST 列出计算的结果,在某些任务目录中可能需要添加参数,可在具体的任务目录下运行!
EXPLLIST。
后面碰到时会具体举例。
CAT Catalog的简写,列出当前目录下某一类数据的列表。
如果只有一类数据,可以直接用CAT。
如果有几类数据,可以用CAT{类别}。
比如要列出空船重量分布表,可以用CATLIG
DES Describe的简写,可以用来查看定义的具体内容(凡是我们输入的线,面,舱,视图,开口,空船重量,装载,破舱等等都是定义),比如查看一条名为TT的CURVE的定义,可用DESTT。
如果在一个任务目录下有几类数据,可能需要加参数,DESLIGA就是查看一个名为A的空船重量分布表的具体内容。
10.如何生成轮廓线?
为了计算IMO规范中的风压衡准,我们需要定义一个船体的轮廓线。
定义是在DEF子任务目录下完成。
第一种方法,我们可以逐点地输入整个轮廓线
CURPROFILE1(采用这种定义方法,不能用PROFILE作为其名称)
Y0
XZ*(223.772,20.845),-/,(220.14,16),(218.6,12.5),
/90,(221.6,10),(224.6,6.5),/90,(217.905,1),0/,
(211.6,0),/-,-/,FRF,/-,-/,FRA,/-,-/,
(10.85,0),/0,(8.198,0.515),(6.635,1.396),
(5.465,2.67),-/,(5.21,3.17),/-,-/,(5.21,4.55),
/-,(6.551,5.135),(7.188,6.556),(6.35,8),
(5.465,8.385),-/,(-4,11.87),/-,-/,(-4,20.845),
/-,-/,(7.45,20.845),/-,-/,(7.45,24.845),/-,-/,
(8.95,24.845),/-,-/,(8.95,29.245),/-,-/,
(11.4,29.245),/-,-/,(13.232,38.755),/-,-/,
(17.8,39.081),/-,-/,(17.8,29.245),/-,-/,
(19.45,29.245),/-,-/,(19.45,20.845),/-,-/,
(22.55,20.845),/-,-/,(22.55,37.345),/-,-/,
(35.45,37.345),/-,-/,(35.45,23.846),/-,-/,
(39.45,23.846),/-,-/,(39.45,20.845),/-,-/,
(207.195,20.845),/-,-/,(209.19,21.523),/-,-/,
(224.6,21.945),/-,-/,(223.772,20.845)
OK
第二种方法,我们可以直接从已经定义过的舱室上切下这个轮廓线。
DEF?
>GENPROFILETONHULL/Y=0
打开一个PLOTWINDOW
DEF?
>PLOTPROFILE可以显示所定义的PROFILE在PLOTWINDOW中。
采用这种定义方法,首先应该在TONHULL上做出上层建筑和烟囱,以及舱口盖,首楼等相关部分。
然后我们可以在CR子任务目录下,将定义好的轮廓线设为相关的。
PROFPROFILE(或PROFILE1)
这样我们就可以得到正确的计算结果了。
注意:
当甲板上装载集装箱时,NAPA系统会自动计算其侧面积,并加入风倾力臂的计算中;当有其它甲板货时…本人目前还没有碰到,不敢妄下断言。
11.VISIBILITY规范的运用
为了满足视线的要求,本人根据NAPA中的例子,制作了这个校验视线的宏,可以被作为校验规范的一部分进行校对。
在SYSDB中我定义了一个名为FRWV的文件。
具体内容如下:
@@MacroFRWV.Visibilityatmost2*lengthor500m
@@whicheverislesser.(xb,zb)viewpointonthebridge,
@@(xf,zf)pointblockingforwardview.
@t=cr.value('T0')
@tr=cr.value('TR0')
@xb=-80.25
@zb=36.03
@xf=123.1
@zf=23.81
@l=234.98
@b=zb-t+xb*tan(tr*(-1))
@a=zf-t+xf*tan(tr*(-1))
@c=xf-xb
@req=2*l
@ifreq>500@req=500
@ifabs(b-a)<0.01then
@dis=9999.9
@else
@dis=a*c/(b-a)
@ifdis<0@dis=9999.9
@endif
@att=dis
这样我们最后就得到了一个变量Att中的值为计算得到的视线长度。
建议大家把这个文件转存到自己的Project中去,并根据自己的船修改相应的变量值。
(文件名请保持不变)
注意:
该宏仅适于于没有甲板货的船的视线校验,如果有甲板货,尤其是集装箱船,该宏无法解决。
本想重新编写个宏,但实在太复杂,望有能力的朋友帮忙解决。
然后我们需要用一个定义的校验规范来检查。
本人在SYSDB中已经定义了下面的规范。
CRIT,VISIBILITY,'Forwardview'
TYPE,MACRO
REQ,FRWV
MET,IF,ATTCHA,NO
UNIT,m
OK
这样我们只要在CR子任务目录下的RCR中加入VISIBILITY,就可以在输出的报告中看到计算的结果了。
(打开一个装载状态,用LISTCRS命令可以看到)
12.如何输出静水力数值表
本人已经在SYSDB中定义了一个基本的宏,名称为OUT_HYD。
具体内容如下:
!
END
HYD
@@CONTROLTHEHEADERFORMAT
!
HEADGETEMPTY
!
HEAD1*SNAME*LISTN*YDNR
!
HEAD2'Q82,25030,020,005''MARIC'*PGN
NLPN=2
HULLSTABHULL
T(2.6180.1)18.615
LIST.BHP
@@LIST.PQ
LIST.LEVEL
TR-1124
LIST.TAB
大家可以根据自己项目的情况,对参数进行设置。
在HYD子任务目录下用ARG命令(前面已经介绍过了),可以列出大部分可以设置的参数和对它们的说明,大家可以自己看HULL、T、TR的具体解释。
LIST.BHP、LIST.PQ、LIST.LEVEL和LIST.TAB是调用了四个宏。
名字分别为LISTHYD.BHP、LISTHYD.PQ、LISTHYD.LEVEL和LISTHYD.TAB,具体内容在SYSDB下的对应文件中。
(这里就涉及到一个NAPA中用命令调用宏的方法,编程的同志应该很容易理解)
同样的,本人还编写了其它一些用于输出报告的宏。
(在SYSDB下以OUT_开头的文件,目前已经有输出静水力,横截曲线,邦交曲线,肋位表,装载状态,破舱报告的文本)大家可以将它们保存到自己的Project中,并修改相应的参数。
有兴趣的同志可以逐行运行这些宏,对于了解输出的命令有很大的帮助。
最后就可以根据自己的需要编写宏文件,我的任务也就差不多了。
13.如何生成风压面积和风倾力臂曲线
很遗憾,目前我还没有找到可以直接生成这两个曲线的方法。
但我们可以得到这两个曲线的具体数值,再利用Excel作出图形。
在CR子任务目录下设置了T、TR和PROF后,可以用LISTPRO输出每个吃水对应的水线以上的面积和力臂。
也可以用LIST.PROFILE命令调用系统的一个宏,将轮廓线信息会保存到Project中,我们可以用TableEditor打开PROFLIST表格。
具体每个输出参数的意义可以用LQPROALTL查看,当前的输出参数设置用LQPRO查看。
在这里提到了LQ(ListQuantity)这个输出设置命令,具体的用法将另设专题。
14.如何得到甲板浸水角
这两天和lixf同学研究了一下如何在NAPA中得到甲板浸水角的问题。
现将结论公布如下:
1.在DEF下定义一根甲板线(假定名字为DK)。
2.借用NAPA中Freeboarddeckedge的定义。
定义方法的英文原文如下:
Thefreeboardoftheshipisdefinedastheminimumdistanceofthefreeboarddeckedgefromthewaterline.Geometryofthecurvewhichrepresentsthefreeboarddeckedge,mustbedefinedinthegeometrysubsystem(taskDEF).Definitionofthefreeboarddeckedgeisdonebythecommands:
FRBname'descr.text';
CURcname;
OK;
where'CURcname'referstoanexistingcurve.Ifthecurveisopen(firstandlastpointdonotcoincide),theprogramassumesitsymmetricwithrespecttoy=0.Ifthecurveisclosed(firstandlastpointcoincide),thecurveisusedassuch.ThecommandSKIPinsteadofOKskipsthedefinition.ThefreeboarddeckedgeistakenintousebythecommandCFRB(seethearguments).SeealsothecommandCFRBforpossibilitytouseaheightapproximationforfreeboardcalculation.
因此我们只需要在CR子任务目录下打入下列命令;
FRBFRB1
CURDK
OK
CFRBFRB1
3.在设置了T和TR后,我们就可以用LISTFRB命令得到相应吃水和纵倾时的甲板浸水角。
4.同样的方法,在设置了相关开口后,我们可以用LISTROP得到相应吃水和纵倾时的开口浸水角。
5.这个方法只能够得到具体的数值,无法得到图形。
大家只能自行绘图了。
15.如何输出舱容表和测深表?
在前面的第12节中,我列举了许多的用来输出的宏,但其中没有输出舱容表和测深表的。
其实我用了另一种输出报告的方法-Report格式。
大家可以通过菜单上Task/Compartment/Compartment打开窗口。
并选择Output中的Report。
在下拉菜单中选择Volume。
这个是我自定义的一个用来输出舱容表的Report格式。
显而易见,这种方法相对于前面的宏的方式,最大的好处是有一个窗口界面,方便我们定义我们的输出内容和格式。
在这里我们可以选择输出一个舱、一类舱和整个Arrangement中的舱,并且可以控制是否输出一个汇总表,以及选用的输出的LQ(ListQuantity即列表内容,在这里建议大家选用Volume,具体的LQ的内容将随后推出。
)
其实大部分的输出内容都可以作成这种格式,NAPA中也已经定义了部分的Report格式。
这两种方法各有千秋,有兴趣编宏的同志可以将这个Report格式变成宏。
如果想自己定义Report格式可以找我具体讨论这个Report格式的定义方法。
目前我只定义了输出舱容表的Report格式,有关测深表的Report格式正在制作当中,但有可能会晚一点。
16.LQ的定义和使用
说实话,这个题目实在是太大了。
我只能挑一些重要的先写在上面,以后慢慢补充。
在NAPA中主要的输出命令就是LIST,在每个子任务下输出不同的内容,只不过是在LIST后面加的参数不同而已。
比如在LD下,输出装载情况就是LISTPAR;输出浮态就是LISTFLOAT;输出弯矩总结表就是LISTSTR…
而LQ(ListQuantity)命令就是用来控制LIST输出时的参数的。
它一般和TOO(TableOutputOption)成对使用。
其中LQ用来控制参数,而TOO主要是控制格式的。
不同的内容可以用LQ加参数的方式进行检查。
比如在LD下,就可以用LQPAR、LQSTR、TOOPAR、TOOSTR…查看不同的内容的输出参数。
如果想知道某个内容有那些可以输出的参数,可以在LQ后添加ALT,如果想知道这些参数的具体含义,可以在LQ后添加ALTL。
比如LQPARALTL、LQSTRALTL…
以上只是一些常用的,下面的内容比较全,我就不翻译了,直接列出:
TheadministrativeLQcommandsare:
LQid
ShowthecurrentLQ.Examples:
LQLQSM
LQidALT
Showthepossiblequantities.
LQALTLQSMALT
LQidALTL
Asabovebutalonglistisshownwithexplanatorytext.
LQALTLLQSMALTL
LQidCAT[database]
CatalogueexistingLQ'sindatabase.
LQCATLQSMCATLQSMCATDB1
LQidGETname[database]
GetLQfromdatabase.
LQGETsoundLQSMGETstd2LQSMGETtestSYSDB
LQidSAVEname[database]
SavethecurrentLQtodatabase.InthesavingofaLQtoDB2,therightsofa'professional'userareneeded.
LQSAVEtestLQSMSAVEtest
LQidDELname
DeleteLQfromprojectdatabase.
LQDELtestLQSMDELtest
LQidE