tvmanalan 发表于 2022-7-5 17:01:33

AutoCAD错误。应用程序未

你好
 
 
我正在学习AutoCAD。执行时,应用程序不适用于以下代码错误“(vlax invoke ob1’intersectwith ob2 mod)”。如果有人支持这一点。
 
 
提前感谢
 
 
 
 
;隔离对象的程序
(定义集合之间的相交(ss1 ss2/id1 id2 ob1 ob2 rtn)
(VL-LOAD-COM)
(vl列表加载的vlx)
(setq id1 nil
id2无
ob1无
ob2无
rtn无
)
(重复(setq id1(sslength ss1))
(setq ob1(vlax ename->vla对象(ssname ss1(setq id1(1-id1)))
);重复
(重复(setq id2(sslength ss2))
(setq ob2(vlax ename->vla对象(ssname ss2(setq id2(1-id2)))
rtn(cons(交叉点ob1 ob2 acextendnone)rtn)
 
);重复
(应用'附加(反向rtn))
);德芬
;查找两个选择集之间交点的程序
(defun C:x\u intersets\u水平(/ss1 ss2)
(vl load com)
(vl列表加载的vlx)
(setq ss1 nil ss2 nil ss nil ent1 nil ssno nil pnt nil)
(if(和(setq ss1(ssget“l”))
(setq ss2(ssget“X”))
);和
(progn;和真实条件
(setq ent1(ssname ss1 0)
ss(ssdel ent1 ss2))
(如果(=ss nil)
(progn;(=ss nil)真实条件
(setq pnt nil)
(命令“setvar”users1“0”)
);progn(=ss nil)真实条件
(progn;(=ss nil)假条件
(setq ssno(sslength ss))
(setq pnt(集合ss1 ss之间的相交);找到交叉点
(如果(=pnt nil)
(progn;(=pnt nil)真实条件
(setq ss1 nil ss nil)
(命令“setvar”users1“0”)
);progn(=pnt nil)
(程序;错误条件
(setq编号0
否(长度pnt))
(setq ss1 nil ss nil)
(命令“setvar”“users1”否)
);progn(=pnt nil)假条件
 
);如果(=pnt nil)
 
);progn(=ss nil)假条件
 
); if(=ss nil)
 
); 程序和真实条件
); 如果
 
);德芬
 
;查找对象交点的程序
(取消交叉点(ob1 ob2 mod/lst rtn)
(vl load com)
(vl列表加载的vlx)
(setq lst nil
lst(vlax调用ob1’与ob2 mod相交)
);setq公司
(重复(/(长度lst)3)
(setq rtn(cons(列表(car lst)(cadr lst)(caddr lst))rtn)
lst(cdddr lst)
);setq公司
);重复
(反向rtn)
);德芬

Cad64 发表于 2022-7-5 17:41:07

我已将您的问题转移到Autolisp部分:http://www.cadtutor.net/forum/forumdisplay.php?21-AutoLISP Visual LISP amp DCL
 
有关过帐代码的信息,请参阅此线程:http://www.cadtutor.net/forum/showthread.php?9184-代码发布指南
 
您的其他重复线程已被删除。当你试图发布一个新帖子时,你收到一条消息,说你必须等待版主批准你的帖子,请不要忽视它,继续创建重复的帖子,因为在他们被审查之前,没有一个帖子会显示在论坛上。你只是在浪费时间,为我们创造更多的工作。请参见此处:http://www.cadtutor.net/forum/showthread.php?98709-后缓和&p=672702#后672702
 
谢谢大家,欢迎来到论坛。

Lee Mac 发表于 2022-7-5 17:56:03

首先,请注意,没有必要修改我的函数的代码-您应该使用所需的参数调用函数,并使用函数返回的值。此外,根据我声明的使用条款,如果您希望在代码中使用我的函数,您应该保留代码头。
 
您收到的错误是由于为ActiveX intersectwith方法提供了不支持此方法的对象。您应该将选择限制为仅包括支持此方法的对象,或者使用vlax-method-applicable-p检查该方法是否适用。

Lee Mac 发表于 2022-7-5 18:19:32

为此,我现在更新了LM:intersects函数,以在调用此方法之前验证ActiveX intersectwith方法在提供的两个vla对象上的适用性。因此,如果提供的任何一个对象不支持此方法,则函数现在将优雅地返回nil。
页: [1]
查看完整版本: AutoCAD错误。应用程序未