求怎么把C#生成的图元列表传递给LISP使用?
比如用C#生成了N个图元,怎么传递给LISP遍历使用?Bao_lai 发表于 2024-3-9 14:13
这样不知道为啥不行,也不会。
无论如何,返回值必须套ResultBuffer,
https://www.cnblogs.com/JJBox/p/11532752.html
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: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:12
public List GetEntNames(ResultBuffer args)
{ ...
这样不知道为啥不行,也不会。 你有种再说一遍 发表于 2024-3-9 18:30
无论如何,返回值必须套ResultBuffer,
https://www.cnblogs.com/JJBox/p/11532752.html
感谢惊佬,好像可以了。 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:32 编辑
Bao_lai2024-3-9 19:15
你发完帖子之后看一次帖子,有些地方坏掉了,第八行..还有多用卫语句if(不ok)return Bao_lai 发表于 2024-3-9 19:22
测试成功,非常感谢 你有种再说一遍 发表于 2024-3-9 19:30
你发完帖子之后看一次帖子,有些地方坏掉了,第八行..还有多用卫语句if(不ok)return
if (psr.Status != PromptStatus.OK)
{ return; }
//下面再写正常的操作
感谢惊佬指导,我理解是这样的意思么:先把不OK的情况给return掉,然后集中精力写OK的。
页:
[1]
2