08. MicroStation Python:创建线元素


欢迎来到MicroStation Python世界!本文将指导您使用Python在MicroStation中创建线元素(Line Element)。

用Python在MicroStation中创建一条线

让我们深入探讨如何创建一个线元素程序。请参阅Python管理器文章以创建和加载Python项目。将项目命名为LineElement.py,并将其保存到您的任意一个文件夹下。在编辑器中打开项目以编写Python脚本。

导入模块

该脚本首先导入几个模块,这些模块提供了与MicroStation交互和创建几何元素的函数和类。

from MSPyBentley import *
from MSPyBentleyGeom import *
from MSPyECObjects import *
from MSPyDgnPlatform import *
from MSPyDgnView import *
from MSPyMstnPlatform import *

函数

该脚本的主函数是createLine()。

def createLine():
    ...

让我们分解一下它的步骤:

1.  Active Model(当前模型)

MicroStation可以访问许多模型。以下脚本从当前启动的MicroStation中获取当前模型的引用。

   ACTIVEMODEL = ISessionMgr.ActiveDgnModelRef
   if ACTIVEMODEL is None:
       return False

2.  获取每个存储的分辨率单位(UOR)

以下脚本获取每个存储单元的UOR系数(双精度值类型)

   dgnModel = ACTIVEMODEL.GetDgnModel()
   modelInfo = dgnModel.GetModelInfo()
   mu = modelInfo.GetUorPerStorage()

3.  处理线元素

为MSElement设置一个可写的“句柄”。 

   line_eeh = EditElementHandle() 

4.  定义线坐标

我们使用DPoint3d对象定义线元素的起点和终点坐标。可以修改这些值以创建不同长度和方向的线。
使用上面定义的起点和终点创建一个DSegment3d对象。它表示实际的一条线段。

    startPoint = DPoint3d(0, 0, 0)
    endPoint   = DPoint3d(5 * mu, 5 * mu, 0)

    seg = DSegment3d(startPoint, endPoint)

5.  创建线元素

线元素是使用LineHandler.CreateLineElement()函数创建的。此函数接受多个参数,包括线元素句柄、构成起点和终点坐标的线段以及应添加线元素的模型。
该脚本包括错误检查,以确保成功创建线元素。

     status = LineHandler.CreateLineElement(line_eeh, None, seg, ACTIVEMODEL.Is3d(), ACTIVEMODEL)
     if BentleyStatus.eSUCCESS != status:
         return False

6.  将线元素添加到模型中

新创建的线元素将添加到模型中。
该脚本包括错误检查,以确保线元素成功添加到模型中。

    if BentleyStatus.eSUCCESS != line_eeh.AddToModel():
	    return False 

将以上代码放在一起:main()函数

main()函数只是调用createLine()函数并检查其返回值。如果线元素创建失败,将打印错误消息。
以下是完整的脚本。

from MSPyBentley import *
from MSPyBentleyGeom import *
from MSPyECObjects import *
from MSPyDgnPlatform import *
from MSPyDgnView import *
from MSPyMstnPlatform import *

# 创建线元素函数
def createLine():
    # 当前模型的引用
    ACTIVEMODEL = ISessionMgr.ActiveDgnModelRef
    if ACTIVEMODEL is None:
        return False
	
    # DGN模型的主单位
    dgnModel = ACTIVEMODEL.GetDgnModel()
    modelInfo = dgnModel.GetModelInfo()
    mu = modelInfo.GetUorPerStorage()

    # 处理线元素
    line_eeh = EditElementHandle()

    # 设置线坐标
    startPoint = DPoint3d(0, 0, 0)
    endPoint   = DPoint3d(5 * mu, 5 * mu, 0)

    # 线段
    seg = DSegment3d(startPoint, endPoint)
        
    # 创建线元素
    status = LineHandler.CreateLineElement(line_eeh, None, seg, 
                                            ACTIVEMODEL.Is3d(), 
		                            ACTIVEMODEL)
    if BentleyStatus.eSUCCESS != status:
        return False
        
    # 将线元素添加到模型中
    if BentleyStatus.eSUCCESS != line_eeh.AddToModel():
	    return False
    return True

# main函数
def main():
    if True != createLine():
        print("Could not create a Line element")

    PyCadInputQueue.SendKeyin("FIT VIEW EXTENDED")

if __name__ == "__main__":
	main()
运行/执行项目

从Python管理器对话框中选择项目LineElement.py并运行/执行Python脚本。
瞧!应在MicroStation当前模型中创建具有指定起点和终点的线元素。

image

通过探索提供的示例,扩展上述代码以设置线元素的属性(线符)层、颜色、线宽和线型。
编码愉快!