世人皆醉 发表于 2024-1-29 16:17:30

如何判断曲线端点位置是否和其他对象重叠

本帖最后由 世人皆醉 于 2024-1-30 15:37 编辑

大家好!

   遇到一个这样的问题,选择两个图元(直线、多段线,圆弧)判断曲线的起点和端点中没有和其他对象重叠的那个点,然后将不重叠的点用线连接在一起,该如何实现呢?

补充:
可能是我描述的不够清楚,我最终的目的就是画一条直线,但是并不组成多段线,我想要程序实现的目的就是我选择两条线(弧线、直线、多段线(一段))
然后判断这两条线的起始点和终止点没有和其他图元产生相交、相接、干涉、碰撞的那个点,然后对这两条曲线筛选出来符合要求的点进行画直线连接

xyp1964 发表于 2024-1-29 16:17:31

本帖最后由 xyp1964 于 2024-1-31 18:58 编辑

;; 悬挂端连线




guosheyang 发表于 2024-1-29 20:26:24

;试试这个
(defun c:tt(/ I SS SS-SJD SS2)
(setq ss(ssget))
(setq ss-sjd(mapcar'cadr(cdr(last(ssnamex ss)))))
(initcommandversion)
(vl-cmdf "join" ss "")
(setq ss2(ssget "cp" ss-sjd))
(repeat(setq i(sslength ss2))
   (vla-put-Closed (vlax-ename->vla-object (ssname ss2 (setq i(1- i)))) :vlax-true)
)
(princ)
)

世人皆醉 发表于 2024-1-30 09:01:53

guosheyang 发表于 2024-1-29 20:26
;试试这个
(defun c:tt(/ I SS SS-SJD SS2)
(setq ss(ssget))




大佬,运行失败啊,错误提示这个

guosheyang 发表于 2024-1-30 12:00:42

本帖最后由 guosheyang 于 2024-1-30 12:07 编辑

前面加上这句 试试(vl-load-com)


(defun c:tt(/ I SS SS-SJD SS2)
(vl-load-com)
(setq ss(ssget))
(setq ss-sjd(mapcar'cadr(cdr(last(ssnamex ss)))))
(initcommandversion)
(vl-cmdf "join" ss "")
(setq ss2(ssget "cp" ss-sjd))
(repeat(setq i(sslength ss2))
   (vla-put-Closed (vlax-ename->vla-object (ssname ss2 (setq i(1- i)))) :vlax-true)
)
(princ)
)

世人皆醉 发表于 2024-1-30 12:54:27

guosheyang 发表于 2024-1-30 12:00
前面加上这句 试试(vl-load-com)




没用的,加上也没用和没加错误提示是一样的啊

guosheyang 发表于 2024-1-30 13:16:08

本帖最后由 guosheyang 于 2024-1-30 13:17 编辑

可能你的CAD按装的是精简版的看下这个介绍试下    https://www.jianshu.com/p/45fd574f3e70

世人皆醉 发表于 2024-1-30 13:56:17

guosheyang 发表于 2024-1-30 13:16
可能你的CAD按装的是精简版的看下这个介绍试下    https://www.jianshu.com/p/45fd574f3e70

装的不是精简版,2021版的,看了介绍但是没找到那个安装360的包

guosheyang 发表于 2024-1-30 14:05:11

世人皆醉 发表于 2024-1-30 13:56
装的不是精简版,2021版的,看了介绍但是没找到那个安装360的包

改为纯autolisp的试下
(defun c:tt(/ I SS SS-SJD SS2)
(setq ss(ssget))
(setq ss-sjd(mapcar'cadr(cdr(last(ssnamex ss)))))
(initcommandversion)
(command "join" ss "")
(setq ss2(ssget "cp" ss-sjd))
(repeat(setq i(sslength ss2))
(command "PEDIT" (ssname ss2 (setq i(1- i))) "C" "")
)
(princ)
)

世人皆醉 发表于 2024-1-30 14:19:08

guosheyang 发表于 2024-1-30 14:05
改为纯autolisp的试下
(defun c:tt(/ I SS SS-SJD SS2)
(setq ss(ssget))


最后一步好像有问题,中断了
页: [1] 2 3
查看完整版本: 如何判断曲线端点位置是否和其他对象重叠