最详细的UG自定义刀具库教程1.备份库文件在开始定制刀具库之前,创建以下文件的备份副本:${UGII_BASE_DIR}\MACH\resource\library\tool\english\tool_database.dat${UGII_BASE_DIR}\MACH\resource\library\tool\metric\tool_database.dat${UGII_BASE_DIR}\MACH\resource\library\tool\ascii\dbc_tool_ascii.def${UGII_BASE_DIR}\MACH\resource\library\tool\ascii\dbc_tool_build_ascii.tcl${UGII_BASE_DIR}\MACH\resource\library\tool\ascii\dbc_tool_ascii_export.tcl${UGII_BASE_DIR}\MACH\resource\ug_library\dbc_tool_general.tcl2.将MY_END_MILLS刀具添加到数据库1.在${UGII_BASE_DIR}\MACH\resource\library\tool\english文件夹中,打开文件tool_database.dat。2.在文件开头的注释中,检查ST列中是否包含可用的子类型。#TLibTypeSTLibSubtypeUGTUGTypeUGSTUGSubtype对于此示例,由于未将75用作端铣刀的子类型,因此您会将其分配给新类。3.将新类添加到表中以将其记录到文件中。#02Milling75MyEndMills01Mill015Parameter4.在#MillingTools区域,添加以下行:#CLASSMY_END_MILLS#END_DATA注释#CLASS和#END_DATA语句由Tcl代码分析。不要加入额外的空格字符,尤其是在语句末尾,因为您可能注意不到这里的空格。5.从不可转位端铣刀类#CLASSEND_MILL_NON_INDEXABLE中复制FORMAT语句并将其粘贴到新的类标识符#CLASSMY_END_MILLS与数据语句结束#END_DATA之间,因此结果类似如下:#CLASSMY_END_MILLSFORMATLIBRFTSTUGTUGSTDESCRMATREFMATDESTLNUMADJREGCUTCOMREGHLDHLDDESDIAFNHEIZOFFDROTFLENTAPATIPACOR1CTHHOFFZMOUNTRIGIDTSDIATSLENTSTLENRAMPANGLEHELICALDIAMINRAMPLENMAXCUTWIDTHHLDREFTPREF#END_DATA由于FORMAT语句在任何新发行版中均可能会发生更改,因此应从新类的基本刀具类型中复制FORMAT语句。在此示例中,新类基于#CLASSEND_MILL_NON_INDEXABLE。您将不复制或修改刀具记录。首选做法是从NX中导出刀具。这样可以确保数据格式正确。提示为了在需要调试时帮助您标识数据字段,可以加入注释行以在格式语句中的字段附近显示字段分隔符,如这一部分行中所示。FORMATLIBRFTSTUGTUGSTDESCR#-—-—-—|--—-—|-|-—|-—-|-—-—|在FORMAT和DATA语句中可以多用空格来使数据字段与关键字对齐,如此处所示:FORMATLIBRFTSTUGTUGST#------+----------–--–-+----+----+----+----DATA|ugti0000_1001|02|75|01|1数据库记录现已建立,可供您从NX内创建和导出该类的新刀具。6.保存文件。7.在${UGII_BASE_DIR}\MACH\resource\library\tool\metric文件夹中,打开tool_database.dat文件,重复第2步到第6步。3.将MY_END_MILLS添加到库类选择对话框1.在${UGII_BASE_DIR}\MACH\resource\library\tool\ascii\文件夹中,打开文件dbc_tool_ascii.def。2.在类层次结构区域,在CLASSMILLING内的CLASSEND_MILL_NON_INDEXABLE之后添加以下行。CLASSMY_END_MILLS{TYPEQRYQUERY[DB(SubType)]==[75]FILEqry=shank_mill_schema;rset=shank_mill_schema;DIALOGRSETUI_NAMEMyEndMills}DIALOG行中的属性别名决定了搜索准则对话框中输入的属性。RSET行中的属性别名决定了搜索结果对话框中输入的属性。3.从CLASSEND_MILL_NON_INDEXABLE(新类的基本类)中复制DIALOG和RSET行的内容。这样可以确保为用户提供正确的参数。该内容可能因发行版而异。4.保存文件。4.在刀具生成中添加MY_END_MILLS子类型对于关注定制的类,可能会执行硬代码检查,例如,为了向特定子类中添加参数。ASC_build_end_mill过程包括此类检查。必须将子类添加到检查代码中。1.在${UGII_BASE_DIR}\MACH\resource\library\tool\ascii\文件夹中,打开文件dbc_tool_build_ascii.tcl。2.查找包含此注释的行:#Outputtipangleforendmill在下一行中,必须为端铣刀有新子类型的可能性提供75。您将插入逻辑或条件。3.更改用于检查端铣刀子类型的下一行,以确定是否添加尖角。将其由此:if{$asc_lib_subtype==1||$asc_lib_subtype==2}{更改为:if{$asc_lib_subtype==1||$asc_lib_subtype==2||$asc_lib_subtype==75}{4.保存文件。5.启用MY_END_MILLS的导出1.在\MACH\resource\library\tool\ascii文件夹中,打开dbc_tool_ascii_export.tcl文件。2.在夹持系统区域,将MY_END_MILLS添加到使用夹持系统的类列表中。#First,addHoldingsystemforallclasseswhichuseitswitch--$dbc_class\{END_MILL_NON_INDEXABLE-END_MILL_INDEXABLE-MY_END_MILLS-3.在procASC_build_tool_record区域,添加MY_END_MILLS。由于MY_END_MILLS具有和其他端铣刀相同的属性,可使用现有的构建程序ASC_build_end_mill。END_MILL_NON_INDEXABLE{setasc_lib_subtype1setasc_nx_subtype1ASC_build_end_mill}MY_END_MILLS{setasc_lib_subtype75setasc_nx_subtype1ASC_build_end_mill}不要忘记将子类型编辑为75。4.保存文件。6.将MY_END_MILLS映射到类层次结构1.在${UGII_BASE_DIR}\MACH\resource\ug_library文件夹中,打开文件dbc_tool_general.tcl。2.在过程UGLIB_map_class中添加类,并更新dbc_num_classes以反映阵列中的类的总数。if{$dbc_cutter_subtype==$ug_ctr_stype(MILL_5)}\{setdbc_class_names(0)END_MILL_NON_INDEXABLEsetdbc_class_names(1)END_MILL_INDEXABLEsetdbc_class_names(2)UG_5_PARAMETERsetdbc_class_names(3)MY_END_MILLSsetdbc_num_classes43.在过程UGLIB_ask_class中,根据新的子类型设置新类的类型。1.查找这些行:#Setappropriateclassbasedonlibrarytypeandsubtype##Startwithmillingtools2.在此代码后:if{$asc_type==$uglib_tl_type(MILL)}\{if{$asc_subtype==$uglib_tl_stype(NI_END_MILL)}\{setdbc_classEND_MILL_NON_INDEXABLE使用此代码段插入新条件语句:}elseif{$asc_subtype==$uglib_tl_stype(MY_END_MILLS)}\{setdbc_classMY_END_MILLS注意不要更改打括号的图案。结果应如下所示:if{$asc_type==$uglib_tl_type(MILL)}\{if{$asc_subtype==$uglib_tl_stype(NI_END_MILL)}\{setdbc_classEND_MILL_NON_INDEXABLE}elseif{$asc_subtype==$uglib_tl_stype(MY_END_MILLS)}\{setdbc_classMY_END_MILLS}elseif{$asc_subtype==$uglib_tl_stype(I_END_MILL)}\{setdbc_classEND_MILL_INDEXABLE}elseif{$asc_subtype==$uglib_tl_stype(NI_BALL_MILL)}\{等等。4.保存文件,但为下一活动将其保持打开状态。7.添加MY_END_MILLS子类型定义您将在文件dbc_tool_general.tcl中进行其他编辑。这些更改允许刀具编号以gut为前缀来反映类型和子类型。例如,没有此代码,前缀将为ugti0000_。有了此代码,前缀包括库类型T和子类型ST:ugti0275_。1.查找这些注释行:##Millingtoolsubtypes(I=Indexable,NINonIndexable)#您将在设置不可转位和可转位端铣刀的代码后面插入代码,以定义定制子类型。2.在读取setuglib_tl_stype(I_END_MILL)2的行后,插入此行:Setuglib_tl_stype(MY_END_MILLS)75前几行代码应如下所示:##Millingtoolsubtypes(I=Indexable,NINonIndexable)#setuglib_tl_stype(NI_END_MILL)1setuglib_tl_stype(I_END_MILL)2setuglib_tl_stype(MY_END_MILLS)75setuglib_tl_stype(NI_BALL_MILL)3setuglib_tl_stype(I_BALL_MILL)43.在procUGLIB_ask_class_type_and_subtype{}中,在处理$dbc_class==END_MILL_NON_INDEXABLE的代码后,插入代码以处理$dbc_class==MY_END_MILLS。}elseif{$dbc_class==MY_END_MILLS}\{setdbc_class_type$uglib_tl_type(MILL)setdbc_class_subtype$uglib_tl_stype(MY_END_MILLS)前几行代码应如下所示:#Startwithmillingtoolsif{$dbc_class==END_MILL_NON_INDEXABLE}\{setdbc_class_type$uglib_tl_ty