明经CAD社区

 找回密码
 注册

QQ登录

只需一步,快速开始

搜索
123
返回列表 发新帖
楼主: xuhawk

[运行时] C#能调用autolisp的程序么?

  [复制链接]
发表于 2015-10-9 14:16:16 | 显示全部楼层
大家好,如何使用lisp调用.net的命令(带参数)呢?
比如说.net中定义fuc1(int a,int b),函数返回值为c=a+b,
这样一个函数如何在autocad 2006中调用呢,LispDataType显示不存在此命名空间或类型
发表于 2015-12-18 17:50:30 | 显示全部楼层
雪山飞狐_lzh 发表于 2010-4-17 16:14
1、声明lsp函数
(defun c:lsptest1() 2)
注意,最好以命令方式声明即C:XXX

LispDataType
此处显示未知
发表于 2019-10-18 10:54:14 来自手机 | 显示全部楼层
提示无法找到名为acedinvoke 的入口点
发表于 2019-10-19 10:19:36 | 显示全部楼层
本帖最后由 brainstorm 于 2019-10-19 10:23 编辑

autocad 2011以后版本用Application.Invoke(),这样就可以用lisp函数vlax-ldata取得图元的ldata了

Lisp

(vl-acad-defun 'lsptest1)
(defun lsptest1        (str)
  (list str "this is a test" "open the door" "sucess!" )
)

C#        
public static void Test()
        {
            var db = HostApplicationServices.WorkingDatabase;
            var doc = Application.DocumentManager.GetDocument(db);
            var ed = doc.Editor;
            //ResultBuffer rb = new ResultBuffer();
            
            ResultBuffer rb1 = new ResultBuffer
            {
                new TypedValue((int)LispDataType.Text, "lsptest1"),
                new TypedValue((int)LispDataType.Text, "this is a test too")
            };
            try
            {
                //var rb = InvokeArx.CallLispFunction(rb1);
                var rb = Application.Invoke(rb1);

                ed.WriteMessage("\n now is exporting what u need:" + rb.ToString());
            }
            catch(Autodesk.AutoCAD.Runtime.Exception ex)
            {
                ed.WriteMessage(ex.Message);
            }

        }
发表于 2021-8-13 16:44:49 | 显示全部楼层
好东西,收藏六爪
发表于 2021-8-20 14:06:37 | 显示全部楼层
本帖最后由 guohq 于 2021-8-21 00:41 编辑

提前定义此函数
  1. (defun c:GetVariableValue(VarName)
  2.   (eval (read VarName))
  3.   )


就可以通过下面语句来获取Lisp变量的值了

  1. Application.Invoke(New ResultBuffer(New TypedValue(LispDataType.Text, "c:GetVariableValue"), New TypedValue(LispDataType.Text, Ed.GetString("变量名").StringResult)))


感兴趣的可以试试
发表于 2021-9-20 22:56:51 | 显示全部楼层
在c#代码里面try一下应该可以判断
发表于 2022-6-4 19:02:09 | 显示全部楼层
c# 调用lisp程序,好带吗
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|CAD论坛|CAD教程|CAD下载|联系我们|关于明经|明经通道 ( 粤ICP备05003914号 )  
©2000-2023 明经通道 版权所有 本站代码,在未取得本站及作者授权的情况下,不得用于商业用途

GMT+8, 2024-11-25 06:28 , Processed in 0.145707 second(s), 17 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表