zoukankan      html  css  js  c++  java
  • 获取对象ObjectId

    Civil3D二次开发的API都是应用在DB对象上的,因此我们在plugin中一般都会需要得到所需要操作的DB对象。需要得到DB对象,我们需要首先得到它的ObjectId然后用Transaction打开得到。

    得到ObjectId有几种方法:

    (1) 通过名字或者Index从Civil3D API定义的集合中获得。例如,我们需要得到一个PointGroup的ObjectId,则可以从PointGroupCollection 获得,代码类似

    var civilDoc = CivilDocument.GetCivilDocument(db);

    var pgId = civilDoc.PointGroups["MyPointGroup"];

    或者

    var civilDoc = CivilDocument.GetCivilDocument(db);

    var pgId = civilDoc.PointGroups[0];

    (2) 通过UI交互,提示用户选择一个对象,例如

    var editor = Autodesk.AutoCAD.ApplicationServices.Application.DocumentManager.MdiActiveDocument.Editor;

    var result = editor.GetEntity("Select an alignment:");

    if (result.Status == PromptStatus.OK)

    {

    var alignId = result.ObjectId;

    }

    (3) 根据Handle值,直接获得ObjectId。例如我们知道需要操作哪个对象,那么可以首先选择这个对象,然后输入命令list,例如

    clip_image001

    代码如下:

    Handle hdl = new Handle(0x6580);

    var alignId = db.GetObjectId(false, hdl, 0);

  • 相关阅读:
    COGS 14. [网络流24题] 搭配飞行员
    洛谷 P3376 【模板】网络最大流
    洛谷 P2936 [USACO09JAN]全流Total Flow
    codevs 2038 香甜的黄油 USACO
    codevs 1993 草地排水 USACO
    Openjudge 2.5 6264:走出迷宫
    洛谷 P1744 采购特价商品
    HDU
    中国剩余定理
    bzoj2157: 旅游
  • 原文地址:https://www.cnblogs.com/civil3ddevelop/p/6649327.html
Copyright © 2011-2022 走看看