AutoCAD中用vba的方式,怎样框取多条直线(或多段线)获取相交点坐标呢?

AutoCAD中用vba的方式,怎样框取多条直线(或多段线)获取相交点坐标呢?打算用do。。。loop循环,但苦于不知道每条线的名字,没办法循环啊。望高手解答。初学者。类... AutoCAD中用vba的方式,怎样框取多条直线(或多段线)获取相交点坐标呢?
打算用do。。。loop循环,但苦于不知道每条线的名字,没办法循环啊。望高手解答。初学者。
类似这样的,想框选白线,单选红线,求坐标
展开
 我来答
朱06CAD
2017-01-11 · 知道合伙人软件行家
朱06CAD
知道合伙人软件行家
采纳数:4172 获赞数:18068
高中,熟悉AutoCAD。会autolisp及VBA程序。

向TA提问 私信TA
展开全部

使用while函数来循环,下面是一个计算交点的autolisp代码:

(defun c:tes ( / &k1 &kw1 &ss1 &ss2 i x)
 (setvar "cmdecho" 0)
 (setvar "blipmode" 0)
 (if (null vlax-dump-object) (vl-load-com) )
 (princ "\n请选择曲线")
 (if (setq &kw1 (ssget '((0 . "*LINE,ARC,CIRCLE,ELLIPSE,HELIX"))))
  (progn
   (setq &ss1 '() i -1.0)
   (while (setq &k1 (ssname &kw1 (setq i (1+ i))))
    (setq &ss1 (cons &k1 &ss1));提取对象
   );while
   (while (and (setq &k1 (car &ss1)) (setq &ss1 (cdr &ss1)));计算这条曲线与其他对象的交点
    (setq &ss2 (apply 'append (vl-remove-if '(lambda (x) (= x nil))
    (mapcar '(lambda (x) (acet-geom-intersectwith &k1 x 0)) &ss1))))
    ;&ss2是计算得到的交点,没有交点的话是nil
   );while;2
  )
 )
 (princ)
)
更多追问追答
追问
能做成vb的吗?看不大明白lisp。
追答
不会VB,autolisp是cad专用。
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式