Dipesh Kalasari 发表于 2022-7-5 16:04:40

嵌套桥

你找到解决办法了吗?

BIGAL 发表于 2022-7-5 16:15:43

我认为你可以在两个物体EGDE上拖动一条线,然后做相隔5mm的平行线并自动修剪。
 
此刻什么都不会想。

BIGAL 发表于 2022-7-5 16:21:09

在两个对象内尝试此拾取。您可能需要注意选择两个具有正交等的点。
 

; Create two paralell lines between two objects
; by crossing objects
; By Alan H Sep 2017
(defun c:brid ( / pt1 pt2pt3 pt4 ss obj1 obj3 obj4)
(setq oldsnap (getvar "osmode"))
(setvar "osmode" 0)
(setq pt1 (getpoint "pick inside pt1"))
(while (/= (setq pt2 (getpoint pt1 "pick inside pt2")) nil)
(setq ss (ssget "f" (list pt1 pt2)))
(if (and (/= ss nil)(< 3 (sslength ss)))
(progn
(alert "do again more than two objects")(exit)
))
(setq obj1 (vlax-ename->vla-object (ssname ss 0)))
(setq obj2 (vlax-ename->vla-object (ssname ss 1)))
(command "line" pt1 pt2 "")
(setq obj3 (entlast))
(command "offset" 2.5 obj3 (polar pt1 (+ (/ pi 2.0)(angle pt1 pt2)) 5) "")
(setq obj4 (vlax-ename->vla-object (entlast)))
(setq pt3(vlax-invoke obj1 'intersectWith obj4 acExtendThisEntity))
(setq pt4(vlax-invoke obj2 'intersectWith obj4 acExtendThisEntity))
(vla-delete obj4)
(command "line" pt3 pt4 "")
(setq obj5 (entlast))
(command "offset" 2.5 obj3 (polar pt1 (+ (/ pi 2.0)(angle pt2 pt1)) 5) "")
(setq obj4 (vlax-ename->vla-object (entlast)))
(setq pt5(vlax-invoke obj1 'intersectWith obj4 acExtendThisEntity))
(setq pt6(vlax-invoke obj2 'intersectWith obj4 acExtendThisEntity))
(vla-delete obj4)
(command "line" pt5 pt6 "")
(setq obj6 (entlast))
(vla-delete (vlax-ename->vla-object obj3))
(command "trim" obj5 obj6 "" "f" pt1 pt2 "" "")
(setvar 'osmode oldsnap)
(setq pt1 pt2)
)
(princ)
)

Dipesh Kalasari 发表于 2022-7-5 16:28:41

谢谢你,比格尔。非常有用的代码。我会试着根据我的要求修改。检查附件,需要用两条线连接所有零件。非常乏味的工作。


BIGAL 发表于 2022-7-5 16:39:09

这与我认为你想要的不同,你应该提到激光切割,好的,你可以使用我所做的,只需使用我计算的点和正确的obj id在代码中添加2次中断。它需要一段时间,所以可以进行大量中断,模式的随机性使得很难以某种简单的方式添加连接,但也就是说,可能有人已经这样做了。连接的检查可以是使用一个大窗口进行Pedit和连接,并说更改颜色。
 
更改代码以匹配您发布的内容。

SLW210 发表于 2022-7-5 16:45:40

你在使用什么嵌套软件?

Dipesh Kalasari 发表于 2022-7-5 16:53:28

我们在autocad中手动嵌套,然后导入。OmniWin(MesserSoft)软件中的dwg文件,用于生成CNC代码。
本练习(零件到零件连接桥)的目的是减少数控机床的穿孔次数(连续切割,无引入/引出),以节省切割时间。
 
@比加尔
 
我得到了你的关注。可以通过在lisp末尾添加(命令“trim”“”“f”pt1 pt2”“”“)来完成中断。
参考图A是我们的要求,每个零件应该只有一个输入和一个输出。
图B,我的计划是手动添加行,如红色所示。因此,可以为每个零件识别pt1和pt2。我正在努力。

BIGAL 发表于 2022-7-5 16:58:51

ggservers是我更新的你想要的代码,很抱歉现在有两个人请求。
 
Dipesh我在考虑它,是的,做一个普林路径是一条路要走,这将需要一个大的重写,因为你需要在一个大循环中逐步通过线词和对象。我发布的代码将是一个很好的起点,使一些defuns循环工程。现在一个简单的修复方法是在中断后将pt2设置为pt1等,并请求新的pt2。这就像绘制pline一样,在while之前放置get pt1。
 
我再次更改了代码,使其工作方式类似于普林线选择其静态手册,但与您建议的方式相同。唯一的打嗝是一条两点线,有些形状你可能需要停下来重新开始。

SLW210 发表于 2022-7-5 17:04:44

为什么不买一个好的嵌套软件呢?原始线程是一个与您想要的完全不同的请求,因此我将使其成为一个单独的线程AutoLISP、Visual LISP和DCL>嵌套桥。
 
BIGAL,OP请求(ggservers)来自5年前。
页: [1]
查看完整版本: 嵌套桥