jaredlauer 发表于 2022-7-6 23:39:31

帮助为Wiri创建宏

我想创建一个宏,当两条导线相互交叉时,可以创建交叉。
 
基本上,它将扭转这一局面:
 
|
|
----|-----
|
|
 
进入这个
 
|
|
----(----
|
|
 
我一直在做的方法是绘制和放置弧,然后断开垂直线,将两部分连接到弧的端点。每次画图我都要做几十次,如果能有一个功能帮我做这件事就好了。
 
 
任何帮助都将不胜感激。
 
谢谢

ReMark 发表于 2022-7-7 00:02:21

接线示意图。您是否考虑过转到AutoCAD Electrical?ACADE具有内置的“跳线”功能。
 
一种可能的选择是将跳投块与李·麦克的自定义lisp例程“自动断块”结合使用。请看这里的例程描述。。。
 
http://lee-mac.com/autoblockbreak.html

BIGAL 发表于 2022-7-7 00:22:00

作为lisp拾取线1,拾取线2,使用inters获得交叉点,打断线并添加弧,也可能重新连接为pline。在这里搜索换行符,非常确定有人在间隙中添加了一行。

YZ 发表于 2022-7-7 00:33:48

你可以用宏来加速。它不会像AutoCAD Electrical内置的那样自动化,也不会像BIGAL的lisp建议那样智能。
 
但是,如果您分解这些步骤,它们都可以写入单个宏。
 
你先画弧?每次都一样吗?你能把它做成块吗?
 
如果将圆弧直接放置在直线上,然后修剪直线,会怎么样?(与断开线,然后放置弧以匹配相反)。
 
最后,两条交叉线之间是否有交点捕捉点?(他们在同一架飞机上吗?)
 
如果你对以上三个问题的回答是肯定的,那么我认为你可以编写一个宏,在一次选择中实现这一点。

BIGAL 发表于 2022-7-7 00:48:06

试试这个
 

(defun C:arcbrk ( / st1 st2 end1 end2 obj1 obj2)
; rad is 20.0 1/2 rad is 10 below
; By BIGAL NOV 2014
(setvar "osmode" 0)
(setq obj1 (entget (car (entsel "\npick 1st line"))))
(setq st1 (list (nth 1 (assoc 10 obj1))(nth 2 (assoc 10 obj1)) ))
(setq end1 (list (nth 1 (assoc 11 obj1))(nth 2 (assoc 11 obj1)) ))
(setq ang1 (angle st1 end1))
(setq obj2 (entget (Car (entsel "\npick 2nd line"))))
(setq st2 (list (nth 1 (assoc 10 obj2))(nth 2 (assoc 10 obj2)) ))
(setq end2 (list (nth 1 (assoc 11 obj2))(nth 2 (assoc 11 obj2)) ))
(setq ang2 (angle st2 end2))
(setq halfang (/ (+ ang1 ang2) 2.0))
(setq pt3 (inters st1 end1 st2 end2))
(command "circle" pt3 20.0)
(setq obj3 (entlast))
(setq pt4 (polar pt3 ang1 25.0))
(command "trim" pt4 "" (entlast) "")
(setq pt4 (polar pt3 ang1 5.0))
(command "trim" (entlast) ""pt4 "")
)
页: [1]
查看完整版本: 帮助为Wiri创建宏