Siemens-NXUG二次开发-导入与导出(可移除参数)prt文件[Python UF][20240121]

news2024/11/26 4:22:12

Siemens-NXUG二次开发-导入与导出(可移除参数)prt文件[Python UF][20240121]

  • 1.python uf函数
    • 1.1 NXOpen.UF.Part.Import
    • 1.2 NXOpen.UF.Part.ImportPartModes
    • 1.3 NXOpen.UF.Group.AskGroupData
    • 1.4 NXOpen.UF.Obj.AskTypeAndSubtype
    • 1.5 NXOpen.UF.Part.Export
    • 1.6 NXOpen.UF.Part.ExportWithOptions
    • 1.7 NXOpen.UF.Part.ExportOptions
    • 1.8 UF_PART_export_params_mode_e
    • 1.9 UF_PART_export_exp_mode_t
  • 2.示例代码
    • 2.1 pyuf_import_prt.py
    • 2.2 pyuf_export_prt.py
  • 3.运行结果
    • 3.1 内部模式
    • 3.2 外部模式

1.python uf函数

1.1 NXOpen.UF.Part.Import

# 内部和外部模式可用
"""
官方文档翻译:将NX零件或Solid Edge零件(.par或.psm文件扩展名)从磁盘合并到当前工作零件中。输入在“模式”结构中指定。Solid Edge零件将作为未参数化的实体导入。
请参阅模式结构的说明。
返回值:一个tag,元素类型为python的int类型,表示导入prt中体的组tag,注意是“组”tag,“组”tag包含导入内容的tag,需要通过查询组的函数获取组内成员tag,拿到具体的体tag。
"""
def NXOpen.UF.Part.Import(self, file_name, modes, dest_csys, dest_point, scale)
	'''
	file_name: (python str),文件名(包含路径)
	modes:(NXOpen.UF.Part.ImportPartModes) 导入模式类实例对象(需要设置过具体属性)
	dest_csys:(python  list of float, len:6) 被导入零件安放的目标坐标系,dest_csys[0.2]是X方向矢量,dest_csys[3.5]是y方向矢量。这些被用作UF_MTX3_initialize的输入,以创建完整的坐标系矩阵。
	dest_point:(python  list of float, len:3) 被导入零件的目标放置点
	scale:(python float) 被导入零件的缩放大小
	'''

1.2 NXOpen.UF.Part.ImportPartModes

# 内部和外部模式可用
"""
官方文档翻译:零件导入中使用的数据结构和常量。
"""
'''
layer_mode
int
0=在工作层上合并
1=在原始图层上合并

group_mode
int
0=合并未分组
1=合并分组

csys_mode
int
Open API应用程序未使用

plist_mode
int
注意:不再使用plist_mode

view_mode
int
0=不检索视图和布局。
1=检索视图和布局。

cam_mode
logical
如果为true,则合并工具和参数集,如果为false,则不要。

use_search_dirs
logical
这不是Open API应用程序使用的
'''
def NXOpen.UF.Part.ImportPartModes.CamMode(self)	
def NXOpen.UF.Part.ImportPartModes.CamMode(	self, value)		
def NXOpen.UF.Part.ImportPartModes.CsysMode(self)	
def NXOpen.UF.Part.ImportPartModes.CsysMode(self, value )		
def NXOpen.UF.Part.ImportPartModes.GroupMode(self)	
def NXOpen.UF.Part.ImportPartModes.GroupMode(self, value)		
def NXOpen.UF.Part.ImportPartModes.LayerMode(self)	
def NXOpen.UF.Part.ImportPartModes.LayerMode(self, value)		
def NXOpen.UF.Part.ImportPartModes.PlistMode(self)	
def NXOpen.UF.Part.ImportPartModes.PlistMode(self, value)		
def NXOpen.UF.Part.ImportPartModes.UseSearchDirs(self)	
def NXOpen.UF.Part.ImportPartModes.UseSearchDirs(self, value)		
def NXOpen.UF.Part.ImportPartModes.ViewMode(self)	
def NXOpen.UF.Part.ImportPartModes.ViewMode(self, value)	

1.3 NXOpen.UF.Group.AskGroupData

"""
官方文档翻译:查询组的成员。使用group_members后,使用UF_free释放分配内存。
"""
def NXOpen.UF.Group.AskGroupData(self, group_tag)
	'''
	group_tag:(python int) 组的tag
	返回值: 一个元组(list of Tag, int),0-list of Tag:一个列表,包含组成员的tag。如果组成员的数量为0,则这将是一个NULL_TAG,使用UF_free(group_members)释放内存;1-int:组内成员个数
	'''

1.4 NXOpen.UF.Obj.AskTypeAndSubtype

"""
官方文档翻译:返回标记的NX对象的对象类型和子类型。这些对象中的大多数都列在uf_object_types.h头文件中。
除了uf_object_types.h中列出的对象之外,还有其他由标记唯一标识的NX对象。这些对象包括表达式和部件。这些对象未在uf_object_types.h头文件中列出,它们生成类型为uf_OBJ_EXPR_type和子类型为0的uf_OBJ_PART_type。
此函数为表达式和部件返回的类型和子类型在任何其他Open API例程中都没有用处。提供这些类型只是为了允许您通过NX对象的标识符(即其标签)来确定NX对象类,这可以帮助您确定可以与该对象一起使用的其他Open API例程。有关对象类和可用于这些对象的开放式API例程的更详细讨论,请参阅开放式API程序员指南“NX对象模型”。
"""
def NXOpen.UF.Obj.AskTypeAndSubtype(self, object_id)	
	'''
	object_id:(python int) 对象tag)
	返回值:一个元组(int, int),0-type;1-subtype
	'''

1.5 NXOpen.UF.Part.Export

# 内部和外部模式可用
"""
官方文档翻译:将指定的对象导出到指定的prt。对象将复制到目标prt中。调用此函数相当于使用以下选项调用UF_PART_export_with_options:new_PART=true, params_mode=UF_PART_maintain_params, expression_mode=UF_PART_copy_exp_deeply
有关此函数行为的更多详细信息以及返回值的描述,请参阅UF_PART_export_with_options。
"""
def NXOpen.UF.Part.Export(self, part_name, num_objects, object_array)	
	'''
	part_name:(python str) 导出到的目标文件名.
	num_objects:(python int) ,object_array列表的长度:有n个要被导出的对象
	object_array:(python  list of Tag) 要被导出对象的tag列表.
	'''

1.6 NXOpen.UF.Part.ExportWithOptions

# 内部和外部模式可用
"""
官方文档翻译:将指定的对象导出到指定的prt。对象将复制到目标prt中。给定对象所依赖的任何其他可转移对象也将导出。请注意,如果没有显示部件,则导出操作将失败。
注意:对象引用和prt引用不可导出。
如果一个对象依赖于另一个不可导出的对象,则不导出该对象,并返回警告值UF_PART_warn_objects_not_copied。但是,操作仍在继续,并且仍会导出其他请求的可导出对象。这种情况可能出现在两种情况下。
1.如果绘图对象的关联几何图形未导出,则不导出该绘图对象。
2.如果删除了要素参数,则无法导出基准。
如果发生任何其他错误,则操作不会成功,并返回相应的错误代码。
options参数控制此操作的行为:请参阅表格
"""
def NXOpen.UF.Part.ExportWithOptions(self, part_name, num_objects, object_array, options)	
	'''
	part_name:(python str) 导出到的目标文件名.
	num_objects:(python int) ,object_array列表的长度:有n个要被导出的对象
	object_array:(python  list of Tag) 要被导出对象的tag列表.
	options:(NXOpen.UF.Part.ExportOptions) 指向结构体的指针(实例对象),该结构包含用于控制对象导出方式的选项。
	'''

1.7 NXOpen.UF.Part.ExportOptions

# 内部和外部模式可用
"""
官方文档翻译:描述提供给导出操作的选项的类型。
"""
'''
new_part
logical
确定是否应将对象导出到新prt中。

params_mode
UF_PART_export_params_mode_t
确定如何复制实体参数。

expression_mode
UF_PART_export_exp_mode_t
确定如何复制表达式。
'''
def NXOpen.UF.Part.ExportOptions.ExpressionMode(self)
def NXOpen.UF.Part.ExportOptions.ExpressionMode(self, value)	
def NXOpen.UF.Part.ExportOptions.NewPart(self)
def NXOpen.UF.Part.ExportOptions.NewPart(self, value)
def NXOpen.UF.Part.ExportOptions.ParamsMode(self)
def NXOpen.UF.Part.ExportOptions.ParamsMode(self, value)

1.8 UF_PART_export_params_mode_e

// 内部和外部模式可用
/*
官方文档翻译:描述在导出操作期间应如何处理实体参数的类型,注意:UF_PART_maintain_all_params是V15.0中新引入的选项。
在V15.0中,UF_PART_maintain_params和UF_PART_remove_params的行为与早期版本中的行为相同。
*/
enum UF_PART_export_params_mode_e
{
	/*
	在导出操作期间应保持实体参数。
	请注意,使用此选项,如果实体参数的有效性依赖于其他对象,则不会复制这些参数,除非这些其他对象无论如何都要复制。
	*/
   	UF_PART_maintain_params, 
   	
	/* 
	实体参数将在导出操作期间删除。复制到目标prt中的实体将没有实体参数。
	*/
   	UF_PART_remove_params, 
   	
	/*
	在导出操作期间,应保持所有实体参数。
	源对象中的所有实体参数都将复制到目标对象中。
	请注意,保持参数有效性所需的额外对象也将被复制。
	*/
   	UF_PART_maintain_all_params 
};

1.9 UF_PART_export_exp_mode_t

// 内部和外部模式可用
/*
官方文档翻译:描述在导出操作期间应如何处理表达式的类型:
*/
enum UF_PART_export_exp_mode_e
{
	/*
	表达方式会被深复制。
	如果一个表达式引用了同一部分中的另一个表达式,则该引用的表达式也将被复制。
	但是,不会复制其他prt中的任何引用表达式。
	*/
   	UF_PART_copy_exp_deeply, 
   	
	/*
	表达式将被粗略地复制。
	如果一个表达式引用另一个表达式,则引用表达式的副本将引用同一个被引用的表达式。
	对于表达式的部分间引用和部分内引用都会发生这种情况。
	*/
   	UF_PART_copy_exp_shallowly 
} ;

2.示例代码

2.1 pyuf_import_prt.py

import NXOpen.UF as UF

import datetime

def get_uf_session():
    # 获取当前UF会话
    return UF.UFSession.GetUFSession()

def getNowLocalString(split):
    if split == '\n' or split == '\r' or split == '\t' or split == '*':
        return ""
    if split == '\0':
        return datetime.datetime.now().strftime("%Y%m%d%H%M%S")
    
    return datetime.datetime.now().strftime("%Y{}%m{}%d{}%H{}%M{}%S".format(split, split, split, split, split))

def get_group_member(group_tag):
    """
    功能:从组tag中获取成员tag
    """
    pyuf_group_instance = the_pyuf_session.Group
    # (list of Tag, int)
    return pyuf_group_instance.AskGroupData(group_tag)
    
def get_obj_type_and_subType(obj_tag):
    """
    功能:获取对象的类型
    """
    pyuf_obj_instance = the_pyuf_session.Obj
    return pyuf_obj_instance.AskTypeAndSubtype(obj_tag)

def pyuf_new_prt(the_pyuf_session, new_prt_file_name, units = 1):
    """
    功能:创建一个指定文件路径和文件名的.prt文件,默认单位制是米(m)
    """
    
    # 由于要对Part进行操作,因此需要获取Part实例对象
    pyuf_part_instance = the_pyuf_session.Part

    # New方法位于Part类对象中
    new_prt_file_tag = pyuf_part_instance.New(new_prt_file_name, units)

def pyuf_save_prt(the_pyuf_session):
    """
    功能:保存当前工作part
    """
    # 由于要对Part进行操作,因此需要获取Part实例对象
    pyuf_part_instance = the_pyuf_session.Part

    # Save方法位于Part类对象中
    return pyuf_part_instance.Save()

def pyuf_import_prt(the_pyuf_session, file_name, modes = {"LayerMode":0, "GroupMode":1, "CsysMode":0, "PlistMode":0, "ViewMode":0, "CamMode":False, "UseSearchDirs":False}, dest_csys = [1.0, 0.0, 0.0, 0.0, 1.0, 0.0], dest_point = [0.0, 0.0, 0.0], scale = 1.000000):
    """
    功能:将指定.prt文件导入到当前工作prt中
    """
    
    # 由于要对Part进行操作,因此需要获取Part实例对象
    pyuf_part_instance = the_pyuf_session.Part
    # 由于要对mtx进行操作,因此需要获取Mtx3示例对象
    pyuf_mtx3_instance = the_pyuf_session.Mtx3

    importPartModes = pyuf_part_instance.ImportPartModes()
    importPartModes.LayerMode = modes['LayerMode']
    importPartModes.GroupMode = modes['GroupMode']
    importPartModes.CsysMode = modes['CsysMode']
    importPartModes.PlistMode = modes['PlistMode']
    importPartModes.ViewMode = modes['ViewMode']
    importPartModes.CamMode = modes['CamMode']
    importPartModes.UseSearchDirs = modes['UseSearchDirs']

    # 初始化坐标系mtx
    mtx3 = pyuf_mtx3_instance.Initialize(dest_csys[0:3], dest_csys[3:])

    # 被导入的prt文件会以gruop的形式导入得到组tag,而非特征或体tag
    return pyuf_part_instance.Import(file_name, importPartModes, mtx3[0:6], dest_point, scale)

if __name__ == '__main__':
    # 获取uf session
    the_pyuf_session = get_uf_session()

    # 将要导入prt文件路径与名称
    import_prt_file_name = 'D:\\pyuf_import_export_prt_test.prt'

    # 创建一个新.prt文件
    new_prt_file_tag = pyuf_new_prt(the_pyuf_session, 'D:\\' + getNowLocalString('\0') + '.prt')

    # 执行导入操作,获取组tag
    import_prt_group_tag = pyuf_import_prt(the_pyuf_session, import_prt_file_name)

    pyuf_save_prt(the_pyuf_session)

    # 从组tag中获取实体成员tag
    solid_body_tag_list = []
    if import_prt_group_tag is not None and import_prt_group_tag != 0:
        member_tag_tuple = get_group_member(import_prt_group_tag)
        member_tag_tuple_value = member_tag_tuple[0]

        for item_tag in member_tag_tuple_value:
            type_subtype = get_obj_type_and_subType(item_tag)
            # 实体的type是70、subtype是0
            if type_subtype[0] == 70 and type_subtype[1] == 0:
                solid_body_tag_list.append(item_tag)

    # 外部模式或内部模式运行标识
    flag = 'internal'

    # 外部模式运行,会在命令行中打印,但内部模式运行则无反应,因在UF.UI类中操作,才可在NX/UG界面显示数据
    if flag == 'external':
        print('\nimport_prt_group_tag is:{}}'.format(import_prt_group_tag))
    elif flag == 'internal':
        # 由于与NX/UG界面UI操作的方法都在UI类中,因此先获取UF.UI示例对象
        pyuf_ui_instance = the_pyuf_session.Ui

        # 判断信息窗口是否打开
        if pyuf_ui_instance.IsListingWindowOpen() == False:
            # 信息窗口未打开,先要将其打开
            # 打开信息窗口
            pyuf_ui_instance.OpenListingWindow()

        # 向信息窗口写入内容
        pyuf_ui_instance.WriteListingWindow('\nimport_prt_file_name is:{}'.format(import_prt_file_name))
        pyuf_ui_instance.WriteListingWindow('\nimport_prt_group_tag is:{}'.format(import_prt_group_tag))
        pyuf_ui_instance.WriteListingWindow('\nsolid_body_tag_list is:{}'.format(solid_body_tag_list))
        

        # 将信息窗口的内容保存到指定文件中
        pyuf_ui_instance.SaveListingWindow('D:\\pyuf_listingwindow_content_test.txt')

        # 关闭信息窗口
        #pyuf_ui_instance.ExitListingWindow()

2.2 pyuf_export_prt.py

import NXOpen.UF as UF

import datetime

def get_uf_session():
    # 获取当前UF会话
    return UF.UFSession.GetUFSession()

def getNowLocalString(split):
    if split == '\n' or split == '\r' or split == '\t' or split == '*':
        return ""
    if split == '\0':
        return datetime.datetime.now().strftime("%Y%m%d%H%M%S")
    
    return datetime.datetime.now().strftime("%Y{}%m{}%d{}%H{}%M{}%S".format(split, split, split, split, split))

def get_part_solid_body_tags(the_pyuf_session, part_file_tag):
        """
        功能:获取.prt文件中的所有solidbody实体的tag标识
        类型: 对象获取.
        """
        pyuf_obj_instance = the_pyuf_session.Obj

        solid_body_tag_list = []
        
        solid_body_tag = 0
        while True:
            solid_body_tag = pyuf_obj_instance.CycleObjsInPart(part_file_tag, UF.UFConstants.UF_solid_type, solid_body_tag)
            if solid_body_tag == 0:
                break
            type, subtype= pyuf_obj_instance.AskTypeAndSubtype(solid_body_tag)
            if subtype == 0:
                solid_body_tag_list.append(solid_body_tag)
        return solid_body_tag_list

def pyuf_open_prt(the_pyuf_session, open_prt_file_name):
    """
    功能:打开一个指定文件路径和文件名的.prt文件
    """
    
    # 由于要对Part进行操作,因此需要获取Part实例对象
    pyuf_part_instance = the_pyuf_session.Part

    # Open方法位于Part类对象中
    return pyuf_part_instance.Open(open_prt_file_name)

def pyuf_close_prt(the_pyuf_session, part_tag, scope, mode):
    """
    功能:关闭当前工作part
    """
    # 由于要对Part进行操作,因此需要获取Part实例对象
    pyuf_part_instance = the_pyuf_session.Part

    # Close方法位于Part类对象中
    return pyuf_part_instance.Close(part_tag, scope, mode)

def pyuf_export_prt(the_pyuf_session, part_name, num_objects, object_array):
    """
    功能:导出objct_array中的tag到指定part_name文件中
    """
    # 由于要对Part进行操作,因此需要获取Part实例对象
    pyuf_part_instance = the_pyuf_session.Part

    # Export方法位于Part类对象中
    return pyuf_part_instance.Export(part_name, num_objects, object_array)

def pyuf_export_with_options_prt(the_pyuf_session, part_name, num_objects, object_array, options = [True, 1, 1]):
    """
    功能:导出objct_array中的tag到指定part_name文件中,可以设置导出选项,例如移除参数!
    """
    # 由于要对Part进行操作,因此需要获取Part实例对象
    pyuf_part_instance = the_pyuf_session.Part

    export_options = the_pyuf_session.Part.ExportOptions()
    export_options.NewPart = options[0]
    export_options.ParamsMode = pyuf_part_instance.ExportParamsMode.ValueOf(options[1])
    export_options.ExpressionMode = pyuf_part_instance.ExportExpMode.ValueOf(options[2])
    # Export方法位于Part类对象中
    return pyuf_part_instance.ExportWithOptions(part_name, num_objects, object_array, export_options)

if __name__ == '__main__':
    # 获取uf session
    the_pyuf_session = get_uf_session()

    # 将要导出prt文件路径与名称
    export_prt_file_name = 'D:\\pyuf_import_export_prt_test.prt'

    # 打开一个.prt文件
    open_prt_file_tag = pyuf_open_prt(the_pyuf_session, export_prt_file_name)[0]

    # 获取该prt中所有实体tag的列表
    solid_body_tag_list = get_part_solid_body_tags(the_pyuf_session, open_prt_file_tag)

    # 执行导出操作,导出列表中的第1个实体
    result_a = pyuf_export_prt(the_pyuf_session, 'D:\\' + getNowLocalString('\0') + '_body0.prt', 1, [solid_body_tag_list[0]])

    # 执行导出操作,导出列表中的第2实体并移除参数
    
    result_b = pyuf_export_with_options_prt(the_pyuf_session, 'D:\\' + getNowLocalString('\0') + '_body1.prt', 1, [solid_body_tag_list[1]])

    # 外部模式或内部模式运行标识
    flag = 'internal'

    # 外部模式运行,会在命令行中打印,但内部模式运行则无反应,因在UF.UI类中操作,才可在NX/UG界面显示数据
    if flag == 'external':
        pass
    elif flag == 'internal':
        # 由于与NX/UG界面UI操作的方法都在UI类中,因此先获取UF.UI示例对象
        pyuf_ui_instance = the_pyuf_session.Ui

        # 判断信息窗口是否打开
        if pyuf_ui_instance.IsListingWindowOpen() == False:
            # 信息窗口未打开,先要将其打开
            # 打开信息窗口
            pyuf_ui_instance.OpenListingWindow()

        # 向信息窗口写入内容
        pyuf_ui_instance.WriteListingWindow('\npyuf_export_prt result is:{}'.format(result_a))
        pyuf_ui_instance.WriteListingWindow('\npyuf_export_with_options_prt result is:{}'.format(result_b))

        # 将信息窗口的内容保存到指定文件中
        pyuf_ui_instance.SaveListingWindow('D:\\pyuf_listingwindow_content_test.txt')

        # 关闭信息窗口
        #pyuf_ui_instance.ExitListingWindow()

3.运行结果

3.1 内部模式

选中要运行的.py文件后,点击“管道通路”即可。
在这里插入图片描述

在这里插入图片描述

运行结果[导入]:
在这里插入图片描述
运行结果[无移除参数导出]:
在这里插入图片描述
运行结果[除参数导出]:
在这里插入图片描述

3.2 外部模式

cmd命令:“D:\Siemens\NX 12.0\NXBIN\run_journal.exe” pyuf_import_prt.py
cmd命令:“D:\Siemens\NX 12.0\NXBIN\run_journal.exe” pyuf_export_prt.py

powershell命令:&“D:\Siemens\NX 12.0\NXBIN\run_journal.exe” pyuf_import_prt.py
powershell命令:&“D:\Siemens\NX 12.0\NXBIN\run_journal.exe” pyuf_export_prt.py

运行结果:同上

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1400040.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Frenet坐标系下动态街道场景的最优轨迹生成

0 前言 有两个主要算法已经在实际中使用: (1)大多数研究组采用插值来解决规划问题,如奥迪、斯坦福最近演示中使用了回旋曲线,贝塞尔以及多项式曲线也被其他研究组使用。主要原因是在结构化环境中增强映射可以提供所需…

第十一站:多态练习ODU

实现动态切换 ODU.h #pragma once #include <iostream> using namespace std; #define ODU_TYPE_311_FLAG "311" #define ODU_TYPE_335_FLAG "335" enum class ODU_TYPE {ODU_TYPE_311,ODU_TYPE_335,ODU_TYPE_UNKNOW };class ODU{ public:ODU();//发…

Jan AI本地运行揭秘:首次体验,尝鲜科技前沿

&#x1f31f;&#x1f30c; 欢迎来到知识与创意的殿堂 — 远见阁小民的世界&#xff01;&#x1f680; &#x1f31f;&#x1f9ed; 在这里&#xff0c;我们一起探索技术的奥秘&#xff0c;一起在知识的海洋中遨游。 &#x1f31f;&#x1f9ed; 在这里&#xff0c;每个错误都…

带POE网络变压器与2.5G/5G/10G网络变压器产品特点介绍

Hqst华轩盛(石门盈盛)电子导读&#xff1a;一起来了解带POE网络变压器与2.5G/5G/10G网络变压器产品特点&#xff1f; 一﹑带POE网络变压器与2.5G/5G/10G网络变压器产品特点介绍 首先、POE网络变压器产品与常规不带POE产品的区别&#xff1a; 带POE网络变压器主要要求是耐电流等…

按键检测知识

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、pandas是什么&#xff1f;二、使用步骤 1.引入库2.读入数据总结 前言 提示&#xff1a;这里可以添加本文要记录的大概内容&#xff1a; 例如&#xff1a;…

frida https抓包

web端导入证书、https代理即可解决大部分需求&#xff0c;但是&#xff0c;有些app需要处理ssl pinning验证。 废话不多说。frida处理ssl pin的步骤大体如下。 安装python3.x,并在python环境中安装frida&#xff1a; pip install frida pip install frida-tools下载frida-se…

C#,入门教程(22)——函数的基础知识

上一篇&#xff1a; C#&#xff0c;入门教程(21)——命名空间&#xff08;namespace&#xff09;与程序结构的基础知识https://blog.csdn.net/beijinghorn/article/details/124140653 一、函数的基本概念 一个软件的结构大体如下&#xff1a; 大厦application: a plaza { --…

分布式锁实现(mysql,以及redis)以及分布式的概念

道生一&#xff0c;一生二&#xff0c;二生三&#xff0c;三生万物 我旁边的一位老哥跟我说&#xff0c;你知道分布式是是用来干什么的嘛&#xff1f;一句话给我干懵了&#xff0c;我能隐含知道&#xff0c;大概是用来做分压处理的&#xff0c;并增加系统稳定性的。但是具体如…

最优传输学习及问题总结

文章目录 参考内容lam0.1lam3lam10lam50lam100lam300画图线性规划matlabpython代码 参考内容 https://blog.csdn.net/qq_41129489/article/details/128830589 https://zhuanlan.zhihu.com/p/542379144 我主要想强调的是这个例子的解法存在的一些细节问题 lam0.1 lam 0.1P,…

《WebKit 技术内幕》之五(3): HTML解释器和DOM 模型

3 DOM的事件机制 基于 WebKit 的浏览器事件处理过程&#xff1a;首先检测事件发生处的元素有无监听者&#xff0c;如果网页的相关节点注册了事件的监听者则浏览器会将事件派发给 WebKit 内核来处理。另外浏览器可能也需要处理这样的事件&#xff08;浏览器对于有些事件必须响应…

D - Left Right Operation

思路&#xff1a; 1、求前缀和 2、从后往前遍历&#xff0c;把某个后缀都变为R&#xff0c;记录最多让数组和减小多少 3、从前往后遍历&#xff0c;把某个前缀都变为L&#xff0c;记录最小答案&#xff08;前i个变为L&#xff0c;后面的n-i个数让减小最多的后缀变为R&#x…

项目管理十大知识领域之项目采购管理

一、项目采购管理的定义与概述 项目采购管理是指在项目实施过程中&#xff0c;对相关产品、服务或工程进行采购的管理活动。其概述包括确定采购需求、制定采购计划、供应商选择、合同签订、供应管理和结算支付等环节。项目采购管理的定义还涉及对采购目标的明确界定&#xff0…

[小程序]使用代码渲染页面

一、条件渲染 1.单个控制 使用wx:if"{{条件}}"来判断是否需要渲染这段代码&#xff0c;同时可以结合wx:elif和wx:else来判断 <view wx:if"{{type0}}">0</view> <view wx:elif"{{type1}}">1</view> <view wx:else>…

数字IC后端设计实现 | PR工具中到底应该如何控制density和congestion?(ICC2Innovus)

吾爱IC社区星友提问&#xff1a;请教星主和各位大佬&#xff0c;对于一个模块如果不加干预工具会让inst挤成一团&#xff0c;后面eco修时序就没有空间了。如果全都加instPadding会导致面积不够overlap&#xff0c;大家一般怎么处理这种问题&#xff1f; 在数字IC后端设计实现中…

C#中ArrayList运行机制及其涉及的装箱拆箱

C#中ArrayList运行机制及其涉及的装箱拆箱 1.1 基本用法1.1.1 属性1.1.2 方法 1.2 内部实现1.3 装箱1.4 拆箱1.5 object对象的相等性比较1.6 总结1.7 其他简单结构类 1.1 基本用法 命名空间&#xff1a; using System.Collections; 1.1.1 属性 Capacity&#xff1a;获取或设…

Barrel Shifter RTL Combinational Circuit

在本博客中&#xff0c;将围绕许多设计中存在的非常有用的电路&#xff08;桶形移位器电路&#xff09;设计电路。将从最简单的方法开始实现固定位宽字的单向旋转桶形移位器&#xff0c;最后设计一个具有可参数化字宽的多功能双向桶形移位器电路。 Barrel Shifter 桶形移位器…

【Python学习】Python学习22- CGI编程

目录 【Python学习】Python学习22- CGI编程 前言CGI工作流程Web 服务器支持及配置Http头部参考 文章所属专区 Python学习 前言 本章节主要说明Python的CGI接口 CGI 目前由 NCSA 维护&#xff0c;NCSA 定义 CGI 如下&#xff1a; CGI(Common Gateway Interface)&#xff0c;通…

机器学习没那么难,Azure AutoML帮你简单3步实现自动化模型训练

在Machine Learning 这个领域&#xff0c;通常训练一个业务模型的难点并不在于算法的选择&#xff0c;而在于前期的数据清理和特征工程这些纷繁复杂的工作&#xff0c;训练过程中的问题在于参数的反复迭代优化。 AutoML 是 Azure Databricks 的一项功能&#xff0c;它自动的对…

GRU门控循环单元神经网络的MATLAB实现(含源代码)

在深度学习领域&#xff0c;循环神经网络&#xff08;RNN&#xff09;因其在处理序列数据方面的卓越能力而受到广泛关注。GRU&#xff08;门控循环单元&#xff09;作为RNN的一种变体&#xff0c;以其在捕捉时间序列长距离依赖关系方面的高效性而备受推崇。在本文中&#xff0c…

ros2学习笔记-CLI工具,记录命令对应操作。

目录 环境变量turtlesim和rqt以初始状态打开rqt node启动节点查看节点列表查看节点更多信息命令行参数 --ros-args topic话题列表话题类型话题列表&#xff0c;附加话题类型根据类型查找话题名查看话题发布的数据查看话题的详细信息查看类型的详细信息给话题发布消息&#xff0…