永发信息网

如何在vba中获取AUTOCAD cal 命令的返回值?

答案:2  悬赏:50  手机版
解决时间 2021-03-04 15:07
我在VBA中通过sendCommand向AutoCAD发送了如下命令
ThisDrawing.SendCommand "cal ilp([1,1,1],[1,2,1],[1,1,0],[2,2,0],[1,1,2])" & vbCr

求空间直线[1,1,1],[1,2,1]与空间平面[1,1,0],[2,2,0],[1,1,2]的交点坐标,想在VBA中获取该坐标,应该如何实现呢??也就是说,利用vba调用autoCAD的CAL后,得到的结果可否返回到VBA中?如何实现呢?
最佳答案
用function:
Public Function GetLispSym(symbolName As String) As Variant
'Retrieves a variable from ACAD (LISP)
Dim VL As Object
Set VL = AcadApplication.GetInterfaceObject("VL.Application.16")

With VL.ActiveDocument.functions
GetLispSym = .Item("eval").funcall(.Item("read").funcall(symbolName))
End With

End Function

调用的时候注意,每次只能返回一个value(不能是list)
比如,p1是AutoCAD command line返回值(显示为(0,1,2)),那么先用car指针返回p1 list里面的第一个值作为x :
ThisDrawing.SendCommand ("(setq x (car p1))" & vbCr)
Dim Variable1 As Variant
Variable1 = GetLispSym("x")
'Variable1就等于p1里的第一个值了(=0)

至于p1的第二(=1)、三(=2)个值,用cdr和car重复上面sendcommand的语句,终归能倒腾出来后面两个值来。方法很笨,我也不会lisp语句,凑合吧。我用中英文搜了好久都没能找到满意的答案,还望高手指点!
全部回答
搜一下:如何在vba中获取AUTOCAD cal 命令的返回值?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
荆门市掇刀区劳动保障监察局地址有知道的么?
英雄联盟中单哪个法师能打过皎月女神?我觉得
《邓稼先》一课中作者插叙写出中国男儿歌 起
宁安市第二人民医院-内一怎么去啊,有知道地
对不同的物体做功假如不同质量的物体受相等的
家用隐形监控摄像头忘记密码怎么办
为什么有时会感觉身边发生的一切似曾相识,会
法院判决后,保险公司赔偿金已经支付给法院,
怎样帮助2岁3个月宝宝消除积食啊
中国银行业监督管理委员会丽水监管分局松阳办
英雄联盟之最强穿越杨爵的女人都有谁
沙头新村六十二街在哪里啊,我有事要去这个地
【贝克曼梁法】贝克曼梁法测定弯沉值百分表读
离婚后每年给对方抚养费给孩子的,没留证据,
六合雅居装饰怎么去啊,有知道地址的么
推荐资讯
女朋友生气了不理我是因为我喝醉了怎办还因我
UC浏览器打开电脑版网页自动转手机版咋回事/
求一部日本动漫名字:女主角是金黄色短发,头
北京西山有座翠微山,山上有座佛牙塔。相传释
用《开学前的夜晚》写一篇作文(要有人的对话)
地瓜干发霉了再蒸一下
某人借款5000元,如果月利率为9%。借款期限仅
滴滴司机与乘客距离很近为什么抢不到单
荣记早餐店地址有知道的么?有点事想过去
新妆宜面,打一动物
有人光一个夜班打码兔就40万数据,请问打码兔
银行卡按照发行对象不同所进行的分类有()。
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?