绝情一剑 发表于 2024-3-9 09:53:17

求怎么把C#生成的图元列表传递给LISP使用?

比如用C#生成了N个图元,怎么传递给LISP遍历使用?

你有种再说一遍 发表于 2024-3-9 18:30:32

Bao_lai 发表于 2024-3-9 14:13
这样不知道为啥不行,也不会。

无论如何,返回值必须套ResultBuffer,
https://www.cnblogs.com/JJBox/p/11532752.html

Bao_lai 发表于 2024-3-9 14:12:00

      
      public List<ObjectId> GetEntNames(ResultBuffer args)
      {
            Document doc = Application.DocumentManager.MdiActiveDocument;
            Editor ed = doc.Editor;
            List<ObjectId> objectIds = new List<ObjectId>();

            PromptSelectionResult psr = ed.GetSelection();
            if (psr.Status == PromptStatus.OK)
            {
                SelectionSet sSet = psr.Value;
                objectIds= sSet.GetObjectIds().ToList();
                return objectIds;
            }
            else
            {
                return null;
            }
      }

Bao_lai 发表于 2024-3-9 19:15:07

本帖最后由 Bao_lai 于 2024-3-9 19:18 编辑



public ResultBuffer GetEntNames(ResultBuffer args=null)
{
Document doc = Application.DocumentManager.MdiActiveDocument;
Database db = doc.Database;
Editor ed = doc.Editor;

ResultBuffer rbrtn = new ResultBuffer();

PromptSelectionResult psr = ed.GetSelection();
if (psr.Status == PromptStatus.OK)
{
    SelectionSet sSet = psr.Value;
    int i = 0;
    TypedValue[] ty = new TypedValue;
    foreach (ObjectId id in sSet.GetObjectIds())
    {
      ty = new TypedValue((int)LispDataType.ObjectId, id);
      i++;
    }
    rbrtn = new ResultBuffer(ty);
    return rbrtn;
}
else
{
    return null;
}
}

Bao_lai 发表于 2024-3-9 14:13:27

Bao_lai 发表于 2024-3-9 14:12

      public List GetEntNames(ResultBuffer args)
      { ...

这样不知道为啥不行,也不会。

Bao_lai 发表于 2024-3-9 19:14:03

你有种再说一遍 发表于 2024-3-9 18:30
无论如何,返回值必须套ResultBuffer,
https://www.cnblogs.com/JJBox/p/11532752.html

感谢惊佬,好像可以了。

Bao_lai 发表于 2024-3-9 19:22:37

Bao_lai 发表于 2024-3-9 19:15



(defun C:TT()
(setq ents (GetEntNames))
(setq i 0)
(repeat (length ents)
    (vla-put-Color (vlax-ename->vla-object (nth i ents)) 1)
    (setq i (1+ i))
)
)


你有种再说一遍 发表于 2024-3-9 19:30:38

本帖最后由 你有种再说一遍 于 2024-3-9 19:32 编辑

Bao_lai2024-3-9 19:15

你发完帖子之后看一次帖子,有些地方坏掉了,第八行..还有多用卫语句if(不ok)return

绝情一剑 发表于 2024-3-9 20:27:47

Bao_lai 发表于 2024-3-9 19:22


测试成功,非常感谢

Bao_lai 发表于 2024-3-9 21:45:43

你有种再说一遍 发表于 2024-3-9 19:30
你发完帖子之后看一次帖子,有些地方坏掉了,第八行..还有多用卫语句if(不ok)return


if (psr.Status != PromptStatus.OK)
{ return; }
//下面再写正常的操作


感谢惊佬指导,我理解是这样的意思么:先把不OK的情况给return掉,然后集中精力写OK的。
页: [1] 2
查看完整版本: 求怎么把C#生成的图元列表传递给LISP使用?